Функция PLACES_COUNT_PER_TYPE_V2 возвращает таблицу BigQuery, содержащую количество мест и примеры идентификаторов мест с разбивкой по типам мест для нескольких входных географических объектов. Эта функция предназначена для эффективной пакетной обработки и принимает параметр входной таблицы с географическими данными. Вы указываете географические объекты во входной таблице, а типы мест – в виде массива.
Синтаксис
SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_TYPE_V2`( TABLE input_geographies, target_types, filters )
Параметры
PROJECT_NAME– название вашего облачного проекта Google Cloud.LINKED_DATASET_NAME– название набора данных BigQuery, содержащего функции Places Insights (например,places_insights___us).input_geographies– таблица BigQuery, содержащая регионы для анализа. В таблице должны быть следующие столбцы:target_types(ARRAY<STRING>): массив строк с типами мест, количество которых вы хотите получить. Места будут учитываться, если они соответствуют любому из типов, перечисленных в массивеtypes, а не толькоprimary_type.filters(JSON): объект JSON, содержащий пары "ключ-значение" для дополнительной фильтрации мест. Подробнее о параметрах фильтров…
Схема таблицы результатов
Функция PLACES_COUNT_PER_TYPE_V2 возвращает таблицу со следующими столбцами:
| Название столбца | Тип данных | Описание |
|---|---|---|
geo_id |
STRING | Уникальный идентификатор для входной географии из таблицы input_geographies. |
input_geography |
GEOGRAPHY | Исходный объект GEOGRAPHY из таблицы input_geographies. |
place_type |
STRING | Тип места из массива target_types, который представляет эта строка. |
place_count |
INTEGER | Количество мест, соответствующих запросу place_type и другим фильтрам, в пределах или вблизи географического объекта. |
sample_place_ids |
ARRAY<STRING> | Массив, содержащий до 250 идентификаторов мест, которые соответствуют критериям для этого типа и географического региона. |
В выходных данных будет строка для каждого сочетания geo_id и place_type, указанного в массиве target_types, даже если количество равно нулю.
Принцип работы
Функция обрабатывает каждый регион, указанный в таблице input_geographies.
Для каждого региона подсчитываются места, соответствующие любому из типов, перечисленных в массиве target_types, и удовлетворяющие всем условиям в объекте JSON filters. Результаты агрегируются и разбиваются по каждому значению geo_id и каждому типу в target_types.
Пример. Подсчет количества заведений общественного питания разных типов в округах Нью-Йорка
В этом примере создается таблица с количеством ресторанов, кафе и баров в трех округах Нью-Йорка.
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'] ) );
В результате вы получите таблицу с девятью строками (три округа, умноженные на три типа). В каждой строке будет указано количество ресторанов, кафе или баров в каждом округе. Вы также можете включить в запрос примеры идентификаторов мест, добавив их в оператор SELECT.

Преимущества использования PLACES_COUNT_PER_TYPE_V2
У PLACES_COUNT_PER_TYPE_V2 есть несколько ключевых преимуществ, особенно по сравнению с устаревшей функцией PLACES_COUNT_PER_TYPE:
- Пакетная обработка географических объектов. В отличие от метода
PLACES_COUNT_PER_TYPE, который обрабатывает по одному географическому объекту за раз, методPLACES_COUNT_PER_TYPE_V2принимаетTABLEвходных географических объектов. Это позволяет анализировать и получать количество объектов определенного типа в разных географических областях (точках, многоугольниках) за один запрос, а не за несколько вызовов функций. - Повышенная производительность и масштабируемость. Принимая входные данные в виде таблицы,
PLACES_COUNT_PER_TYPE_V2может использовать оптимизированные геопространственные соединения BigQuery и возможности параллельной обработки для всех предоставленных географических регионов одновременно. Это позволяет значительно повысить производительность и масштабируемость при работе с большим количеством регионов. - Включение нулевых значений. Возвращает строки с нулевыми значениями для типов, не найденных в определенной области в пакете, обеспечивая полный набор результатов для всех комбинаций типов и географических регионов.
- Статистика за прошлые периоды. Запрашивайте данные о количестве мест за определенный месяц, используя необязательный фильтр
snapshot_date.
Пример. Запрос количества объектов инфраструктуры по типу за определенный период с использованием фильтров
В этом примере показано, как найти количество мест определенного типа, например станций зарядки ЭМ, за прошлый месяц с помощью параметра snapshot_date. Он применяет дополнительные фильтры для regular_opening_hours, чтобы искать только места, открытые весь день в выходные дни, и доступность зарядки электромобилей (доступно не менее 10 разъемов), указанную в 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')] ) ) );