PLACES_COUNT_V2 函数会返回一个 BigQuery 表,其中包含多个输入地理位置的地点数量和示例地点 ID,具体取决于指定的过滤条件。此函数旨在实现高效的批量处理,它接受 地理位置的
输入
表
形参,让您可以通过输入表提供地理位置,从而在单个查询中分析多个感兴趣的区域。
语法
SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_V2`( TABLE input_geographies, filters )
形参
PROJECT_NAME:您的 Google Cloud 云项目的名称。LINKED_DATASET_NAME:包含地点数据分析函数(例如places_insights___us)的 BigQuery 数据集的名称。input_geographies:包含要分析的地理位置的 BigQuery 表。此表必须 包含以下列:filters(JSON):一个 JSON 对象,其中包含用于过滤地点的键值对。请参阅过滤形参。
输出表架构
PLACES_COUNT_V2 函数会返回一个包含以下列的表:
| 列名称 | 数据类型 | 说明 |
|---|---|---|
geo_id |
STRING | 输入地理位置的唯一标识符,来自 input_geographies 表。 |
input_geography |
GEOGRAPHY | 来自 input_geographies 表的原始 GEOGRAPHY 对象。 |
place_count |
INTEGER | 与过滤条件匹配的地点总数。 |
sample_place_ids |
ARRAY<STRING> | 一个最多包含 250 个符合条件的地点 ID 的数组。 |
运作方式
该函数会处理 input_geographies 表中的每一行。对于每个 geo
对象,它会统计地理位置内(或
geography_radius 内,如果 geo 是点且半径在
filters 中指定)的地点数量。统计结果仅包含符合
filters JSON 对象中定义的所有条件的地点。
示例:计算纽约市三个县的餐厅数量
此示例会生成一个表,其中包含纽约市三个县的营业餐厅数量。
此示例使用美国人口普查局
数据
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_V2 的优势
PLACES_COUNT_V2 与 PLACES_COUNT 和
PLACES_COUNT_PER_GEO 相比,具有显著优势:
- 批量处理 :通过在表中提供多个地理位置输入,在单个查询中高效分析数千个自定义地理位置。
- 性能:利用 BigQuery 优化的地理空间 联接 ,为大型数据集提供显著的速度优势。
- 可伸缩性 :旨在处理大量输入地理位置,不受单个 JSON 形参大小的限制。
- 包含零计数 :
PLACES_COUNT_V2会为输入表中提供的每个geo_id返回一行。如果没有任何地点符合给定地理位置的条件,则place_count将为 0。这样可确保您获得每个输入区域的结果,以便了解哪些区域没有地点。 - 历史快照 :使用可选的
snapshot_date过滤条件查询特定月份的地点数量数据。
示例:查询上个月的 POI 数量
此示例演示了如何使用 snapshot_date 形参查询特定位置的历史 POI 数量。它会过滤结果,以查找具有电动汽车充电设施(由 max_ev_max_charge_rate_kw 指定)以及特定 regular_opening_hours 的地点。
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( 'geography_radius', 5000, 'snapshot_date', '2026-01', -- Target snapshot month (YYYY-MM) 'max_ev_max_charge_rate_kw', 30.0, -- Filter by EV charge rate in kW 'regular_opening_hours', JSON_OBJECT( 'monday', [JSON_OBJECT('start_time', '09:00', 'end_time', '12:00')] ) ) );