我自己有在經營一個電商網站,平常會透過各種數位行銷工具做追蹤,也會搭配廣告投放來引流。
實務上,我們很常會看一些常見指標,例如「使用者數」、「跳出率」、「平均停留時間」,來判斷不同活動或流量來源的表現。但你可能也跟我一樣有遇過這種狀況:數字看起來哪裡怪怪的,加起來好像不太對。
像是明明三天加總下來,使用者應該是 5 人,但報表卻出現 7?或者平均停留時間看起來很高,實際上根本沒人待那麼久?
這些狀況,其實都跟「資料的可加性(Additivity)」脫不了關係。
文章目錄
電商數據分析常見問題:什麼是資料可加性?
可加性指的是一個指標能不能在不同維度(例如時間、地區、裝置類型等)下被加總。
這個概念在資料倉儲建模與 BI 報表中非常重要,否則你一個 group by + sum,就可能得出完全錯誤的結論。
常見分類如下:
可加性類型 | 說明 | 例子 |
---|---|---|
Fully Additive | 可以在任何維度上加總 | 銷售金額、事件數量 |
Semi-Additive | 可以在某些維度加總,但不能跨時間 | 帳戶餘額、庫存量 |
Non-Additive | 不能在任何維度直接加總 | 使用者數、跳出率、轉換率 |
經營電商時容易忽略的 GA4 報表陷阱:指標不可加性
以下是幾個實際遇到過的例子,當你使用 GA,例如 使用者數膨脹
在 BigQuery 中正確計算 GA4 使用者數:避免數據膨脹
👉 解法: 使用能夠辨識使用者的欄位做計算
COUNT(DISTINCT CONCAT(user_id, "-", CAST(ga_session_id AS STRING))) AS users
使用 GA4 API 提取指標時,如何避免誤差?
👉 解法 : 固定時間與維度,就不會出錯,例如按照 Month or Week 做分組。
👉 進階解法: 將 user_id 與 device_id (user_pseudo_id) 與 session_id 塞到自訂維度,使用數據時再做去重複。 使用此法請遵守 GA4 隱私規範
為什麼 GA4 報表數據加總會失真?關鍵在「資料顆粒度」
上述兩種做法分別是使用 Raw Data (BQ) 以及 Aggregation (API) 過的資料。
所以可以發現,關鍵差異在,你手上的資料顆粒度,例如 GA4 API 不給你 user_id 與 device_id 的話,那你必須固定維度與時間,才不會算出奇怪的數字,因為:
- 一個使用者上線兩個小時,Group by Hour 後,再加總就會被記為兩個使用者。
- 一個使用者連續從兩個不同的流量來源進來,Group by source,加總後會被計入兩個使用者。
- 三天內同一個使用者多次回訪,如果直接把每天的使用者數相加,就會膨脹成不正確的「總使用者數」為三。
更多電商場景下的數據陷阱範例:看似合理的加總,其實是誤導
我們再透過觀察一些有趣的例子,來理解這樣的現象。
例如,帳戶餘額,若直接將每日餘額做加總 (1,000+800+1,200),會得出總餘額 3,000 的錯誤數字。
日期 | 客戶ID | 帳戶餘額 |
---|---|---|
2025-03-01 | 001 | 1,000 |
2025-03-02 | 001 | 800 |
2025-03-03 | 001 | 1,200 |
可加性清單
指標名稱 | 可加性分類 | 是否可跨時間加總 | 是否可跨其他維度加總 | 設計建議 |
使用者數(Users) | Non-Additive | ❌ | ❌ | 使用 COUNT(DISTINCT user_id),避免 group by 多維度重複計算 |
銷售金額(Revenue) | Fully Additive | ✅ | ✅ | 可直接使用 SUM 聚合 |
帳戶餘額(Account Balance) | Semi-Additive | ❌ | ✅ | 可做單日彙總,避免跨日加總,建議用 MAX 或 AVG |
轉換率(Conversion Rate) | Non-Additive | ❌ | ❌ | 應以 numerator/denominator 計算,不可直接加總 |
庫存數量(Inventory) | Semi-Additive | ❌ | ✅ | 僅在特定時間點快照使用,不應跨時間加總 |
事件數(Event Count) | Fully Additive | ✅ | ✅ | 可依各維度直接聚合 |
活躍用戶率(Active User Rate) | Non-Additive | ❌ | ❌ | 用每日活躍使用者 / 每日總使用者計算,避免直接平均比例 |
平均停留時間(Avg. Session Duration) | Non-Additive | ❌ | ❌ | 使用加權平均(總停留秒數 / 總工作階段數),不可對每日平均再加總 |
每日用戶互動次數(Avg. Interactions per User per Day) | Semi-Additive | ⚠️(限每日平均) | ✅ | 每日先算平均,再與其他維度加總彙總,避免直接跨日平均 |
互動工作階段(Engaged Sessions) | Fully Additive | ✅ | ✅ | 可直接 COUNT 或 SUM 數量(符合定義的互動工作階段) |
跳出率(Bounce Rate) | Non-Additive | ❌ | ❌ | 計算跳出次數 / 工作階段總數,不可將各日跳出率相加 |
結語:經營電商品牌該如何避免 GA4 數據錯誤?
以上是在計算數據時真實遇到的坑,當時跟分析師一起,花了許多時間 debug,在此分享給大家參考。