BigQuery 與 Data Studio 的經緯度資料分析
BigQuery 與 Data Studio 的經緯度資料分析

BigQuery 與 Data Studio 的經緯度資料分析

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

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

 本篇文將會透過 HTTP Request 的 log 當作解析出經緯度的資料為例,
完整介紹使用 BigQuery 串接 Data Studio,來分析地理資訊的方法。

以下是完整的 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 Viewer可以探索所有的 Http Request 記錄
將其中一筆 ip 記錄展開後,可以看到更詳細的記錄內容

匯出 log 到 BigQuery

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

使用者需要先在 BigQuery 當中預先建好資料集,作為接收器的目的地。

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

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

分析 ip 地址

轉換 ip 地址成經緯度資料

首先,我們先新增一台 GCP 的虛擬機

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

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

第二步,安裝 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 的方式進行轉換。

轉換好的經緯度的資料必須合併在一個欄位裡,且要依照先緯度後經度的順序排列(在範例程式中已經完成合併),因為這個地理資訊的欄位的格式必須符合 Data Studio 經緯度資料的格式要求

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

產生地理圖表

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

匯出資料到 Data Studio

在 BigQuery 儲存地理資訊的資料表中,按下匯出,可以直接進入 Data Studio 的畫面。
進入 Data Studio 介面,開始設定我們的地理圖表功能。

選擇圖表種類

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

設定好 Dimension 跟 Metric

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

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

2. Metric 設定為 Record count

Data Studio 會以經緯度地理資訊的數量去決定地圖中的圓圈大小

完成以上設定,就可以在 Data Studio 上面產生第一個 HTTP Request 地理位置分佈圖了!

全球的訪客位置分佈情形

台灣的訪客位置分佈情形

以上就是利用 BigQuery 跟 Data Studio 串接,分析經緯度資料方式的介紹,如果有任何問題,請在文章下方留言討論。

歡迎直接留言討論,若有進一步的開發需求,再與我們聯繫。

This image has an empty alt attribute; its file name is n8VWqwQBarDix7oKsPj91SHdJ2nzgEJdH3olhKjJrpnCyi1yGzxGgvMo7bmz1F_hyAOccusfFxdF2ujxBOd6sdqMU4O042LY1pEN0HJHJVgGeMnRxaizdD41jZEGT3kTlkLLm315

Chao Joshua

為Cloud Ace解決方案架構師。熟悉GCP雲端服務,並著力於大數據分析方法及數據管道研究。提供企業雲端架構諮詢與技術支援。

發佈留言