PLACES_COUNT_PER_TYPE_V2 函式會傳回 BigQuery 資料表,其中包含多個輸入地理區域的地點數量和範例地點 ID,並依地點類型細分。這個函式可接受地理區域的輸入資料表參數,因此能有效率地批次處理。您需要透過輸入表格提供地理區域,並以陣列形式指定地點類型。
語法
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:包含 Places Insights 函式的 BigQuery 資料集名稱 (例如places_insights___us)。input_geographies:BigQuery 資料表,內含要分析的地理區域。這個表格必須包含下列資料欄:target_types(ARRAY<STRING>):要取得計數的地點類型字串陣列。只要地點符合types陣列中列出的任一類型,就會計入,不限於primary_type。filters(JSON):JSON 物件,包含用於進一步篩選地點的鍵/值組合。請參閱「篩選器參數」。
輸出資料表結構定義
PLACES_COUNT_PER_TYPE_V2 函式會傳回含有下列資料欄的資料表:
| 資料欄名稱 | 資料類型 | 說明 |
|---|---|---|
geo_id |
STRING | 輸入地理區域的專屬 ID,來自 input_geographies 資料表。 |
input_geography |
GEOGRAPHY | input_geographies 資料表中的原始 GEOGRAPHY 物件。 |
place_type |
STRING | 這個資料列代表的 target_types 陣列地點類型。 |
place_count |
INTEGER | 在地理區域內或附近,符合 place_type 和其他篩選條件的地點數量。 |
sample_place_ids |
ARRAY<STRING> | 最多 250 個地點 ID 的陣列,符合此類型和地理區域的條件。 |
輸出內容會包含 target_types 陣列中指定的每個 geo_id 和 place_type 組合,即使計數為零也一樣。
運作方式
函式會處理 input_geographies 資料表中的每個地理位置。針對每個地理區域,系統會計算符合 target_types 陣列中列出的「任何」類型,且符合 filters JSON 物件中所有條件的地點。系統會匯總結果,並依每個 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'] ) );
結果會是含有 9 列 (3 個郡 * 3 種類型) 的資料表。每一列都會顯示各郡的「餐廳」、「咖啡廳」或「酒吧」商家數量。您也可以在 SELECT 陳述式中加入範例地點 ID。

使用 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 最佳化的地理空間彙整和平行處理功能,同時處理所有提供的地理區域。因此在處理大量地理位置時,效能會大幅提升,擴充性也會更好。 - 包含零計數:如果批次中特定區域未找到某種類型,則傳回計數為 0 的資料列,確保所有類型與地理位置組合都有完整的結果集。
- 歷來快照:使用選用的
snapshot_date篩選器,查詢特定月份的地點數量資料。
範例:使用特定篩選條件,依類型查詢歷來搜尋點數量
這個範例示範如何使用 snapshot_date 參數擷取過去一個月的計數,找出特定地點類型 (例如電動車充電站) 的計數。它會對 regular_opening_hours 套用額外篩選條件,只查詢週末全天營業的地點,以及 min_ev_charge_connector_count 指定的電動車充電站可用性 (至少有 10 個可用接頭)。
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')] ) ) );