Recuento de POI de búsquedas por tipo de lugar

La función PLACES_COUNT_PER_TYPE_V2 muestra una tabla de BigQuery que contiene recuentos de lugares y IDs de lugares de muestra, desglosados por tipo de lugar, para varias ubicaciones geográficas de entrada. Esta función está diseñada para el procesamiento por lotes eficiente, ya que acepta un parámetro de tabla de entrada de ubicaciones geográficas. Proporcionas las ubicaciones geográficas a través de una tabla de entrada y especificas los tipos de lugares como un array.

Sintaxis

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

Parámetros

  • PROJECT_NAME: Es el nombre de tu proyecto de Google Cloud.
  • LINKED_DATASET_NAME: Es el nombre del conjunto de datos de BigQuery que contiene las funciones de Places Insights (p.ej., places_insights___us).
  • input_geographies: Es una tabla de BigQuery que contiene las ubicaciones geográficas que se analizarán. Esta tabla debe incluir las siguientes columnas:
    • geo_id (STRING): Es un identificador único para cada ubicación geográfica.
    • geo (GEOGRAPHY): Es el objeto GEOGRAPHY de BigQuery que representa el área. Puede ser un punto, un polígono o cualquier otro tipo de ubicación geográfica.
  • target_types (ARRAY<STRING>): Es un array de cadenas de tipo de lugar para las que deseas obtener recuentos. Los lugares se contarán si coinciden con cualquiera de los tipos que se enumeran en su array types, no solo con el primary_type.
  • filters (JSON): Es un objeto JSON que contiene pares clave-valor para filtrar aún más los lugares. Consulta Parámetros de filtro.

Esquema de la tabla de salida

La función PLACES_COUNT_PER_TYPE_V2 muestra una tabla con las siguientes columnas:

Nombre de la columna Tipo de datos Descripción
geo_id STRING Es el identificador único de la ubicación geográfica de entrada, de la tabla input_geographies.
input_geography GEOGRAPHY Es el objeto GEOGRAPHY original de la tabla input_geographies.
place_type STRING Es el tipo de lugar del array target_types que representa esta fila.
place_count INTEGER Es la cantidad de lugares que coinciden con el place_type y otros filtros dentro o cerca de la ubicación geográfica.
sample_place_ids ARRAY<STRING> Es un array de hasta 250 IDs de lugares que coinciden con los criterios de este tipo y ubicación geográfica.

El resultado contendrá una fila para cada combinación de geo_id y place_type especificada en el array target_types, incluso si el recuento es cero.

Cómo funciona

La función procesa cada ubicación geográfica proporcionada en la tabla input_geographies. Para cada ubicación geográfica, cuenta los lugares que coinciden con cualquiera de los tipos que se enumeran en el array target_types y que también cumplen con todas las condiciones del objeto JSON filters. Los resultados se agregan y desglosan por cada geo_id y cada tipo en target_types.

Ejemplo: Cuenta diferentes tipos de restaurantes en los condados de Nueva York

En este ejemplo, se genera una tabla de recuentos para los tipos "restaurant", "cafe" y "bar" en tres condados de la ciudad de Nueva 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']
  )
);

El resultado será una tabla con 9 filas (3 condados * 3 tipos). Cada fila mostrará el recuento de establecimientos "restaurant", "cafe" o "bar" dentro de cada condado. También puedes incluir IDs de lugares de muestra si los agregas a tu instrucción SELECT.

Resultados de la función Places Count Per Type en los condados de Nueva York.

Beneficios de usar PLACES_COUNT_PER_TYPE_V2

PLACES_COUNT_PER_TYPE_V2 ofrece varias ventajas clave, en particular cuando se compara con la función PLACES_COUNT_PER_TYPE anterior:

  • Procesamiento por lotes de ubicaciones geográficas: A diferencia de PLACES_COUNT_PER_TYPE que procesa una ubicación geográfica a la vez, PLACES_COUNT_PER_TYPE_V2 acepta una TABLE de ubicaciones geográficas de entrada. Esto te permite analizar y obtener recuentos específicos de tipos en varias ubicaciones geográficas (puntos, polígonos) en una sola consulta, en lugar de realizar varias llamadas a funciones.
  • Rendimiento y escalabilidad mejorados: Al tomar una entrada de tabla, PLACES_COUNT_PER_TYPE_V2 puede aprovechar las uniones geoespaciales optimizadas de BigQuery y las capacidades de procesamiento paralelo en todas las ubicaciones geográficas proporcionadas de forma simultánea. Esto genera mejoras significativas en el rendimiento y una mejor escalabilidad cuando se trata de una gran cantidad de ubicaciones geográficas.
  • Se incluyen recuentos cero: Muestra filas con recuentos 0 para los tipos que no se encuentran en un área específica dentro del lote, lo que garantiza un conjunto de resultados completo para todas las combinaciones de tipo y ubicación geográfica.
  • Instantáneas históricas: Consulta los datos de recuento de lugares de un mes específico con el filtro opcional snapshot_date.

Ejemplo: Consulta los recuentos históricos de PDI por tipo con filtros específicos

En este ejemplo, se muestra cómo encontrar recuentos de tipos de lugares específicos, como estaciones de carga de vehículos eléctricos, con el parámetro snapshot_date para recuperar recuentos de un mes anterior. Aplica filtros adicionales para regular_opening_hours para buscar solo los lugares abiertos todo el día los fines de semana y la disponibilidad de carga de vehículos eléctricos (al menos 10 conectores disponibles) especificada por 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')]
    )
  )
);