Eseguire query sui conteggi dei PDI per tipo di luogo

La funzione PLACES_COUNT_PER_TYPE_V2 restituisce una tabella BigQuery contenente i conteggi dei luoghi e gli ID luogo di esempio, suddivisi per tipo di luogo, per più aree geografiche di input. Questa funzione è progettata per un'elaborazione batch efficiente accettando un parametro della tabella di input delle aree geografiche. Fornisci le aree geografiche tramite una tabella di input e specifichi i tipi di luoghi come array.

Sintassi

SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_TYPE_V2`(
  TABLE input_geographies,
  target_types,
  filters
)

Parametri

  • PROJECT_NAME: il nome del tuo progetto Google Cloud.
  • LINKED_DATASET_NAME: il nome del set di dati BigQuery contenente le funzioni di Places Insights (ad es. places_insights___us).
  • input_geographies: una tabella BigQuery contenente le aree geografiche da analizzare. Questa tabella deve includere le seguenti colonne:
    • geo_id (STRING): un identificatore univoco per ogni area geografica.
    • geo (GEOGRAPHY): l'oggetto GEOGRAPHY di BigQuery che rappresenta l'area. Può essere un punto, un poligono o un altro tipo di area geografica.
  • target_types (ARRAY<STRING>): un array di stringhe di tipi di luoghi per cui vuoi ottenere i conteggi. I luoghi verranno conteggiati se corrispondono a uno dei tipi elencati nel loro array types, non solo a primary_type.
  • filters (JSON): un oggetto JSON contenente coppie chiave-valore per un ulteriore filtro dei luoghi. Consulta la sezione Parametri di filtro.

Schema della tabella di output

La funzione PLACES_COUNT_PER_TYPE_V2 restituisce una tabella con le seguenti colonne:

Nome colonna Tipo di dati Descrizione
geo_id STRING L'identificatore univoco dell'area geografica di input, dalla tabella input_geographies.
input_geography GEOGRAPHY L'oggetto GEOGRAPHY originale della tabella input_geographies.
place_type STRING Il tipo di luogo dell'array target_types rappresentato da questa riga.
place_count INTEGER Il numero di luoghi corrispondenti a place_type e ad altri filtri all'interno o in prossimità dell'area geografica.
sample_place_ids ARRAY<STRING> Un array di massimo 250 ID luogo che corrispondono ai criteri per questo tipo e questa area geografica.

L'output conterrà una riga per ogni combinazione di geo_id e place_type specificata nell'array target_types, anche se il conteggio è zero.

Come funziona

La funzione elabora ogni area geografica fornita nella tabella input_geographies. Per ogni area geografica, vengono conteggiati i luoghi che corrispondono a uno dei tipi elencati nell'array target_types e che soddisfano anche tutte le condizioni nell'oggetto JSON filters. I risultati vengono aggregati e suddivisi per ogni geo_id e per ogni tipo in target_types.

Esempio: conta i diversi tipi di ristoranti nelle contee di New York

Questo esempio genera una tabella di conteggi per i tipi "ristorante", "bar" e "pub" in tre contee di New York City.

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']
  )
);

Il risultato sarà una tabella con 9 righe (3 contee * 3 tipi). Ogni riga mostrerà il numero di "ristoranti", "bar" o "pub" all'interno di ogni contea. Puoi anche includere ID luogo di esempio se li aggiungi all'istruzione SELECT.

Risultati per la funzione Places Count Per Type nelle contee di New York.

Vantaggi dell'utilizzo di PLACES_COUNT_PER_TYPE_V2

PLACES_COUNT_PER_TYPE_V2 offre diversi vantaggi principali, in particolare se confrontata con la funzione PLACES_COUNT_PER_TYPE precedente:

  • Elaborazione batch delle aree geografiche:a differenza di PLACES_COUNT_PER_TYPE, che elabora un'area geografica alla volta, PLACES_COUNT_PER_TYPE_V2 accetta un TABLE di aree geografiche di input. In questo modo, puoi analizzare e ottenere conteggi specifici per tipo in numerose aree geografiche (punti, poligoni) in un'unica query, anziché effettuare più chiamate di funzione.
  • Prestazioni e scalabilità migliorate: accettando un input di tabella, PLACES_COUNT_PER_TYPE_V2 può sfruttare i join geospaziali ottimizzati di BigQuery e le funzionalità di elaborazione parallela in tutte le aree geografiche fornite contemporaneamente. Ciò si traduce in significativi miglioramenti delle prestazioni e in una migliore scalabilità quando si ha a che fare con un numero elevato di aree geografiche.
  • Conteggi pari a zero inclusi:restituisce righe con conteggi pari a 0 per i tipi non trovati in un'area specifica all'interno del batch, garantendo un set di risultati completo per tutte le combinazioni di tipo e area geografica.
  • Istantanee storiche: esegui query sui dati del numero di luoghi di un mese specifico utilizzando il filtro facoltativo snapshot_date.

Esempio: esegui query sui conteggi storici dei PDI per tipo con filtri specifici

Questo esempio mostra come trovare i conteggi per tipi di luoghi specifici, come le stazioni di ricarica EV, utilizzando il parametro snapshot_date per recuperare i conteggi di un mese passato. Applica filtri aggiuntivi per regular_opening_hours per cercare solo i luoghi aperti tutto il giorno nei fine settimana e la disponibilità di caricabatterie EV (almeno 10 connettori disponibili) specificata da 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')]
    )
  )
);