重要提醒:GA 已經停用,2023/7/1 後,GA4 已經正式上線,從原本是 session level,演變成 event level!今天的案例會先以 GA 為主,之後會更新 GA4 的案例!
(因為還是很多公司仍舊需要處理 2023/7/1 之前的 GA 資料 XD)
大數據的意思是什麼?有數據就叫大嗎?
紀錄網路上的一舉一動:全都記載有夠大
在網絡時代,我們在網路上的各種足跡都被一一記載,像是瀏覽網頁、點擊廣告、購買商品等,都會產生數據。這些數據非常龐大,因為是由數億個人每天不斷產生的!
舉個例子來說,想像一下你在網路上滑動滑鼠的過程:每次點擊、滾動、移動,都被記錄下來,成為一筆數據。這些數據可以告訴網站經營者,你對內容的興趣、喜好和瀏覽習慣。藉由分析這些數據,網站經營者可以提供更個性化的體驗,例如推薦你可能感興趣的商品或文章。
但是!大數據也帶來了挑戰。首先,處理如此龐大的數據,需要強大的計算能力跟技術支持。
總結來說,大數據是指由於網絡時代產生的龐大數據量。這些數據能夠提供有價值的信息,幫助企業做出更好的決策。然而,我們也要注意解決大數據帶來的挑戰,包括處理能力。
所以「處理能力」,就是數據分析師的課題了!
BigQuery 是什麼?Google Analytics Data Mart 是什麼?
BigQuery:善於存大數據的雲端資料庫
BigQuery 背後有個關鍵點 (基本架構),導致他很適合處理所謂的「大數據 (或是我們叫巨量資料也可以)!
這個關鍵點就是分散式儲存系統:BigQuery 受到 Hadoop 的啟發,以 columnar storage format 儲存,BigQuery 不是像傳統的資料庫一樣,Columnar Storage:數據以欄 (column) 的方式存儲,而非 row。這個方式讓我們在計算欄位的時候,變得更有效率!
(聽不太懂沒關係,只要先知道他的運算方式很適合處理巨量資料)
BigQuery 是一個強大的雲端資料庫服務,專門用於處理大數據。它能夠快速、高效地存儲和分析龐大的數據集。想像一下,現在的世界每天都在產生大量的數據,像是網絡交易、社交媒體互動、感測器數據等等。這些數據需要被儲存和管理,同時還需要進行分析,以獲取有價值的洞察和資訊,這就是 BigQuery 發揮作用的地方!
BigQuery 能夠處理數據量龐大的任務,而且速度非常快。它使用了分散式計算技術,節省了大量的時間。此外,BigQuery 還提供了簡單易用的查詢語言,讓使用者能夠輕鬆的對數據進行分析和提取所需的數據訊息~
BigQuery Google Analytics Data Mart:比 GA 介面多更多資訊的地方
不論在 GA、GA4 (Google Analytics 4) 或是 BigQuery 裡面串接 Google Analytics 資料,兩種方法都可以對流量的資料進行分析,那我們就比較一下兩者的不同,以及優缺點吧!
- BigQuery 裡面串接 Google Analytics 資料再進行分析:
- BigQuery 提供了更大的彈性跟自由度:包括讓我們能夠用 SQL 語言自由運算外,還可以跟其他資料庫 (例如 CRM 資料庫) 一起 JOIN 一起分析。或者是用 BigQuery 裡面的資料科學 (Machine Learning Model) 來計算可能會流失的用戶等等
- 但上面描述的這些功能,需要比較進階的數據處理能力 (SQL),同時也要對資料表 (data mart) 的結構跟儲存方式很了解,才能夠撈出合適的數據或是成功寫出模型
- 透過 Google Analytics 4 進行分析:
- 固定的數據報表及探索報表的功能:GA4 有提供 4 大固定報表外,也有資料視覺化的報表功能,可以讓用戶自己設定和查看分析報告
- 只是,僅限 GA4 的流量數據,沒有辦法串接其他公司所擁有的資料
所以,總結來說,如果純粹是分析網站流量資料,可以使用 GA4 的自訂報表拉資料。但如果想要跨資料庫或是自己做一些運算模型,就一定得串接 Google BigQuery 才能用!
現在,Google BigQuery 也有免費版本可以串接你自己的 GA4,當然也有範例資料集,讓一般人可以試著自學~
實作前的設定:BigQuery 免費沙盒功能開啟
無論你現在想要串接自己的 GA4 資料,還是想要用 Google 提供的 GA4 範例資料集 (data mart),你都可以先開啟沙盒功能,沙盒功能就是免費版的意思!一天會有一些免費流量讓你可以試著用 BigQuery 來完成資料查找或是建置資料模型!
這邊有 3 分鐘完成 Google BigQuery 沙盒功能開啟的步驟:Google BigQuery 教學:3 分鐘完成資料匯入跟 SQL 查詢
先跟著我一起完成設定吧!
實作大數據專案集:先研究 Google Analytics 的指標跟維度
1. 步驟一:高達 100 種資料維度或是指標,哪些最常用?
這邊有 Google 官方給出的 GA「完成資料欄位」!可以直接來這裡用英文查找你想要的欄位名
最常用的可以分成以下幾個:
- 跟 user 相關的 id:clientid、visitorid、userid
- 時間:date
- 累積加總:totals,包括 hits、pageviewss 都是很常見的指標
- 其他想要追蹤的維度:例如說來源、活動設定等等的都可以在 traffic source 或是在 hits 裡面找到你需要分析的維度
2. 步驟二:處理比 session 更小的資料維度
從剛剛的官方文件裡,我們也有看到,這個資料表的紀錄是以每一個 session 為單位,所以一個 row,就是一個 session (Each row within a table corresponds to a session in Analytics 360)
在Google Analytics 中,有個很好分析的維度:hits,他代表一個互動事件或數據點,其中包含了關於使用者互動的訊息!
Hits 可以分為以下幾種類型:
- Pageviews:當使用者訪問網頁,會產生一個 pageview 的 hit
- Events:Hit 裡面的 evevt 表示使用者在網站上執行的特定互動,例如點擊按鈕、下載文件、播放等等
- E-commerce:Hit 也用來追蹤電子商務交易相關的數據,例如產品點擊、加入購物車、購買等等!在電商很好用的~
Session 是使用者在特定時間內與網站進行「一系列互動的單位」。紀錄使用者在一定時間內 ( Default 為 30 分鐘) 的互動,關閉網頁的話會停止計算。
Session 中,涵蓋了在這段時間內發生的多個 Hits。例如:這段時間瀏覽多個網頁、做了很多行動 (事件)。
總結來說,Hits 是單個數據點或互動事件,Session 是使用者在一定時間內的一系列相關互動的集合!
實作大數據專案集:從取數到分析
現在直接進到 BigQuery 裡面來取數跟分析!
步驟一:串起每天的資料
- 如何取得每天 Google Analytics 的資料:
- 方法一:單取一天
- 方法二:用 union 取多天
- 方法三:取每一天 (神奇功能,只要在 ga_sessions 後面加上「*」就可以「全選」!
--方法一:單取一天
SELECT *
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`
--方法二:用 union 取多天
SELECT *
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`
UNION ALL
SELECT *
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170731`
--方法三:取每一天
SELECT *
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
步驟二:處理重要的日期維度
- 處理日期問題:
- 預設的日期是文字,所以我們要轉換一下好使用,畢竟「時間」是 GA4 裡面最重要的資訊之一
--方法:利用 CTE 來儲存我們轉換過後的形式
WITH ga_data AS (
SELECT PARSE_DATE('%Y%m%d', date) AS grass_date
, *
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
)
SELECT *
FROM ga_data
WHERE 1=1 AND grass_date = '2017-07-31'
步驟三:分析用戶的行為
- 與用戶相關的資料分析議題 (Users)
- 範例一:訪問網站日期、來自哪個渠道 (medium) 的用戶數量
- 範例二:訪問網站不同類別 (content_group) 的用戶數量
- 範例三:做了不同行動 (action) 的用戶數量
--範例一:訪問網站日期、來自哪個渠道的用戶數量
Select
PARSE_DATE('%Y%m%d', date) AS grass_date
, trafficSource.medium
, Count (Distinct fullVisitorId) as unique_user
from
`bigquery-public-data.google_analytics_sample.ga_sessions_20170801` , UNNEST(hits) AS hits
group by 1,2
--範例二:訪問網站不同類別 (content_group) 的用戶數量
Select
PARSE_DATE('%Y%m%d', date) AS grass_date
, hits.contentGroup.contentGroup2
, Count (Distinct fullVisitorId) as unique_user
from
`bigquery-public-data.google_analytics_sample.ga_sessions_20170801` , UNNEST(hits) AS hits
group by 1,2
--範例三:做了不同行動 (action) 的用戶數量
Select
PARSE_DATE('%Y%m%d', date) AS grass_date
, CASE WHEN hits.eCommerceAction.action_type = "2" THEN 'product_view'
WHEN hits.eCommerceAction.action_type = "3" THEN 'add_to_cart'
WHEN hits.eCommerceAction.action_type = "4" THEN 'remove_from_cart'
WHEN hits.eCommerceAction.action_type = "5" THEN 'checkout'
WHEN hits.eCommerceAction.action_type = "6" THEN 'purchase'
ELSE NUll end as action_type
, Count (Distinct fullVisitorId) as unique_user
from
`bigquery-public-data.google_analytics_sample.ga_sessions_20170801` , UNNEST(hits) AS hits
group by 1,2
步驟四:分析瀏覽的行為
- 不同狀況下的頁面瀏覽量 (page_view)
- 範例一:設定特定情境下的頁面瀏覽量
--範例一:設定特定情境下的頁面瀏覽量
Select
PARSE_DATE('%Y%m%d', date) AS grass_date
, sum(Case when hits.type = 'PAGE' and contentGroup.contentGroup2 = 'Brands' then 1 else 0 END) as brand_pageview
from `bigquery-public-data.google_analytics_sample.ga_sessions_20170801` , UNNEST(hits) AS hits
group by 1
結論:練習巨量資料,Google Analytics 是個好開始
Google Analytics 的資料,基本上算得上巨量資料,因為它記錄的資料很細,而且也包含進階資料處理 (array 的應用)。
GA4 的介面可以練習視覺化報表,GCP 提供的 BigQuery 可以以 SQL 語法練習巨量資料的維度理解跟處理!
他對於之後實際要在工作中做數據分析,是一個很常見又落地的案例!因此寫了幾個從基本取數到分析的案例 (範例 code) 給大家!
新上線的 GA4,之後也會再更新從基本取數到分析的案例 (範例 code) 給大家~
Lisa 的【STEP 數據分析師轉職培訓班】中,也會把 GA 的流量分析,整合成專案作品,讓大家可以應徵「相關職缺」!
Pingback: [數據分析#0] 數據分析文章導覽 (69 篇,持續更新中) - Lisa Wu 理紗豆苗工作室