Die Funktion PLACES_COUNT_PER_TYPE_V2 gibt eine BigQuery-Tabelle mit der Anzahl der Orte und Beispiel-Orts-IDs zurück, aufgeschlüsselt nach Ortstyp, für mehrere Eingabegeografien. Diese Funktion ist für die effiziente Batchverarbeitung konzipiert und akzeptiert einen Eingabetabellenparameter mit geografischen Einheiten. Sie geben die geografischen Einheiten über eine Eingabetabelle an und legen die Ortstypen als Array fest.
Syntax
SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_TYPE_V2`( TABLE input_geographies, target_types, filters )
Parameter
PROJECT_NAMEist der Name Ihres Google Cloud-Projekts.LINKED_DATASET_NAME: Der Name des BigQuery-Datasets, das die Places Insights-Funktionen enthält (z.B.places_insights___us).input_geographies: Eine BigQuery-Tabelle mit den zu analysierenden geografischen Einheiten. Diese Tabelle muss die folgenden Spalten enthalten:target_types(ARRAY<STRING>): Ein Array von Strings für Ortstypen, für die Sie die Anzahl abrufen möchten. Orte werden gezählt, wenn sie mit einem der im Arraytypesaufgeführten Typen übereinstimmen, nicht nur mit demprimary_type.filters(JSON): Ein JSON-Objekt mit Schlüssel/Wert-Paaren für die zusätzliche Filterung der Orte. Siehe Filterparameter.
Schema der Ausgabetabelle
Die Funktion PLACES_COUNT_PER_TYPE_V2 gibt eine Tabelle mit den folgenden Spalten zurück:
| Spaltenname | Datentyp | Beschreibung |
|---|---|---|
geo_id |
STRING | Die eindeutige Kennung für die Eingabegeografie aus der Tabelle input_geographies. |
input_geography |
GEOGRAPHY | Das ursprüngliche GEOGRAPHY-Objekt aus der Tabelle input_geographies. |
place_type |
STRING | Der Ortstyp aus dem target_types-Array, den diese Zeile darstellt. |
place_count |
INTEGER | Die Anzahl der Orte, die mit dem place_type und anderen Filtern innerhalb oder in der Nähe des geografischen Gebiets übereinstimmen. |
sample_place_ids |
ARRAY<STRING> | Ein Array mit bis zu 250 Orts-IDs, die den Kriterien für diesen Typ und diese Region entsprechen. |
Die Ausgabe enthält eine Zeile für jede Kombination aus geo_id und place_type, die im Array target_types angegeben ist, auch wenn die Anzahl null ist.
Funktionsweise
Die Funktion verarbeitet jede geografische Einheit, die in der Tabelle input_geographies angegeben ist.
Für jede Region werden Orte gezählt, die einem der im Array target_types aufgeführten Typen entsprechen und alle Bedingungen im JSON-Objekt filters erfüllen. Die Ergebnisse werden aggregiert und nach jedem geo_id und jedem Typ in target_types aufgeschlüsselt.
Beispiel: Verschiedene Arten von Restaurants in den Bezirken von New York City zählen
In diesem Beispiel wird eine Tabelle mit der Anzahl der Typen „restaurant“, „cafe“ und „bar“ für drei Bezirke in New York City generiert.
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'] ) );
Das Ergebnis ist eine Tabelle mit 9 Zeilen (3 Bezirke * 3 Typen). In jeder Zeile wird die Anzahl der „Restaurants“, „Cafés“ oder „Bars“ in jedem Bezirk angezeigt. Sie können auch Beispiel-Orts-IDs angeben, wenn Sie sie Ihrer SELECT-Anweisung hinzufügen.

Vorteile von PLACES_COUNT_PER_TYPE_V2
PLACES_COUNT_PER_TYPE_V2 bietet mehrere wichtige Vorteile, insbesondere im Vergleich zur älteren PLACES_COUNT_PER_TYPE-Funktion:
- Batchverarbeitung von Regionen:Im Gegensatz zu
PLACES_COUNT_PER_TYPE, wo jeweils eine Region verarbeitet wird, akzeptiertPLACES_COUNT_PER_TYPE_V2eineTABLEvon Eingaberegionen. So können Sie typspezifische Zählungen für zahlreiche Regionen (Punkte, Polygone) in einer einzigen Abfrage analysieren und abrufen, anstatt mehrere Funktionsaufrufe auszuführen. - Verbesserte Leistung und Skalierbarkeit: Durch die Verwendung einer Tabelle als Eingabe kann
PLACES_COUNT_PER_TYPE_V2die optimierten räumlichen Joins und die parallelen Verarbeitungsfunktionen von BigQuery für alle bereitgestellten Geografien gleichzeitig nutzen. Das führt zu erheblichen Leistungsverbesserungen und einer besseren Skalierbarkeit bei einer großen Anzahl von Regionen. - Nullwerte enthalten: Gibt Zeilen mit 0 Werten für Typen zurück, die in einem bestimmten Bereich innerhalb des Batches nicht gefunden wurden. So wird ein vollständiger Ergebnissatz für alle Typ-Geografie-Kombinationen sichergestellt.
- Verlaufs-Snapshots:Mit dem optionalen Filter
snapshot_datekönnen Sie Daten zur Anzahl der Orte aus einem bestimmten Monat abfragen.
Beispiel: Historische POI-Anzahl nach Typ mit bestimmten Filtern abfragen
In diesem Beispiel wird gezeigt, wie Sie mit dem Parameter snapshot_date die Anzahl bestimmter Ortstypen wie Ladestationen für Elektrofahrzeuge für einen vergangenen Monat abrufen. Es werden zusätzliche Filter für regular_opening_hours angewendet, um nur Orte zu finden, die am Wochenende den ganzen Tag geöffnet sind, und die Verfügbarkeit von Ladestationen für Elektrofahrzeuge (mindestens 10 Anschlüsse verfügbar), die durch min_ev_charge_connector_count angegeben werden.
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')] ) ) );