總覽

本文說明如何使用 Places Insights 和數據分析,建構動態地理空間報表。讓非技術相關人員也能自行解答問題,發揮位置資料的價值。本指南說明如何將靜態報表轉換為互動式熱視圖樣式工具,用於市場分析,而不必為每項要求編寫 SQL。開放存取複雜的位置資料,消除資料工程和商業智慧之間的落差。
採用這種架構模式可帶來幾項主要優點:
- 資料視覺化:將 Places Insights 資料轉換為互動式地圖和圖表,立即呈現空間密度和趨勢。
- 不需 SQL 即可輕鬆探索:團隊成員 (例如市場分析師或房地產規劃師) 可使用預先定義的參數,動態篩選資料 (例如使用下拉式選單變更「城市」或「時段」)。他們不必編寫任何一行 SQL,就能探索資料。
- 順暢協作:標準數據分析共用功能可讓您安全地發布這些互動式洞察資料。
解決方案工作流程
下列工作流程可建立高效能的報表架構。從靜態基準轉變為完全動態的應用程式,確保在引入複雜性之前資料正確無誤。
必要條件
開始之前,請按照這些操作說明設定 Places Insights。您需要存取數據分析,這是一項免付費工具。
步驟 1:建立靜態地理空間基準
在導入互動功能之前,請先建立基本查詢,並確認查詢在數據分析中正確顯示。使用 Places Insights 和 BigQuery 的地理空間功能,透過 H3 索引系統將資料匯總至六角形網格。這會產生查詢輸出內容,可與數據分析的填色地圖圖表類型搭配使用,以便進行視覺化。
1.1 連結資料
使用下列靜態查詢建立初始連線。它會指定固定位置 (倫敦) 和類別 (餐廳),以驗證資料管道。
SELECT
h3_index,
`carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
restaurant_count
FROM (
SELECT WITH AGGREGATION_THRESHOLD
`carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
COUNT(*) AS restaurant_count
FROM
-- Note: Change 'gb' to your target country code (e.g., 'us')
`places_insights___gb.places`
WHERE
'London' IN UNNEST(locality_names)
AND 'restaurant' IN UNNEST(types)
GROUP BY
h3_index
)
ORDER BY
restaurant_count DESC;
空間匯總注意事項
這項查詢會使用 CARTO Analytics Toolbox (carto-os) 的函式,該函式可在 Google Cloud BigQuery 中公開取得。H3_FROMGEOGPOINT 函式會將特定位置點轉換為 H3 儲存格,這個系統會將世界劃分為六角形網格儲存格。
我們之所以使用這項轉換,是因為數據分析的區域分布圖需要多邊形 (形狀) 才能顯示顏色。將點轉換為六邊形後,就能以視覺化方式呈現特定區域的商家密度,不必繪製數千個重疊的點。
匯總門檻注意事項
所有 Places Insights 查詢都必須包含 WITH AGGREGATION_THRESHOLD 子句。這項隱私保護措施可確保只有在匯總計數為 5 以上時,系統才會傳回資料。
在這個圖表的情境中,如果 H3 網格儲存格包含的餐廳少於 5 間,該儲存格就會從結果集中完全省略,並在地圖上顯示為空白。
如要在數據分析中實作這項功能,請按照下列步驟操作:
- 建立新的空白報表。
- 選取「BigQuery」BigQuery做為資料連接器。
- 從左側選單中選擇「CUSTOM QUERY」(自訂查詢),然後選取帳單專案 ID。
- 將上方的靜態基本查詢貼到編輯器。
- 清除「Use Legacy SQL」(使用舊版 SQL)、「Enable date range」(啟用日期範圍) 和「Enable viewer email address」(啟用檢視者電子郵件地址) 參數。
- 按一下 [新增]。
1.2 設定地理空間視覺化
連結資料後,請設定數據分析,正確辨識 H3 邊界資料:
- 在「Add a chart」(新增圖表) 選單中,將「Filled Map」(填色地圖) 圖表新增至報表畫布。
- 請確認包含多邊形幾何圖形的
h3_geo欄位已設為「地理空間」資料類型。- 按一下連結名稱旁的「Edit data source」(編輯資料來源) (鉛筆) 圖示。
- 如果
h3_geo設為「Text」(文字) (ABC),請使用下拉式選單依序選取「Geo」(地理) >「Geospatial」(地理空間), - 按一下「完成」。
- 將
h3_index欄位對應至「Location」 (做為專屬 ID)。 - 將
h3_geo欄位對應至「Geospatial Field」(地理空間欄位) (做為多邊形幾何圖形)。 - 將
restaurant_count欄位對應至「顏色指標」。
這會依 H3 單元格顯示餐廳密度地圖。深藍色 (預設顏色選項) 代表餐廳數量較多的儲存格。

步驟 2:導入動態參數
為了讓報表具有互動性,我們會在報表中加入控制項,讓使用者從下列選項中選取:
- 地區:控制報表著重的城市。
- 星期幾:根據營業日篩選地點,使用結構定義中的
regular_opening_hours記錄。 - 時段:根據營業時間篩選地點,方法是比較
start_time和end_time欄位。
為此,您會在執行階段,將使用者選取的參數直接傳遞至修改後的 Places Insights 查詢。在數據分析的資料來源編輯器中,您必須明確將這些參數定義為類型變數。
在數據分析中,選取「Resource」(資源) 選單,然後按一下「Manage added data sources」(管理已新增的資料來源)。在顯示的面板中,選取先前新增的 BigQuery 自訂 SQL 資料來源旁的 EDIT。
在「編輯連線」視窗中,選取「新增參數」。我們要新增三個參數,值如下。
| 參數名稱 | 資料類型 | 允許的值 | 值清單 (必須與資料庫完全相符) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
p_locality |
文字 | 值清單 |
|
||||||||||||||||
p_day_of_week |
文字 | 值清單 |
|
||||||||||||||||
p_hour_of_day |
文字 | 值清單 |
|
p_hour_of_day 參數的設定範例。

對於 p_hour_of_day 參數,請密切注意 Value 欄。由於 SQL 查詢使用 CAST(@p_hour_of_day AS TIME),因此從數據分析傳遞的值必須嚴格採用 HH:MM:SS 格式 (24 小時制)。
設定並儲存這三個參數後,請修改 BigQuery 自訂 SQL 連線,使用 @ 語法參照這些變數。
方法是點選「編輯連線」,然後貼上下列修改後的查詢:
SELECT
h3_index,
`carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
restaurant_count
FROM (
SELECT WITH AGGREGATION_THRESHOLD
`carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
COUNT(*) AS restaurant_count
FROM
`places_insights___gb.places`
WHERE
-- Dynamic locality filter based on parameter
@p_locality IN UNNEST(locality_names)
AND 'restaurant' IN UNNEST(types)
AND business_status = 'OPERATIONAL'
AND EXISTS (
SELECT 1
FROM UNNEST(
CASE @p_day_of_week
WHEN 'monday' THEN regular_opening_hours.monday
WHEN 'tuesday' THEN regular_opening_hours.tuesday
WHEN 'wednesday' THEN regular_opening_hours.wednesday
WHEN 'thursday' THEN regular_opening_hours.thursday
WHEN 'friday' THEN regular_opening_hours.friday
WHEN 'saturday' THEN regular_opening_hours.saturday
WHEN 'sunday' THEN regular_opening_hours.sunday
END
) AS hours
WHERE hours.start_time <= CAST(@p_hour_of_day AS TIME)
AND hours.end_time >= TIME_ADD(CAST(@p_hour_of_day AS TIME), INTERVAL 1 HOUR)
)
GROUP BY
h3_index
)
ORDER BY
restaurant_count DESC;
按一下「重新連結」即可儲存編輯內容。在修改後的查詢中,請注意新的變數,例如 @p_hour_of_day,這些變數與我們剛才設定的參數名稱相關。
返回報表畫布,向使用者顯示這些參數:
- 在報表中新增三個「下拉式選單」控制項。
- 針對每個控制項,將「控制項欄位」設為對應至新建立的參數:
- 控制組 1:
p_locality - 控制項 2:
p_day_of_week - 控制項 3:
p_hour_of_day
- 控制組 1:
最終報表應如下所示。變更其中一個下拉式選單控制項的值,會觸發數據分析從 Places Insights 擷取要求的資料,然後在地圖上以圖表呈現。

步驟 3:分享結果
使用數據分析內建的共用工具分享報表。這樣一來,檢視者就能根據從下拉式選單中選取的參數,動態更新圖表。
結論
這個模式會建立可擴充的互動式報表工具,運用 BigQuery 的運算能力,將匯總的 Places Insights 資料提供給數據分析。這個架構可避免嘗試以視覺化方式呈現大量原始資料集的缺點,並讓使用者能靈活地以近乎即時的方式,探索不同維度的資料,例如時間、位置和業務類型。這項強大工具可讓不具技術背景的利害關係人靈活探索資料。
後續步驟
您可以將 Places Insights 結構定義的不同部分參數化,探索其他動態報表變化版本:
- 動態競爭對手分析:為
brand名稱建立參數,讓使用者能立即切換不同競爭對手的熱視圖,查看他們在市場中的相對飽和度。如要瞭解品牌資料可用性,請參閱「關於 Places Insights 資料」。 - 互動式地點選擇:新增
price_level參數 (例如「中等」與「昂貴」) 和最低rating,讓房地產團隊能動態篩選符合特定客層特徵的區域。 - 自訂涵蓋範圍:不依城市名稱篩選,而是讓使用者定義自訂研究區域。
- 半徑:建立三個數值參數:p_latitude、p_longitude 和 p_radius_meters。您可以透過 Google Maps Platform API (包括 Geocoding API) 取得座標。在查詢中,將這些值插入 ST_DWITHIN 函式:
ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
- 多邊形:如果是複雜的自訂形狀 (例如銷售區域),使用者無法輕易輸入幾何圖形文字。請改為在 BigQuery 中建立對照表,其中包含形狀幾何圖形和易記名稱 (例如「Zone A」)。在數據分析中建立文字參數
p_zone_name,讓使用者選取區域,並使用子查詢擷取ST_CONTAINS函式的幾何圖形。
- 半徑:建立三個數值參數:p_latitude、p_longitude 和 p_radius_meters。您可以透過 Google Maps Platform API (包括 Geocoding API) 取得座標。在查詢中,將這些值插入 ST_DWITHIN 函式:
貢獻者
- David Szajngarten | 開發人員關係工程師
- Henrik Valve | DevX 工程師