總覽

本文說明如何使用 Places Insights 和 Looker Studio 建立動態地理空間報表。讓非技術人員也能回答自己的問題,發揮位置資料的價值。本指南說明如何將靜態報表轉換為互動式熱度圖工具,用於市場分析,不必為每個要求編寫 SQL。啟用複雜位置資料的存取權,縮小資料工程與商業智慧之間的差距。
採用這種架構模式可帶來幾項主要優點:
- 資料視覺化:將地點洞察資料轉換為互動式地圖和圖表,立即呈現空間密度和趨勢。
- 簡化探索作業,不必使用 SQL:讓團隊成員 (例如市場分析師或房地產規劃人員) 使用預先定義的參數動態篩選資料 (例如使用下拉式選單變更「城市」或「時段」)。他們可以探索資料,完全不必編寫任何一行 SQL 程式碼。
- 順暢協作:透過 Looker Studio 標準共用功能,安全地發布這些互動式洞察資料。
解決方案工作流程
下列工作流程可建立高效能的報表架構。從靜態基準轉移至完全動態的應用程式,確保資料正確性,再導入複雜性。
從競爭對手分析到根據特定設施選擇地點,皆適用此模式。必要條件
開始之前,請先按照這些操作說明設定地點洞察資料。您需要存取 Looker Studio,這項工具免付費。
步驟 1:建立靜態地理空間基準
導入互動功能前,請先建立基本查詢,並確保查詢在 Looker Studio 中正確算繪。使用 Places Insights 和 BigQuery 的地理空間功能,透過 H3 索引系統將資料匯總到六邊形格線中。這會產生查詢輸出內容,可搭配 Looker Studio 的填滿地圖圖表類型,以視覺化方式呈現。
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;
空間匯總注意事項
這項查詢會使用 Google Cloud BigQuery 中公開提供的 CARTO Analytics Toolbox (carto-os) 函式。H3_FROMGEOGPOINT 函式會將特定位置點轉換為 H3 儲存格,這個系統會將世界劃分為六邊形格線儲存格。
我們使用這項轉換,是因為 Looker Studio 的填滿地圖需要多邊形 (形狀) 才能算繪顏色。將點轉換成六邊形後,我們就能顯示特定區域的商家密度,而不是繪製數千個重疊的點。
匯總門檻注意事項
所有 Places Insights 查詢都需要 WITH AGGREGATION_THRESHOLD 子句。
這項隱私權保護措施可確保只有在匯總計數為 5 以上時,系統才會傳回資料。
就這項視覺化效果而言,如果 H3 格線儲存格包含的餐廳少於 5 間,該儲存格就會完全從結果集中省略,並在地圖上顯示為空白。
如要在 Looker Studio 中實作這項功能,請按照下列步驟操作:
- 建立新的空白報表。
- 選取「BigQuery」BigQuery做為資料連接器。
- 從左側選單選擇「自訂查詢」,然後選取帳單「專案 ID」。
- 將上方的靜態基礎查詢貼到編輯器。
- 取消勾選「使用舊版 SQL」、「啟用日期範圍」和「啟用檢視者電子郵件地址」參數。
- 按一下 [新增]。
1.2 設定地理空間視覺化
連結資料後,請設定 Looker Studio,確保系統能正確辨識 H3 邊界資料:
- 從「新增圖表」選單,將「填滿地圖」視覺化效果新增至報表畫布。
- 確認包含多邊形幾何圖形的
h3_geo欄位已設為「地理空間」資料類型。- 按一下連線名稱旁邊的「編輯資料來源」 (鉛筆) 圖示。
- 如果
h3_geo設為「文字」 (ABC),請使用下拉式選單依序選取「地理位置」 >「地理空間」, - 按一下 [完成]。
- 將
h3_index欄位對應至「地點」 (做為專屬 ID)。 - 將
h3_geo欄位對應至「地理空間欄位」 (做為多邊形幾何)。 - 將
restaurant_count欄位對應至「顏色指標」。
這會根據 H3 儲存格顯示餐廳密度地圖。深藍色 (預設顏色選項) 代表餐廳數量較多的儲存格。

步驟 2:導入動態參數
如要讓報表具備互動性,我們會在報表中加入控制項,讓使用者從下列選項中選取:
- 地區:控制報告的重點城市。
- 星期幾:根據地點的營業日篩選,並運用結構化資料中的
regular_opening_hours記錄。 - 一天中的時間:根據
start_time和end_time欄位比較,篩選營業時間內的場所。
如要達成這個目標,您會在執行階段將使用者選取的參數直接傳遞至修改後的 Places Insights 查詢。在 Looker Studio 的資料來源編輯器中,您必須明確將這些參數定義為型別變數。
在 Looker Studio 中選取「資源」選單,然後按一下「管理已新增的資料來源」。在隨即顯示的面板中,選取先前新增的 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),從 Looker Studio 傳遞的值必須採用嚴格的 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:
最終報表應如下所示。變更任一下拉式控制項的值後,Looker Studio 會從 Places Insights 擷取所要求的資料,然後在地圖上顯示。

步驟 3:分享結果
使用 Looker Studio 內建的共用工具共用報表。這樣一來,觀眾就能根據從下拉式清單中選取的參數,動態更新視覺化效果。
結論
這個模式會建立可擴充的互動式報表工具,運用 BigQuery 的運算能力,將匯總的 Places Insights 資料提供給 Looker Studio。這個架構可避免嘗試將大量原始資料集視覺化時可能遇到的問題,並讓使用者能彈性地探索不同維度的資料,例如時間、地點和商家類型,而且幾乎是即時顯示。這項強大工具可讓非技術利害關係人彈性探索資料。
後續步驟
如要探索其他動態報表變化,請將地點洞察架構的不同部分參數化:
- 動態競爭對手分析:為
brand名稱建立參數,讓使用者在不同競爭對手之間即時切換熱度圖,查看他們在市場中的相對飽和度。如要瞭解品牌資料的適用情形,請參閱「關於 Places 洞察資料」。 - 互動式網站選取:新增
price_level的參數 (例如: 「中等」與「昂貴」) 和最低rating,讓房地產團隊動態篩選出符合特定人口統計資料的區域。 - 自訂集水區:使用者可定義自訂研究區域,不必依城市名稱篩選。
- 以半徑為準:建立三個數值參數:p_latitude、p_longitude 和 p_radius_meters。座標可透過 Google 地圖平台 API 取得,包括地理編碼 API。在查詢中,將這些項目注入 ST_DWITHIN 函式:
ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
- 以多邊形為準:對於複雜的自訂形狀 (例如銷售區域),使用者無法輕鬆輸入幾何文字。請改為在 BigQuery 中建立對照表,內含形狀幾何和易記名稱 (例如「Zone A」)。在 Looker Studio 中建立文字參數
p_zone_name,讓使用者選取區域,並使用子查詢擷取ST_CONTAINS函式的幾何圖形。
- 以半徑為準:建立三個數值參數:p_latitude、p_longitude 和 p_radius_meters。座標可透過 Google 地圖平台 API 取得,包括地理編碼 API。在查詢中,將這些項目注入 ST_DWITHIN 函式:
貢獻者
- David Szajngarten | 開發人員關係工程師
- Henrik Valve | DevX 工程師