Funkcja PLACES_COUNT_PER_TYPE_V2 zwraca tabelę BigQuery zawierającą liczbę miejsc i przykładowe identyfikatory miejsc, podzielone według typu miejsca, dla wielu danych wejściowych dotyczących lokalizacji geograficznych. Ta funkcja została zaprojektowana z myślą o wydajnym przetwarzaniu wsadowym, ponieważ akceptuje parametr tabeli wejściowej z obszarami geograficznymi. Regiony geograficzne podajesz w tabeli wejściowej, a typy miejsc określasz jako tablicę.
Składnia
SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_TYPE_V2`( TABLE input_geographies, target_types, filters )
Parametry
PROJECT_NAME: nazwa Twojego projektu Google Cloud.LINKED_DATASET_NAME: nazwa zbioru danych BigQuery zawierającego funkcje Statystyk miejsc (np.places_insights___us).input_geographies: tabela BigQuery zawierająca regiony do przeanalizowania. Tabela musi zawierać te kolumny:target_types(ARRAY<STRING>): tablica ciągów znaków typów miejsc, dla których chcesz uzyskać liczbę. Miejsca będą liczone, jeśli pasują do dowolnego typu wymienionego w tablicytypes, a nie tylko doprimary_type.filters(JSON): obiekt JSON zawierający pary klucz-wartość do dodatkowego filtrowania miejsc. Zobacz Parametry filtra.
Schemat tabeli wyjściowej
Funkcja PLACES_COUNT_PER_TYPE_V2 zwraca tabelę z tymi kolumnami:
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
geo_id |
STRING | Unikalny identyfikator danych wejściowych dotyczących regionu geograficznego z tabeli input_geographies. |
input_geography |
GEOGRAPHY | Pierwotny obiekt GEOGRAPHY z tabeli input_geographies. |
place_type |
STRING | Typ miejsca z tablicy target_types, który reprezentuje ten wiersz. |
place_count |
INTEGER | Liczba miejsc pasujących do place_type i innych filtrów w obrębie danego obszaru geograficznego lub w jego pobliżu. |
sample_place_ids |
ARRAY<STRING> | Tablica zawierająca maksymalnie 250 identyfikatorów miejsc, które spełniają kryteria dla tego typu i obszaru geograficznego. |
Dane wyjściowe będą zawierać wiersz dla każdej kombinacji geo_id i place_type określonej w tablicy target_types, nawet jeśli liczba wynosi 0.
Jak to działa
Funkcja przetwarza każdy region podany w tabeli input_geographies.
W przypadku każdego obszaru geograficznego zlicza miejsca, które pasują do dowolnego typu wymienionego w tablicy target_types i spełniają wszystkie warunki w obiekcie JSON filters. Wyniki są agregowane i dzielone według każdego elementu geo_id i każdego typu w: target_types.
Przykład: zliczanie różnych typów lokali gastronomicznych w hrabstwach Nowego Jorku
Ten przykład generuje tabelę z liczbą miejsc typu „restauracja”, „kawiarnia” i „bar” w 3 hrabstwach Nowego Jorku.
SELECT geo_id, input_geography, place_type, place_count FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_TYPE_V2`( ( SELECT county_name AS geo_id, ST_SIMPLIFY(county_geom, 100) AS geo FROM `bigquery-public-data.geo_us_boundaries.counties` WHERE state_fips_code = "36" -- New York State AND county_name IN ("Queens", "Kings", "New York") ), ['restaurant', 'cafe', 'bar'], -- target_types JSON_OBJECT( 'business_status', ['OPERATIONAL'] ) );
W efekcie powstanie tabela z 9 wierszami (3 hrabstwa * 3 typy). Każdy wiersz będzie zawierać liczbę restauracji, kawiarni lub barów w każdym hrabstwie. Możesz też uwzględnić przykładowe identyfikatory miejsc, jeśli dodasz je do instrukcji SELECT.

Korzyści z używania PLACES_COUNT_PER_TYPE_V2
Funkcja PLACES_COUNT_PER_TYPE_V2 ma kilka kluczowych zalet, zwłaszcza w porównaniu ze starszą funkcją PLACES_COUNT_PER_TYPE:
- Przetwarzanie wsadowe obszarów geograficznych: w odróżnieniu od
PLACES_COUNT_PER_TYPE, który przetwarza po jednym obszarze geograficznym,PLACES_COUNT_PER_TYPE_V2akceptujeTABLEwejściowych obszarów geograficznych. Dzięki temu możesz analizować i uzyskiwać liczby dotyczące konkretnych typów w wielu lokalizacjach geograficznych (punkty, wielokąty) w ramach jednego zapytania, zamiast wykonywać wiele wywołań funkcji. - Zwiększona wydajność i skalowalność: dzięki tabeli wejściowej
PLACES_COUNT_PER_TYPE_V2może korzystać ze zoptymalizowanych połączeń geoprzestrzennych BigQuery i możliwości przetwarzania równoległego we wszystkich podanych lokalizacjach geograficznych jednocześnie. Zapewnia to znaczny wzrost wydajności i lepszą skalowalność w przypadku dużej liczby lokalizacji geograficznych. - Uwzględnij zerowe liczby: zwraca wiersze z zerowymi liczbami dla typów, które nie zostały znalezione w określonym obszarze w ramach zbioru, co zapewnia pełny zestaw wyników dla wszystkich kombinacji typów i lokalizacji geograficznych.
- Migawki historyczne: zapytanie o liczbę miejsc z konkretnego miesiąca przy użyciu opcjonalnego filtra
snapshot_date.
Przykład: zapytanie o historyczną liczbę ważnych miejsc według typu z określonymi filtrami
Ten przykład pokazuje, jak znaleźć liczbę miejsc określonego typu, np. stacji ładowania EV, za pomocą parametru snapshot_date, aby uzyskać liczbę miejsc z poprzedniego miesiąca. Stosuje dodatkowe filtry dla regular_opening_hours, aby wyszukiwać tylko miejsca otwarte przez cały dzień w weekend i dostępność ładowania EV (co najmniej 10 dostępnych złączy) określone przez min_ev_charge_connector_count.
SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_TYPE_V2`( ( SELECT county_name AS geo_id, ST_SIMPLIFY(county_geom, 100) AS geo FROM `bigquery-public-data.geo_us_boundaries.counties` WHERE state_fips_code = "36" -- New York State AND county_name IN ("Queens", "Kings", "New York") ), ['electric_vehicle_charging_station'], -- target_types array JSON_OBJECT( 'geography_radius', 10000, 'snapshot_date', '2026-01', -- Target snapshot month (YYYY-MM) 'min_ev_charge_connector_count', 10, -- Look for a min amount of chargers 'regular_opening_hours', JSON_OBJECT( 'saturday', [JSON_OBJECT('start_time', '00:00', 'end_time', '23:59')], 'sunday', [JSON_OBJECT('start_time', '00:00', 'end_time', '23:59')] ) ) );