クエリのスポット数

PLACES_COUNT_V2 関数は、指定されたフィルタに基づいて、複数の入力地理情報に関する場所の数とサンプル プレイス ID を含む BigQuery テーブルを返します。この関数は、地理情報の入力 テーブル パラメータ を受け入れることで効率的なバッチ処理を行うように設計されています。入力テーブルから地理情報を提供することで、1 つのクエリで多くの対象エリアを分析できます。

構文

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

パラメータ

  • PROJECT_NAME: Google Cloud プロジェクトの名前です。
  • LINKED_DATASET_NAME: Places Insights 関数を含む BigQuery データセットの名前(places_insights___us など)。
  • input_geographies: 分析する地理情報を含む BigQuery テーブル。このテーブルには、次の列が必要 です。
    • geo_idSTRING): 各地理情報の一意の識別子。
    • geoGEOGRAPHY): エリアを表す BigQuery GEOGRAPHY オブジェクト。ポイント、ポリゴン、その他の地理情報タイプを指定できます。
  • filtersJSON): 場所をフィルタするためのキーと値のペアを含む 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 オブジェクトについて、その地理情報内(または geo がポイントで、半径が filters で指定されている場合は geography_radius 内)にある場所の数をカウントします。カウントには、 filters JSON オブジェクトで定義されたすべての 条件に一致する場所のみが含まれます。

例: ニューヨーク市の 3 つの郡のレストランの数を計算する

この例では、ニューヨーク市の 3 つの郡で営業しているレストランの数のテーブルを生成します。

この例では、米国国勢調査局 データ BigQuery 一般公開データセットを使用して、ニューヨーク市の 3 つの郡(「クイーンズ」、「キングス」、「ニュー ヨーク」)の境界を取得します。各郡の境界は county_geom 列に含まれています。

まず、各郡の geo_id と簡略化された GEOGRAPHY を保持する一時テーブル new_york_counties を作成します。

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']
  )
);

レスポンス テーブルには、郡ごとに 1 行ずつ、営業中のレストランの geo_idinput_geographyplace_countsample_place_ids が表示されます。

ニューヨーク州の郡における Places Count 関数の結果。

PLACES_COUNT_V2 を使用するメリット

PLACES_COUNT_V2 には、PLACES_COUNTPLACES_COUNT_PER_GEO の両方と比較して、次のような大きなメリットがあります。

  • バッチ処理: テーブルに複数の地理情報入力を指定することで、1 つのクエリで数千のカスタム地理情報を効率的に分析できます。
  • パフォーマンス: BigQuery の最適化された地理空間 結合 を利用することで、大規模なデータセットで大幅な速度向上が見込めます。
  • スケーラビリティ: 単一の JSON パラメータ サイズの制限なしに、多数の入力地理情報を処理できるように設計されています。
  • ゼロカウントを含む: PLACES_COUNT_V2 は、入力テーブルに指定されたすべての geo_id の行を返します。特定の地理情報の条件に一致する場所がない場合、place_count は 0 になります。これにより、入力エリアごとに結果が得られるため、場所がない場所を確認できます。
  • 過去のスナップショット: 省略可の snapshot_date フィルタを使用して、特定の月の場所の数のデータをクエリします。

例: 前月の POI 数をクエリする

この例では、snapshot_date パラメータを使用して、特定の場所の過去の POI 数をクエリする方法を示します。特定の regular_opening_hours とともに max_ev_max_charge_rate_kw で指定された EV 充電施設がある場所の結果をフィルタします。

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')]
    )
  )
);