總覽

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

步驟 2:導入動態參數
如要讓報表具備互動性,我們會在報表中加入控制項,讓使用者從下列選項中選取:
- 地區:控制報表著重的城市。
- 星期幾:根據地點的營業日篩選,並運用結構化資料中的
regular_opening_hours記錄。 - 一天中的時間:根據
start_time和end_time欄位比較,篩選營業時間內的場所。
如要達成這個目標,您需要在執行階段將使用者選取的參數直接傳遞至修改後的 Places Insights 查詢。在 Google 數據分析的資料來源編輯器中,您必須將這些參數明確定義為已輸入的變數。
在數據分析中選取「資源」選單,然後按一下「管理已新增的資料來源」。在隨即顯示的面板中,選取先前新增的 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 洞察資料」一文。 - 互動式地點選取:新增
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 中建立含有形狀幾何圖形和易記名稱 (例如「區域 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 工程師