Places Insights 數據分析視覺化

總覽

工作流程圖:數據分析將城市、日期和時間的動態參數傳送至 BigQuery 的 Places Insights,生成地理空間密度熱視圖。

本文說明如何使用 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 間,該儲存格就會從結果集中完全省略,並在地圖上顯示為空白。

如要在數據分析中實作這項功能,請按照下列步驟操作:

  1. 建立新的空白報表。
  2. 選取「BigQuery」BigQuery做為資料連接器。
  3. 從左側選單中選擇「CUSTOM QUERY」(自訂查詢),然後選取帳單專案 ID。
  4. 將上方的靜態基本查詢貼到編輯器。
  5. 清除「Use Legacy SQL」(使用舊版 SQL)、「Enable date range」(啟用日期範圍) 和「Enable viewer email address」(啟用檢視者電子郵件地址) 參數。
  6. 按一下 [新增]。

1.2 設定地理空間視覺化

連結資料後,請設定數據分析,正確辨識 H3 邊界資料:

  1. 在「Add a chart」(新增圖表) 選單中,將「Filled Map」(填色地圖) 圖表新增至報表畫布。
  2. 請確認包含多邊形幾何圖形的 h3_geo 欄位已設為「地理空間」資料類型。
    1. 按一下連結名稱旁的「Edit data source」(編輯資料來源) (鉛筆) 圖示。
    2. 如果 h3_geo 設為「Text」(文字) (ABC),請使用下拉式選單依序選取「Geo」(地理) >「Geospatial」(地理空間),
    3. 按一下「完成」。
  3. 將 h3_index 欄位對應至「Location」 (做為專屬 ID)。
  4. 將 h3_geo 欄位對應至「Geospatial Field」(地理空間欄位) (做為多邊形幾何圖形)。
  5. 將 restaurant_count 欄位對應至「顏色指標」。

這會依 H3 單元格顯示餐廳密度地圖。深藍色 (預設顏色選項) 代表餐廳數量較多的儲存格。

倫敦的填色地圖,上面疊加六角形網格,深藍色儲存格代表餐廳集中度較高。圖例顯示密度計數介於 5 到 1,215 之間。

步驟 2:導入動態參數

為了讓報表具有互動性,我們會在報表中加入控制項,讓使用者從下列選項中選取:

  • 地區:控制報表著重的城市。
  • 星期幾:根據營業日篩選地點,使用結構定義中的 regular_opening_hours 記錄。
  • 時段:根據營業時間篩選地點,方法是比較 start_time 和 end_time 欄位。

為此,您會在執行階段,將使用者選取的參數直接傳遞至修改後的 Places Insights 查詢。在數據分析的資料來源編輯器中,您必須明確將這些參數定義為類型變數。

在數據分析中,選取「Resource」(資源) 選單,然後按一下「Manage added data sources」(管理已新增的資料來源)。在顯示的面板中,選取先前新增的 BigQuery 自訂 SQL 資料來源旁的 EDIT。

在「編輯連線」視窗中,選取「新增參數」。我們要新增三個參數,值如下。

參數名稱 資料類型 允許的值 值清單 (必須與資料庫完全相符)
p_locality 文字 值清單
值 標籤
London 倫敦
Manchester 曼徹斯特
Birmingham 伯明罕
Glasgow 格拉斯哥
p_day_of_week 文字 值清單
值 標籤
monday 星期一
tuesday 週二
wednesday 週三
thursday 週四
friday Friday (週五)
saturday Saturday (週六)
sunday 星期日
p_hour_of_day 文字 值清單
值 標籤
03:00:00 凌晨 3 點至 4 點
08:00:00 上午 8 點至 9 點
19:00:00 晚上 7 點至 8 點

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. 在報表中新增三個「下拉式選單」控制項。
  2. 針對每個控制項,將「控制項欄位」設為對應至新建立的參數:
    • 控制組 1:p_locality
    • 控制項 2:p_day_of_week
    • 控制項 3:p_hour_of_day

最終報表應如下所示。變更其中一個下拉式選單控制項的值,會觸發數據分析從 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 函式的幾何圖形。

貢獻者