為什麼要把 BigQuery 查詢結果接到 Looker Studio?
把 BigQuery 查詢結果接到 Looker Studio,核心目的在於突破 GA4 免費版 API 配額限制,並取得事件層級原始資料。Looker Studio 直連 GA4 時,報表每次重新整理都會消耗 GA4 API 請求次數,當配額用罄,報表就會出現逾時或無法更新。改以 BigQuery 作為中介,等於把資料查詢與報表呈現兩件事徹底分開,由 BigQuery 承擔資料運算,Looker Studio 只負責視覺化,不受 GA4 配額限制。
GA4 匯出到 BigQuery 的資料,是未經採樣的事件層級原始資料,這與 GA4 後臺看到的聚合資料有本質差異。從量測品質的角度來看,原始資料保留了更完整的分析彈性,例如你可以自訂事件參數、重新計算工作階段、或者把 GA4 資料與其他資料來源做關聯分析。此外,GA4 預設的資料保留期限有限,而 BigQuery 可以長期保存原始事件資料,讓歷史趨勢分析不受平臺保留政策限制。不過要特別留意,永久保存不等於免費保存,BigQuery 的儲存費用會隨資料量持續累積,這是架構設計階段就必須納入考量的成本因素。
以常見的使用情境來說,當你發現 GA4 後臺的報表出現採樣標記,或者 Looker Studio 直連 GA4 的報表在月初或月底特別容易逾時,這就是需要改用 BigQuery 串接的訊號。透過 BigQuery 承接原始資料,後續無論是建立自訂報表、執行進階分析,或整合其他資料源,都具備更高的自主性。
串接前的準備:BigQuery 專案與資料表確認
在進入 Looker Studio 操作前,先確認 GA4 與 BigQuery 之間的匯出管線已經正常運作。這不只是「有串接就好」,而是需要確認資料有持續匯入、表結構符合預期、權限設定正確,才能避免報表建立後才發現資料缺漏或無法讀取的問題。
確認 GA4 已連結 BigQuery 並完成匯出
GA4 與 BigQuery 的連結是在 GA4 管理介面的「BigQuery 連結」中設定。確認的重點有兩個:第一,連結狀態是否顯示為啟用;第二,BigQuery 資料集中是否持續出現新的日期分區表。GA4 匯出是每日批次執行,通常會在隔日完成前一天資料的匯出,因此你可以從資料集中是否存在昨天的 events_YYYYMMDD 資料表來判斷匯出管線是否正常。若發現某天資料表遺漏,優先檢查 GA4 管理介面的連結狀態,以及 GCP 專案是否出現權限變更或服務停用等狀態。
確認 GCP 專案 ID 與資料表命名規則
BigQuery 的資料表命名規則有兩種:每日匯出的 events_YYYYMMDD,以及同日多次匯出的 events_intraday_YYYYMMDD。前者是每日一次的批次匯出,後者則是當日多次寫入的暫存表,通常會在隔日整併為完整的日期表。在 Looker Studio 建立資料來源時,你必須正確選擇 GCP 專案 ID、資料集名稱與資料表名稱,任何一層弄錯都會導致報表無法取得資料。
實務上,建議先到 BigQuery 主控臺確認資料表是否確實存在,並預覽前幾筆資料,確認欄位名稱與資料型別符合預期。另外,需要確認你的 Google 帳號具備 BigQuery 資料檢視者角色,這個權限層級足以讀取資料表內容與結構。若權限不足,Looker Studio 在授權連接後會顯示「無法存取資源」或類似錯誤訊息。
在 Looker Studio 新增 BigQuery 資料來源的完整步驟
操作流程本身並不複雜,但步驟順序與模式選擇會直接影響後續的查詢效率與費用。基本流程是:開啟 Looker Studio → 建立報表 → 新增資料來源 → 選擇 BigQuery → 授權 Google 帳戶 → 選擇專案、資料集與資料表 → 完成連線。
關鍵的選擇點在於,你要用「資料表模式」還是「自訂查詢模式」來建立資料來源。兩種模式的差異如下:
資料表模式:直接選表適用的情境
資料表模式就是直接從資料集中挑選一張資料表作為資料來源。操作上最直覺,選定後 Looker Studio 會自動帶入所有欄位。這個模式的優點是設定快速、欄位完整,適合探索階段或資料量較小的報表。但實際上,GA4 的事件資料表動輒數百萬甚至數千萬筆記錄,若整張表直接作為資料來源,每次報表重新整理都會觸發全表掃描,這對查詢費用與效能都是負擔。
因此,資料表模式比較適合以下情境:資料量仍在可接受範圍、報表使用頻率低、或者你會在 Looker Studio 層級設定日期範圍篩選器來控制查詢量。但即便加了日期篩選器,Looker Studio 對 BigQuery 發出的查詢仍有機會掃描到超出預期的分區,這取決於報表元件的資料請求方式。
自訂查詢模式:用 SQL 控制匯入欄位與掃描量
自訂查詢模式則是在建立資料來源時直接撰寫 SQL,只取出報表需要的欄位與日期範圍。例如,你可以寫一個查詢,只選取 event_date、event_name、device_category、traffic_source 等欄位,並限定 event_date 為最近 28 天。這樣一來,Looker Studio 後續對 BigQuery 的查詢就會以這組 SQL 的結果為基礎,大幅降低掃描量與費用。
自訂查詢模式適合的使用情境,包括已明確知道報表需要哪些維度與指標、需要預先處理巢狀欄位(例如 event_params)、或者想透過 SQL 完成資料清潔與正規化。這個模式的缺點是,你必須具備基本的 SQL 能力,且若原始資料表結構有調整,查詢可能需要同步修改。
以量測流程的角度來看,自訂查詢模式比較能確保資料管線的穩定性。因為你可以預先定義好欄位的資料型別、排除不需要的事件類型、或者把 event_params 中的關鍵參數展開成獨立欄位,讓 Looker Studio 的欄位選擇更直觀。
直連 GA4 vs 經 BigQuery 串接 Looker Studio 的資料差異
瞭解兩者在資料本質上的差異,能幫助你在架構設計時做出正確選擇。以下從資料層級、採樣行為、使用者識別與延遲等面向進行比較。
資料層級與採樣行為差異
直連 GA4 時,Looker Studio 取得的資料是 GA4 API 回傳的聚合結果,也就是說資料已經過 GA4 的處理,你只能取得 GA4 定義好的維度與指標組合。當資料量超過一定門檻,GA4 還會啟動採樣機制,導致報表數字與實際行為之間存在誤差。
經由 BigQuery 串接,你取得的是每個事件一筆記錄的原始資料。所有參數、使用者屬性或自訂維度都以結構化欄位或巢狀欄位的形式存在。你可以透過 SQL 自行聚合、篩選與運算,不受 GA4 採樣機制影響。也就是說,只要你的 SQL 沒有寫錯,查詢結果就是基於全部事件的精確計算。
Google Signals 與延遲對數字一致性的影響
需要特別注意的是,Google Signals 相關的跨裝置使用者資料不會匯入 BigQuery。GA4 後臺的使用者數,在啟用 Google Signals 後會包含 Google 跨裝置 ID 辨識後的結果,而 BigQuery 中的 user_pseudo_id 是末次 Cookie 或裝置 ID,兩者計算邏輯不同。這也會導致你從 BigQuery 查詢出的使用者數與 GA4 後臺不一致,且這種差異在啟用 Google Signals 後會更明顯。
延遲方面,GA4 匯出到 BigQuery 的當日事件表有約 24 至 48 小時的延遲時間,且此為概估值,實際時間會依系統負載而變動。如果你在報表中混用 GA4 後臺即時資料與 BigQuery 資料,兩者在「昨天以前」的數據可能一致,但「今天」的數據就無法比較。下表整理了兩條管線的常見差異:
| 比較項目 | 直連 GA4 | 經 BigQuery 串接 |
|---|---|---|
| 資料層級 | 聚合資料,僅能使用 GA4 預定義的維度與指標 | 事件層級原始資料,可使用所有事件參數與自訂維度 |
| 採樣行為 | 資料量超過門檻時可能觸發採樣,數字會按比例推算 | 無採樣,查詢結果以全部事件為基礎計算 |
| 配額限制 | 受 GA4 API 每日請求數上限影響,報表頻繁更新可能逾時 | 不受 GA4 API 配額限制,由 BigQuery 配額與費用決定 |
| 資料延遲 | 即時或近即時 | 當日事件約有 24 至 48 小時延遲(概估值) |
| Google Signals | 包含跨裝置使用者資料 | 不會匯入 Google Signals 相關資料 |
| 費用 | 無額外查詢費用 | 按儲存與查詢掃描量計費,未設定過濾條件可能產生顯著成本 |
在數位分析領域,事件層級原始資料與聚合資料之間的張力一直都存在。GA4 後臺看的是「平臺定義好的視角」,而 BigQuery 給的是「你可以重新定義的視角」。若你已經具備 SQL 查詢能力,且需要更細緻的分析維度,BigQuery 是更可靠的資料來源。這意味著你需要接受短暫的延遲,換取更完整的資料控制權。
Looker Studio 連接 BigQuery 的省錢設定與費用控管
費用控管是 BigQuery 串接中最容易被忽略的環節。BigQuery 計費分為儲存費用與查詢費用兩類:儲存費用是固定的,資料量越大越貴;查詢費用則按每一次查詢掃描的資料量計費。Looker Studio 每次報表元件重新整理或篩選條件變更,都可能觸發新的查詢,因此費用控管的核心策略,就是降低單次查詢的掃描量。
以下幾個設定是實務上最有效的控管方法:
第一,優先使用分區表。GA4 匯出的資料表名稱包含日期,這本身就是天然的日期分區欄位。在 SQL 查詢中,務必使用 event_date 做為過濾條件,讓 BigQuery 只掃描需要的日期分區,而不是整張資料表。若資料表累積了三年資料,但報表只需要看最近三十天,沒有日期過濾條件的查詢就可能掃描到全部三年資料。
第二,使用自訂查詢模式並限定欄位。只 SELECT 報表需要的欄位,避免取回 event_params 等大型巢狀欄位。整體而言,減少欄位數量就能降低掃描的資料量,這在 GA4 事件表特別重要,因為 event_params 內含所有事件的參數鍵值,資料量相當可觀。
第三,在報表層級設定預設日期範圍。Looker Studio 的報表可設定資料來源的預設日期範圍,建議設為「過去 28 天」或「過去 7 天」之類的滾動區間,讓使用者開啟報表時執行的查詢只掃描近期資料。另外,提醒使用者不要隨意將日期範圍拉到「無日期限制」,這會讓 BigQuery 掃描整個資料集。
第四,若要分析長期趨勢,可以先建立彙總表。例如先透過 SQL 將每日事件數彙總到獨立資料表,Looker Studio 再讀取這張彙總表。如此一來,報表查詢的掃描量就固定在彙總表大小,不會隨原始資料成長而增加。這作法比較適合固定式報表,省錢效果最明顯。
具體來說,如果你不確定自己的查詢會掃描多少資料,可以先在 BigQuery 主控臺跑一次相同的 SQL,畫面上會顯示「將處理的位元組數」。這個數值就是實際費用的大致依據,也可以作為費用估算的參考。日常監控方面,GCP 的帳單頁面與配額頁面都能查詢每日查詢量與費用趨勢。
常見問題排錯:為什麼 GA4 與 BigQuery 的數字對不起來?
GA4 後臺與 BigQuery 查詢結果出現差異,是架設資料管線時必定會遇到的問題。這個差異不一定是資料錯誤,更多時候是兩邊的計算邏輯與資料範圍本來就不同。理解差異的成因,才能判斷哪些情況可以接受,哪些需要深究。
最常見的差異來源,是 Google Signals 資料沒有匯入 BigQuery。GA4 後臺在計算使用者數時,若啟用 Google Signals,會納入已登入使用者的跨裝置 ID,把同一使用者在不同裝置上的行為合併計算。但 BigQuery 的匯出資料只包含 user_pseudo_id(以裝置或 Cookie 為基礎),所以從 BigQuery 查詢出來的使用者數會比 GA4 後臺少,這是預期內的差異。另外,當資料量涉及敏感類別時,GA4 會套用資料閾值來隱藏極小母體,這項機制在 BigQuery 匯出中不會反映,也可能造成極端差異。
要判斷差異是否在可接受範圍,建議用「總事件數」做為基準。事件數不像使用者數會受跨裝置 ID 合併影響,是相對穩定的指標。做法是:在 GA4 後臺設定與 BigQuery 查詢相同的日期區間,比較兩邊的總事件數。若事件數接近,代表匯出管線正常,使用者數差異多半源自於 Google Signals 或使用者識別機制的不同。若事件數也有落差,則需要進一步檢查日期欄位的時區設定、是否有未匯出的當日資料,以及查詢條件是否誤排除了某些事件。以資料驗證流程來看,這個反查方法可以在五分鐘內判斷問題主要出在哪一層,是資料匯出、查詢語法還是計算邏輯。
確認到這裡,你應該已經對 GA4 BigQuery 串接 Looker Studio 的完整流程、資料差異與成本控管方式有了清楚的理解。若要深入掌握 GA4 的原始事件資料分析,可以參考這篇 GA4 BigQuery 能做什麼?原始事件資料分析與報表差異。若在撰寫 SQL 時遇到欄位操作的疑問,這篇 GA4 BigQuery 資料表結構解析:欄位命名與三層架構 能幫助你理解欄位層級設計。若要處理較複雜的巢狀欄位查詢,則可以參考 GA4 BigQuery SQL 查詢:基礎語法與巢狀欄位處理實戰。
為什麼 Looker Studio 直連 GA4 的報表會突然顯示資料逾時或無法更新?
GA4 免費版有每日 API 配額限制。當報表頻繁刷新或單次查詢的資料量過大時,配額可能被耗盡,導致報表無法取得新資料,出現逾時或連線失敗的錯誤訊息。以 GA4 官方文件最新公告為準,免費版每日請求數有明確上限。改用 BigQuery 作為資料來源,就不會受到這項限制,因為查詢對象變成 BigQuery,消耗的是 BigQuery 的查詢配額。
在 Looker Studio 中連接 BigQuery,應該選「資料表模式」還是「自訂查詢模式」?
資料表模式適合直接取用整張資料表,操作簡單,但每次查詢都可能掃描全表,費用較高。自訂查詢模式可透過 SQL 限定需要的欄位與日期範圍,大幅降低掃描量與費用,適合已明確知道報表欄位需求的進階使用者。若你的報表需要處理 event_params 或事件層級分析,自訂查詢模式提供較高的控制力。
為什麼 GA4 後臺的使用者數和 BigQuery 查詢出來的數字對不起來?
可能原因包括 Google Signals 資料不會匯入 BigQuery、GA4 API 回傳的是聚合資料而 BigQuery 是事件層級原始資料、當日事件約有 24 至 48 小時延遲,以及採樣行為差異。建議先用總事件數反查落差比例。若事件數一致而使用者數有落差,多數情況來自於跨裝置使用者識別邏輯的差異,此為正常現象。
BigQuery 串接 Looker Studio 會產生費用嗎?
會。BigQuery 計費分儲存與查詢兩類,查詢按每次掃描的資料量計費。若未使用分區表、未在 SQL 中加入日期過濾條件,或誤用資料表模式直接選擇整個資料集,每次報表重新整理都可能掃描大量資料並產生顯著成本。建議使用自訂查詢搭配日期過濾,並設定報表預設日期範圍,將掃描量控制在必要範圍內。
GA4 匯出到 BigQuery 的資料包含所有 GA4 收集的資料嗎?
不完全包含。BigQuery 匯出的是事件層級原始資料,但與 Google Signals 關聯的跨裝置使用者資料不會匯入。此外,當日事件約有 24 至 48 小時延遲(此為概估值),因此「今天」的資料無法即時從 BigQuery 查得。實際操作上,部分維度例如使用者年齡與性別,也會因 Google Signals 未匯入而與 GA4 後臺顯示值有差異。
以官方文件、實際設定與量測結果整理 SEO 數據、網站追蹤與分析方法,並標示資料來源與判讀限制。