PLACES_COUNT_V2 函数

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:包含地点数据分析函数的 BigQuery 数据集的名称(例如 places_insights___us)。
  • input_geographies:包含要分析的地理位置的 BigQuery 表。此表必须包含以下列:
    • geo_id (STRING):每个地理位置的唯一标识符。
    • geo (GEOGRAPHY):表示相应区域的 BigQuery GEOGRAPHY 对象。可以是点、多边形或其他地理位置类型。
  • filters (JSON):一个 JSON 对象,包含用于过滤地点的键值对。请参阅过滤参数

输出表架构

PLACES_COUNT_V2 函数会返回包含以下列的表:

列名称 数据类型 说明
geo_id STRING 输入地理位置的唯一标识符(来自 input_geographies 表)。
input_geography GEOGRAPHY 来自 input_geographies 表的原始地理位置对象。
place_count INTEGER 与过滤条件匹配的地点总数。
sample_place_ids ARRAY<STRING> 一个数组,其中包含最多 250 个符合条件的地点 ID。

运作方式

该函数会处理 input_geographies 表格中的每一行。对于每个 geo 对象,它会统计位于地理位置内(或位于 geo 内,如果 geo 是点且半径在 filters 中指定)的地点数量。该统计信息仅包含符合 filters JSON 对象中定义的所有条件的地点。geography_radius

示例:计算纽约市三个县的餐厅数量

此示例生成了一个表格,其中包含纽约市三个区县的营业餐厅数量。

此示例使用 United States Census Bureau Data 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_idinput_geographyplace_countsample_place_ids

纽约各县的 Places Count 函数结果。

使用 PLACES_COUNT_V2 的好处

PLACES_COUNTPLACES_COUNT_PER_GEO 相比,PLACES_COUNT_V2 具有显著优势:

  • 批量处理:通过在表格中提供多个地理位置输入,在单个查询中高效分析数千个自定义地理位置。
  • 性能:利用 BigQuery 优化的地理空间联接,可显著提高大型数据集的处理速度。
  • 可伸缩性:旨在处理大量输入地理位置,不受单个 JSON 参数大小的限制。
  • 包含零计数PLACES_COUNT_V2 会为输入表中提供的每个 geo_id 返回一行。如果没有任何地点符合给定地理位置的条件,则 place_count 将为 0。这样可确保每个输入区域都有结果,以便您了解哪些位置没有结果。