[數據分析#68] 用 BigQuery 裡的 Google Analytics Data Mart 來實作大數據專案:4 大步驟從取數到分析

重要提醒: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 資料,兩種方法都可以對流量的資料進行分析,那我們就比較一下兩者的不同,以及優缺點吧!

  1. BigQuery 裡面串接 Google Analytics 資料再進行分析:
    1. BigQuery 提供了更大的彈性跟自由度:包括讓我們能夠用 SQL 語言自由運算外,還可以跟其他資料庫 (例如 CRM 資料庫) 一起 JOIN 一起分析。或者是用 BigQuery 裡面的資料科學 (Machine Learning Model) 來計算可能會流失的用戶等等
    2. 但上面描述的這些功能,需要比較進階的數據處理能力 (SQL),同時也要對資料表 (data mart) 的結構跟儲存方式很了解,才能夠撈出合適的數據或是成功寫出模型
  2. 透過 Google Analytics 4 進行分析:
    1. 固定的數據報表及探索報表的功能:GA4 有提供 4 大固定報表外,也有資料視覺化的報表功能,可以讓用戶自己設定和查看分析報告
    2. 只是,僅限 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 裡面找到你需要分析的維度

延伸參考:GA4 資料欄位GA4 範例資料集

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 的資料:
    1. 方法一:單取一天
    2. 方法二:用 union 取多天
    3. 方法三:取每一天 (神奇功能,只要在 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_*`

步驟二:處理重要的日期維度

  • 處理日期問題:
    1. 預設的日期是文字,所以我們要轉換一下好使用,畢竟「時間」是 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)
    1. 範例一:訪問網站日期、來自哪個渠道 (medium) 的用戶數量
    2. 範例二:訪問網站不同類別 (content_group) 的用戶數量
    3. 範例三:做了不同行動 (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)
    1. 範例一:設定特定情境下的頁面瀏覽量
--範例一:設定特定情境下的頁面瀏覽量

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 的流量分析,整合成專案作品,讓大家可以應徵「相關職缺」!

【1 對 1 免費諮詢】數據分析師 0~1 培訓班陪你一路到轉職成功!

hi 我是 Lisa

你也是 0 經驗、沒有相關背景,但也想要轉職數據分析師,或運用數據分析,提升在領域的專業度嗎?

-

你是否也覺得,數據分析的網路學習資源很多,但是多到不知道從哪裡開始?

學了很多工具,但學完了,問題才真正開始,不知道業界怎麼使用?又該如何面臨工作跟面試?

-

我在 2019 年從營運專員的職位轉職到數據分析師

在這之後,因為數據分析,也讓我快速建構不同領域的知識:行銷、營運、商業策略、產品、網頁

轉職過程中,花了很多時間成本摸索

我發現,學數據分析最快的方式是:

  1. 確認自己跟市場需求之間的差距:訂定轉職策略及了解數據分析師的工作方式
  2. 以業界應用的角度學習工具:包括數據工具及分析用思維架構,並且如何高效運用
  3. 建立一個商業上的真實專案,並且得到回饋:打造屬於你及貼合職缺需求的作品集和專案
  4. 打造一個高效履歷跟面談:透過高價值包裝術拿下面試、成功獲得數據行業的門票

當初如果我有這套系統思維,應該可以在短時間內轉職,馬上拿到進入業界的門票

-

現在,我想把這套完整課程分享給你

這是專門為了 0 經驗、沒有相關背景的轉職者所設計

不需要去考研究所、不需要花大錢準備出國讀書

可以用最快的時間準備轉職、拿到門票!

-

如果你正在準備轉職數據分析師,且試圖找過解決辦法卻始終治標不治本!歡迎跟我預約免費 1 對 1 諮詢,我會在諮詢時,了解你的需求並且評估我是否可以協助到你!

電子書 職場人必學的數據分析術

Lisa Wu

Hi 大家好!我是喜歡探索身心靈健康及平衡的數據分析師 Lisa Wu!這個網站會幫助你:利用數據分析 (理性) 及 身心靈平衡 (感性) 的系統,去達成人生目標!如果你對我的人生系統工具有興趣,歡迎聯繫我:couplehonest@gmail.com

This Post Has One Comment

Comments are closed.