Consultar contagens de PDI por tipo de lugar

A função PLACES_COUNT_PER_TYPE_V2 retorna uma tabela do BigQuery com contagens de lugares e IDs de lugar de amostra, divididos por tipo de lugar, para várias geografias de entrada. Essa função foi projetada para processamento em lote eficiente, aceitando um parâmetro de tabela de entrada de regiões geográficas. Você fornece as regiões geográficas por uma tabela de entrada e especifica os tipos de lugar como uma matriz.

Sintaxe

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

Parâmetros

  • PROJECT_NAME: o nome do seu projeto do Google Cloud;
  • LINKED_DATASET_NAME: o nome do conjunto de dados do BigQuery que contém as funções do Insights de Lugares (por exemplo, places_insights___us).
  • input_geographies: uma tabela do BigQuery com as regiões a serem analisadas. Essa tabela precisa incluir as seguintes colunas:
    • geo_id (STRING): um identificador exclusivo para cada região geográfica.
    • geo (GEOGRAPHY): o objeto GEOGRAPHY do BigQuery que representa a área. Pode ser um ponto, um polígono ou outro tipo de geografia.
  • target_types (ARRAY<STRING>): uma matriz de strings de tipo de lugar para as quais você quer receber contagens. Os lugares serão contados se corresponderem a qualquer um dos tipos listados na matriz types, não apenas ao primary_type.
  • filters (JSON): um objeto JSON que contém pares de chave-valor para filtragem adicional dos lugares. Consulte Parâmetros de filtro.

Esquema da tabela de saída

A função PLACES_COUNT_PER_TYPE_V2 retorna uma tabela com as seguintes colunas:

Nome da coluna Tipo de dados Descrição
geo_id STRING O identificador exclusivo da região de entrada, da tabela input_geographies.
input_geography GEOGRAPHY O objeto GEOGRAPHY original da tabela input_geographies.
place_type STRING O tipo de lugar da matriz target_types que essa linha representa.
place_count INTEGER O número de lugares que correspondem ao place_type e a outros filtros dentro ou perto da região geográfica.
sample_place_ids ARRAY<STRING> Uma matriz de até 250 IDs de lugar que correspondem aos critérios desse tipo e região geográfica.

A saída vai conter uma linha para cada combinação de geo_id e place_type especificada na matriz target_types, mesmo que a contagem seja zero.

Como funciona

A função processa cada região geográfica fornecida na tabela input_geographies. Para cada região, ele conta os lugares que correspondem a qualquer um dos tipos listados na matriz target_types e também atendem a todas as condições no objeto JSON filters. Os resultados são agregados e detalhados por cada geo_id e cada tipo em target_types.

Exemplo: contar diferentes tipos de restaurantes nos condados de Nova York

Este exemplo gera uma tabela de contagens para os tipos "restaurante", "café" e "bar" em três condados da cidade de Nova 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']
  )
);

O resultado será uma tabela com 9 linhas (3 condados * 3 tipos). Cada linha vai mostrar a contagem de estabelecimentos do tipo "restaurant", "cafe" ou "bar" em cada condado. Também é possível incluir IDs de lugar de exemplo se você os adicionar à instrução SELECT.

Resultados da função de contagem de lugares por tipo nos condados de Nova York.

Benefícios de usar PLACES_COUNT_PER_TYPE_V2

O PLACES_COUNT_PER_TYPE_V2 oferece várias vantagens importantes, principalmente em comparação com a função PLACES_COUNT_PER_TYPE mais antiga:

  • Processamento em lote de regiões:ao contrário de PLACES_COUNT_PER_TYPE, que processa uma região por vez, PLACES_COUNT_PER_TYPE_V2 aceita um TABLE de regiões de entrada. Isso permite analisar e receber contagens específicas de tipo em várias regiões geográficas (pontos, polígonos) em uma única consulta, em vez de fazer várias chamadas de função.
  • Melhor desempenho e escalonabilidade:ao receber uma entrada de tabela, o PLACES_COUNT_PER_TYPE_V2 pode aproveitar as mesclagens geoespaciais otimizadas do BigQuery e os recursos de processamento paralelo em todas as regiões fornecidas simultaneamente. Isso resulta em melhorias significativas de performance e melhor escalonabilidade ao lidar com um grande número de regiões geográficas.
  • Contagens zero incluídas:retorna linhas com contagens zero para tipos não encontrados em uma área específica do lote, garantindo um conjunto de resultados completo para todas as combinações de tipo e região geográfica.
  • Snapshots históricos:consulte dados de contagem de lugares de um mês específico usando o filtro opcional snapshot_date.

Exemplo: consultar contagens históricas de PDIs por tipo com filtros específicos

Este exemplo demonstra como encontrar contagens para tipos de lugares específicos, como eletropostos, usando o parâmetro snapshot_date para recuperar contagens de um mês anterior. Ele aplica filtros adicionais para regular_opening_hours para procurar apenas lugares abertos o dia todo nos fins de semana e a disponibilidade de carregamento de VE (pelo menos 10 conectores disponíveis) 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')]
    )
  )
);