La fonction PLACES_COUNT
renvoie une seule valeur de nombre de lieux en fonction de la zone de recherche et des filtres de recherche spécifiés. Vous devez spécifier la zone de recherche dans la fonction PLACES_COUNT
et pouvez éventuellement spécifier des paramètres de filtre supplémentaires, tels que le type de lieu, l'état de fonctionnement, la tranche de prix, etc.
Étant donné que la fonction PLACES_COUNT
renvoie une seule valeur, appelez-la à l'aide d'une clause SELECT
.
Paramètres d'entrée :
Obligatoire : le paramètre de filtre
geography
qui spécifie la zone de recherche. Le paramètregeography
accepte une valeur définie par le type de données BigQueryGEOGRAPHY
, qui est compatible avec les points, les chaînes linéaires et les polygones.Facultatif : paramètres de filtre supplémentaires pour affiner votre recherche.
Renvoie :
- Une seule valeur
count
sous forme deINT64
.
- Une seule valeur
Exemple : Calculer le nombre de lieux dans un rayon de recherche
L'appel de fonction PLACES_COUNT
le plus simple renvoie un seul nombre de lieux dans une zone géographique. Dans cet exemple, vous renvoyez le nombre de lieux opérationnels situés à moins de 1 000 mètres de l'Empire State Building.
Cet exemple utilise la fonction BigQuery ST_GEOGPOINT
pour renvoyer une valeur GEOGRAPHY
à partir d'un point.
SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building 'geography_radius', 1000 -- Radius in meters ) ) as count;
La réponse contient un seul décompte :
Un appel plus typique applique des filtres à la zone de recherche. L'exemple suivant utilise des filtres pour limiter la recherche et ne renvoyer qu'un nombre :
- Lieux de type
restaurant
avec une note minimale de 3 - un niveau de prix "bon marché" ou "moyen" ;
- Actuellement opérationnel
- Accepte les chiens
SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building 'geography_radius', 1000, -- Radius in meters 'types', ["restaurant"], 'min_rating', 3, 'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'], 'business_status', ['OPERATIONAL'], 'allows_dogs', TRUE ) ) as count;
Réponse filtrée :
N'oubliez pas que les requêtes sur les ensembles de données de lieux appliquent un seuil minimal de 5 comptes. L'un des avantages des fonctions de nombre de lieux est qu'elles peuvent renvoyer n'importe quel nombre, y compris 0. Par exemple, l'appel suivant renvoie un nombre de 1 :
SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building 'geography_radius', 500, -- Radius in meters 'types', ["restaurant"], 'min_rating', 4.0, 'free_parking_lot', TRUE, 'good_for_watching_sports', TRUE ) ) as count;
Exemple : Calculer le nombre de restaurants à l'aide d'un polygone
Vous pouvez utiliser un polygone pour spécifier la zone de recherche. Lorsque vous utilisez un polygone, ses points doivent définir une boucle fermée, c'est-à-dire que le premier point du polygone doit être identique au dernier.
Cet exemple utilise la fonction BigQuery ST_GEOGFROMTEXT
pour renvoyer une valeur GEOGRAPHY
à partir d'un polygone.
DECLARE geo GEOGRAPHY; SET geo = ST_GEOGFROMTEXT('''POLYGON((-73.985708 40.75773,-73.993324 40.750298, -73.9857 40.7484,-73.9785 40.7575, -73.985708 40.75773))'''); -- NYC viewport SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'geography',geo, -- viewport 'types', ["restaurant"], 'min_rating', 1.0, 'max_rating', 4.5, 'min_user_rating_count', 1, 'max_user_rating_count', 10000, 'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'], 'business_status', ['OPERATIONAL'], 'allows_dogs', TRUE ) ) as count;
Réponse pour la fenêtre d'affichage :
Exemple : Calculer le nombre de restaurants à l'aide d'une ligne
Dans l'exemple suivant, vous définissez la zone de recherche à l'aide d'une ligne de points connectés avec un rayon de recherche de 100 mètres autour de la ligne. Cette ligne est semblable à un itinéraire de voyage calculé par l'API Routes. L'itinéraire peut être destiné à un véhicule, à un vélo ou à un piéton :
DECLARE geo GEOGRAPHY; SET geo = ST_GEOGFROMTEXT('LINESTRING(-73.98903537033028 40.73655649223003,-73.93580216278471 40.80955538843361)'); -- NYC line SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'geography',geo, -- line 'geography_radius', 100, -- Radius around line 'types', ["restaurant"], 'min_rating', 1.0, 'max_rating', 4.5, 'min_user_rating_count', 1, 'max_user_rating_count', 10000, 'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'], 'business_status', ['OPERATIONAL'], 'allows_dogs', TRUE ) ) as count;
Réponse pour la ligne :
Exemple : Combiner les résultats de plusieurs appels
Vous pouvez combiner les résultats de plusieurs appels à la fonction PLACES_COUNT
.
Par exemple, vous souhaitez obtenir un seul résultat indiquant le nombre de restaurants pour les gammes de prix suivantes dans une zone spécifique :
PRICE_LEVEL_INEXPENSIVE
PRICE_LEVEL_MODERATE
PRICE_LEVEL_EXPENSIVE
PRICE_LEVEL_VERY_EXPENSIVE"
Dans cet exemple, vous créez une boucle pour appeler la fonction PLACES_COUNT
pour chaque niveau de prix et insérer les résultats de chaque appel dans une table temporaire. Vous interrogez ensuite la table temporaire pour afficher les résultats :
-- Create a temp table to hold the results. CREATE TEMP TABLE results (type STRING, count INT64); -- Create a loop that calls PLACES_COUNT for each price level. FOR types IN (SELECT type FROM UNNEST(["PRICE_LEVEL_INEXPENSIVE", "PRICE_LEVEL_MODERATE", "PRICE_LEVEL_EXPENSIVE", "PRICE_LEVEL_VERY_EXPENSIVE"]) as type) DO INSERT INTO results VALUES (types.type, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'types', ["restaurant"], 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building 'geography_radius', 1000, -- Radius in meters 'business_status', ['OPERATIONAL'], 'price_level', [types.type] ))); END FOR; -- Query the table of results. SELECT * FROM results;
Réponse combinée :
Vous pouvez également utiliser la commande UNION ALL
pour combiner les résultats de plusieurs instructions SELECT
. L'exemple suivant affiche les mêmes résultats que l'exemple précédent :
SELECT "PRICE_LEVEL_INEXPENSIVE" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'types', ["restaurant"], 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building 'geography_radius', 1000, -- Radius in meters 'business_status', ['OPERATIONAL'], 'price_level', ['PRICE_LEVEL_INEXPENSIVE'] ) ) as count UNION ALL SELECT "PRICE_LEVEL_MODERATE" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'types', ["restaurant"], 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building 'geography_radius', 1000, -- Radius in meters 'business_status', ['OPERATIONAL'], 'price_level', ['PRICE_LEVEL_MODERATE'] ) ) as count UNION ALL SELECT "PRICE_LEVEL_EXPENSIVE" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'types', ["restaurant"], 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building 'geography_radius', 1000, -- Radius in meters 'business_status', ['OPERATIONAL'], 'price_level', ['PRICE_LEVEL_EXPENSIVE'] ) ) as count UNION ALL SELECT "PRICE_LEVEL_VERY_EXPENSIVE" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`( JSON_OBJECT( 'types', ["restaurant"], 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building 'geography_radius', 1000, -- Radius in meters 'business_status', ['OPERATIONAL'], 'price_level', ['PRICE_LEVEL_VERY_EXPENSIVE'] ) ) as count