функция PLACES_COUNT_V2

Функция PLACES_COUNT_V2 возвращает таблицу BigQuery, содержащую количество мест и примеры идентификаторов мест для нескольких заданных географических регионов на основе указанных фильтров. Эта функция предназначена для эффективной пакетной обработки, принимая в качестве параметра входную таблицу географических регионов, что позволяет анализировать множество интересующих областей в одном запросе, предоставляя географические регионы через входную таблицу.

Синтаксис

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

Параметры

  • PROJECT_NAME : Название вашего проекта в Google Cloud.
  • LINKED_DATASET_NAME : Название набора данных BigQuery, содержащего функции Places Insights (например, places_insights___us ).
  • input_geographies : Таблица BigQuery, содержащая географические регионы для анализа. Эта таблица должна содержать следующие столбцы:
    • geo_id ( STRING ): Уникальный идентификатор для каждого географического региона.
    • geo ( GEOGRAPHY ): Объект BigQuery GEOGRAPHY, представляющий область. Это может быть точка, многоугольник или другой тип географических данных.
  • filters ( JSON ): JSON-объект, содержащий пары ключ-значение для фильтрации мест. См. Параметры фильтра .

Схема выходной таблицы

Функция PLACES_COUNT_V2 возвращает таблицу со следующими столбцами:

Название столбца Тип данных Описание
geo_id НИТЬ Уникальный идентификатор входного географического региона из таблицы input_geographies .
input_geography ГЕОГРАФИЯ Исходный объект GEOGRAPHY из таблицы input_geographies .
place_count ЦЕЛОЕ Общее количество мест, соответствующих фильтрам.
sample_place_ids МАССИВ<СТРОКА> Массив, содержащий до 250 идентификаторов мест, соответствующих заданным критериям.

Как это работает

Функция обрабатывает каждую строку в таблице input_geographies . Для каждого объекта geo она подсчитывает количество мест, попадающих в указанный географический регион (или в geography_radius , если geo является точкой, а радиус указан в filters ). Подсчет включает только те места, которые соответствуют всем условиям, определенным в JSON-объекте filters .

Пример: Рассчитайте количество ресторанов в трех округах Нью-Йорка.

В этом примере генерируется таблица с количеством действующих ресторанов в трех округах Нью-Йорка.

В этом примере используется общедоступный набор данных BigQuery Бюро переписи населения США для получения границ трех округов Нью-Йорка: «Куинс», «Кингс» и «Нью-Йорк». Границы каждого округа содержатся в столбце county_geom .

Сначала мы создаём временную таблицу new_york_counties для хранения geo_id и упрощённого значения GEOGRAPHY для каждого округа.

SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_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")
  ),
  JSON_OBJECT(
      'types', ["restaurant"],
      'business_status', ['OPERATIONAL']
  )
);

В таблице ответов будет три строки, по одной для каждого округа, отображающие geo_id , input_geography , place_count и sample_place_ids действующих ресторанов.

Результаты работы функции Places Count в округах штата Нью-Йорк.

Преимущества использования PLACES_COUNT_V2

PLACES_COUNT_V2 обладает значительными преимуществами по сравнению с PLACES_COUNT и PLACES_COUNT_PER_GEO :

  • Пакетная обработка: Эффективный анализ тысяч пользовательских географических регионов в одном запросе путем предоставления нескольких географических данных в таблице.
  • Производительность: Использует оптимизированные геопространственные объединения BigQuery, обеспечивая значительное преимущество в скорости обработки больших наборов данных.
  • Масштабируемость: Разработан для обработки большого количества входных географических данных без ограничений, связанных с размером одного параметра JSON.
  • Включая нулевые значения: PLACES_COUNT_V2 возвращает строку для каждого geo_id , указанного во входной таблице. Если ни одно место не соответствует критериям для данного географического региона, place_count будет равно 0. Это гарантирует наличие результата для каждой входной области, что позволяет увидеть, где места отсутствуют.