BigQuery 與 Looker Studio(原 Google Data Studio)的經緯度資料分析

BigQuery 與 Looker Studio(原 Google Data Studio)的經緯度資料分析

許多有使用 Google Load Balancer 的客戶,對於 HTTP Request 的 log 應該都不陌生。透過 Cloud logging 的記錄功能 ,我們可以觀察網站訪客的相關資訊,例如:user agent、造訪時間、protocol、IP 地址等等。

而訪客的地理位置資訊,往往得透過 IP 地址來進行分析 ,使用者才能進一步去了解網站訪客的地理位置分佈情形,這篇文章將會透過 HTTP Request 的 log 當作解析出經緯度的資料為例,來介紹如何使用 BigQuery 串接 Looker Studio,分析地理資訊的方法。

本篇文將會透過 HTTP Request 的 log 當作解析出經緯度的資料為例, 完整介紹使用 BigQuery 串接 Looker Studio,來分析地理資訊的方法。 以下是完整的 HTTP Request log 地理位置資訊分析的架構圖:

HTTP Request log 地理位置資訊分析的架構圖

收集 HTTP Request log

當 client 從 internet 拜訪網站,後端的 server 接收到流量後,Load Balancing 會自動將 HTTP Request 的 log 記錄到 Cloud Logging(如何開啟 HTTP Load Balancing logging 功能) ,使用者可以在 GCP console 的 Logs Viewer 查看記錄,若要進行大量資料分析時,資料就需要匯出到 BigQuery 做進一步的資料探索。

匯出 log 到 BigQuery

下一步,把 HTTP Request 從 Log Viewer 匯入 BigQuery。透過建立接收器(sink)的方式,讓 Load Balancing 在接收到新的訪問時,接收器就會將 log 傳送到指定的 BigQuery 資料集儲存。

匯出 log 到 BigQuery_操作圖
使用者需要先在 BigQuery 當中預先建好資料集,作為接收器的目的地
圖片來源:GCP 主控台|©2022 Google

在接收器收到資料後, BigQuery 就會產生一個資料表來儲存 log 記錄,使用者就可以透過 BigQuery 的 SQL 語法,對資料表當中的內容進行分析。

不過,做到這裡,我們還沒有辦法直接把 HTTP Request 的資料做地理位置的分析,原因是,我們的 ip 地址資料還沒有經過轉換,所以我們要透過 GCP 外部的工具解析資料。

分析 ip 地址

轉換 ip 地址成經緯度資料
轉換 ip 地址成經緯度資料
圖片來源:ipstack|© Copyright 2022 ipstack. All Rights Reserved.

新增一台 GCP 的虛擬機

在裡面可以安裝使用者所偏好的程式語言,接著再從 BigQuery 當中把 log 資料取出進行解析。執行分析程式前,我們需要先安裝好 BigQuery API Client Library,以便程式可以直接從 BigQuery 存取資料。接著,可以使用地理資訊轉換的第三方工具(如:ipstack API)讓程式將匯入的 ip 資料進行轉換。

使用 ipstack API 前,需要到官網進行註冊以取得 API Access Key。(可申請免費用量作為測試使用)

去ipstack官網進行註冊,取得 API Access Key
去ipstack官網進行註冊,取得 API Access Key
圖片來源:ipstack|© Copyright 2022 ipstack. All Rights Reserved.

安裝 ipstack 的 library

如何使用 library 可參考說明文件

pip install ipstack

執行 Python 程式呼叫 API

在這一步,我們要將 ip 地址送出給 API 做解析並取得經緯度資料。   

from ipstack import GeoLookup     
geo_lookup = GeoLookup("你的 API KEY") 
def parsing(ip_address):     
    location = geo_lookup.get_location(ip_address)             
    lat_long = str(location["latitude"])+","+ \ 
    str(location["longitude"])     
    return lat_long

當程式將 ip 地址的資料傳送給 API,API 就會將 ip 相對應的地理資訊回傳給程式。在範例程式中,API 會回傳的是一個 json 格式的資料,為了取出經緯度,我在程式中已經指定 API 只回傳整理好的經緯度資料。

lat_long = str(location["latitude"])+","+ \ str(location["longitude"]) 
return lat_long

取得經緯度的資料,目的是為了在地理圖表當中進行定位分析。所以需要經過呼叫 API 的方式進行轉換。轉換好的經緯度的資料必須合併在一個欄位裡,且要依照先緯度後經度的順序排列(在範例程式中已完成合併),因為這個地理資訊的欄位的格式必須符合 Looker Studio 經緯度資料的格式要求

最後,把資料從 VM 透過程式傳回 BigQuery(同樣使用 BigQuery 的 Client Library 回傳)產生出一個擁有經緯度資料的新資料表。

將IP轉換為經緯度
將IP轉換為經緯度
圖片來源:GCP 主控台|©2022 Google

產生地理圖表

如果想要把 BigQuery 的地理資料進行視覺化,我們可搭配 Google 的視覺化報表產生工具 Looker Studio 來完成。因為已經有轉換好的經緯度資料,所以只要將資料設定成 Looker Studio 可辨識的欄位型態及統計條件,就可以在在地理圖表(Geo Chart)上看到訪客的地理位置分佈情況。

匯出資料到 Data Studio

選擇圖表種類

從 Chart 選擇泡泡地圖,可利用地圖中圓圈的大小以及數量呈現地理位置的分佈情形。

Data Studio 使用教學圖
選擇圖表種類
圖片來源:Looker Studio 主控台|©2022 Google

設定好 Dimension 跟 Metric

Dimension 設定成經緯度的欄位名稱

將經緯度合併欄位設為 Dimension ,欄位性質修改成緯度、經度,以便 Looker Studio 辨識。可參照下圖修改:

欄位性質修改成緯度、經度
欄位性質修改成緯度、經度
圖片來源:Looker Studio 主控台|©2022 Google

Metric 設定為 Record count

Looker Studio 會以經緯度地理資訊的數量去決定地圖中的圓圈大小,完成以上設定,就可以在 Looker Studio 上面產生第一個 HTTP Request 地理位置分佈圖了!

以上就是利用 BigQuery 跟 Looker Studio 串接並分析經緯度資料方式的介紹。如果有任何問題,請在文章下方留言討論。而若有進一步的開發需求,歡迎直接與我們聯繫

發佈留言