La fonction PLACES_COUNT_PER_TYPE_V2 renvoie une table BigQuery contenant le nombre de lieux et des exemples d'ID de lieu, répartis par type de lieu, pour plusieurs zones géographiques d'entrée. Cette fonction est conçue pour un traitement par lot efficace en acceptant un paramètre de table d'entrée de zones géographiques. Vous fournissez les zones géographiques via une table d'entrée et spécifiez les types de lieux sous forme de tableau.
Syntaxe
SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_TYPE_V2`( TABLE input_geographies, target_types, filters )
Paramètres
PROJECT_NAME: le nom de votre projet Google CloudLINKED_DATASET_NAME: nom de l'ensemble de données BigQuery contenant les fonctions Places Insights (par exemple,places_insights___us).input_geographies: table BigQuery contenant les zones géographiques à analyser. Cette table doit inclure les colonnes suivantes :target_types(ARRAY<STRING>) : tableau de chaînes de types de lieux pour lesquelles vous souhaitez obtenir le nombre d'occurrences. Les lieux seront comptabilisés s'ils correspondent à l'un des types listés dans leur tableautypes, et pas seulement àprimary_type.filters(JSON) : objet JSON contenant des paires clé/valeur pour un filtrage supplémentaire des lieux. Consultez Paramètres de filtre.
Schéma de la table de sortie
La fonction PLACES_COUNT_PER_TYPE_V2 renvoie une table avec les colonnes suivantes :
| Nom de la colonne | Type de données | Description |
|---|---|---|
geo_id |
STRING | Identifiant unique de la zone géographique d'entrée, issu de la table input_geographies. |
input_geography |
GEOGRAPHY | Objet GEOGRAPHY d'origine de la table input_geographies. |
place_type |
STRING | Type de lieu du tableau target_types que cette ligne représente. |
place_count |
INTEGER | Nombre de lieux correspondant à place_type et à d'autres filtres dans la zone géographique ou à proximité. |
sample_place_ids |
ARRAY<STRING> | Tableau contenant jusqu'à 250 ID de lieu correspondant aux critères de ce type et de cette zone géographique. |
La sortie contiendra une ligne pour chaque combinaison de geo_id et place_type spécifiée dans le tableau target_types, même si le nombre est égal à zéro.
Fonctionnement
La fonction traite chaque zone géographique fournie dans la table input_geographies.
Pour chaque zone géographique, il compte les lieux qui correspondent à l'un des types listés dans le tableau target_types et qui remplissent également toutes les conditions de l'objet JSON filters. Les résultats sont agrégés et répartis par geo_id et par type dans target_types.
Exemple : Compter les différents types de restaurants dans les comtés de New York
Cet exemple génère un tableau des nombres pour les types "restaurant", "cafe" et "bar" dans trois comtés de New York.
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'] ) );
Le résultat sera un tableau de 9 lignes (3 comtés * 3 types). Chaque ligne affiche le nombre d'établissements de type "restaurant", "café" ou "bar" dans chaque comté. Vous pouvez également inclure des exemples d'ID de lieu si vous les ajoutez à votre instruction SELECT.

Avantages de l'utilisation de PLACES_COUNT_PER_TYPE_V2
PLACES_COUNT_PER_TYPE_V2 offre plusieurs avantages clés, en particulier par rapport à l'ancienne fonction PLACES_COUNT_PER_TYPE :
- Traitement par lot des zones géographiques : contrairement à
PLACES_COUNT_PER_TYPE, qui traite une zone géographique à la fois,PLACES_COUNT_PER_TYPE_V2accepte unTABLEde zones géographiques d'entrée. Cela vous permet d'analyser et d'obtenir des décomptes spécifiques à un type dans de nombreuses zones géographiques (points, polygones) en une seule requête, au lieu d'effectuer plusieurs appels de fonction. - Amélioration des performances et de l'évolutivité : en utilisant une entrée de table,
PLACES_COUNT_PER_TYPE_V2peut exploiter les jointures géospatiales optimisées de BigQuery et les capacités de traitement parallèle sur toutes les zones géographiques fournies simultanément. Cela améliore considérablement les performances et l'évolutivité lorsque vous traitez un grand nombre de zones géographiques. - Nombre de zéros inclus : renvoie les lignes avec un nombre de zéros pour les types non trouvés dans une zone spécifique du lot, ce qui garantit un ensemble de résultats complet pour toutes les combinaisons de types et de zones géographiques.
- Instantanés historiques : interrogez les données sur le nombre de lieux pour un mois spécifique à l'aide du filtre facultatif
snapshot_date.
Exemple : Interroger le nombre de POI historiques par type avec des filtres spécifiques
Cet exemple montre comment trouver le nombre de types de lieux spécifiques, tels que les bornes de recharge VE, à l'aide du paramètre snapshot_date pour récupérer les nombres d'un mois précédent. Il applique des filtres supplémentaires pour regular_opening_hours afin de ne rechercher que les lieux ouverts toute la journée le week-end, et la disponibilité des bornes de recharge pour véhicules électriques (au moins 10 connecteurs disponibles) spécifiée par 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')] ) ) );