La funzione PLACES_COUNT
restituisce un singolo valore di conteggio dei luoghi in base all'area di ricerca e ai filtri di ricerca specificati. Devi specificare l'area di ricerca nella
funzione PLACES_COUNT
e, facoltativamente, puoi specificare parametri di filtro aggiuntivi,
come tipo di luogo, stato operativo, livello di prezzo e altro ancora.
Poiché la funzione PLACES_COUNT
restituisce un singolo valore, chiamala utilizzando
una clausola SELECT
.
Parametri di input:
Obbligatorio: il
geography
parametro di filtro che specifica l'area di ricerca. Il parametrogeography
accetta un valore definito dal tipo di datiGEOGRAPHY
di BigQuery, che supporta punti, linestring e poligoni.(Facoltativo) Parametri di filtro aggiuntivi per perfezionare la ricerca.
Restituisce:
- Un singolo valore
count
comeINT64
.
- Un singolo valore
Esempio: calcolare il numero di luoghi in un raggio di ricerca
La chiamata di funzione PLACES_COUNT
più semplice restituisce un singolo conteggio di tutti i luoghi
in un'area geografica. In questo esempio, restituisci il conteggio di tutti i luoghi operativi
entro 1000 metri dall'Empire State Building.
Questo esempio utilizza la funzione BigQuery
ST_GEOGPOINT
per restituire un valore GEOGRAPHY
da un punto.
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 risposta contiene un singolo conteggio:
Una chiamata più tipica applica filtri all'area di ricerca. L'esempio successivo utilizza i filtri per limitare la ricerca in modo da restituire solo un conteggio di:
- Luoghi di tipo
restaurant
con una valutazione minima di 3 - Un livello di prezzo economico o medio
- Attualmente operativo
- Ammette cani
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;
La risposta filtrata:
Ricorda che le query del set di dati sui luoghi applicano una soglia di conteggio minima di 5. Uno dei vantaggi delle funzioni di conteggio dei luoghi è che possono restituire qualsiasi conteggio, incluso 0. Ad esempio, la seguente chiamata restituisce un conteggio di 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;
Esempio: calcola il numero di ristoranti utilizzando un poligono
Puoi utilizzare un poligono per specificare l'area di ricerca. Quando utilizzi un poligono, i punti del poligono devono definire un circuito chiuso in cui il primo punto del poligono è uguale all'ultimo punto.
Questo esempio utilizza la funzione
ST_GEOGFROMTEXT
BigQuery per restituire un valore GEOGRAPHY
da un poligono.
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;
La risposta per il viewport:
Esempio: calcola il numero di ristoranti utilizzando una linea
Nell'esempio successivo, definisci l'area di ricerca utilizzando una linea di punti collegati con un raggio di ricerca di 100 metri intorno alla linea. La linea è simile a un itinerario di viaggio calcolato dall'API Routes. Il percorso potrebbe essere per un veicolo, una bicicletta o per un pedone:
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;
La risposta per la riga:
Esempio: combina i risultati di più chiamate
Puoi combinare i risultati di più chiamate alla funzione PLACES_COUNT
.
Ad esempio, vuoi un unico risultato che mostri il numero di ristoranti per
i seguenti livelli di prezzo in un'area specifica:
PRICE_LEVEL_INEXPENSIVE
PRICE_LEVEL_MODERATE
PRICE_LEVEL_EXPENSIVE
PRICE_LEVEL_VERY_EXPENSIVE"
In questo esempio, crei un ciclo per chiamare la funzione PLACES_COUNT
per ogni
livello di prezzo e inserisci i risultati di ogni chiamata in una tabella temporanea. A questo punto, esegui una query sulla tabella temporanea per visualizzare i risultati:
-- 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;
La risposta combinata:
Un'altra opzione è utilizzare il comando UNION ALL
per combinare i risultati di
più istruzioni SELECT
. L'esempio seguente mostra gli stessi risultati
dell'esempio precedente:
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