← 返回部落格部落格

在 BigQuery 查詢分析原始資料

Hive Analytics · 2026年11月6日 · 閱讀約 5 分鐘

Hive Analytics 的事件原始資料,可以在 BigQuery 的 habq-storage 專案中直接以 SQL 查詢。由分析管理員在 BigQuery 存取權限管理 中依環境為 Google 帳戶申請查詢權限,並準備好執行 SQL 的 Google Cloud 專案即可。查詢時,請將以 UTC 儲存的 dateTime 轉換為 KST,依 checksum 去除重複資料,並以日期條件只查詢需要的分區。

運用原始資料驗證資料

收集遊戲事件後,必須確認用戶的行為是否在預期的時間點被記錄,以及分析所需的值是否完整包含。若查詢期間較長或需要同時套用多個條件,有時必須直接確認原始事件。

例如,若傳送的事件在分析中無法確認,就必須檢查該事件是否因未符合收集標準而儲存在隔離資料表中。若彙總數值高於預期,可以確認是否重複傳送了相同事件,也可以透過原始日誌查看特定期間、應用程式或國家是否反覆出現異常值。當商店結算金額與營收指標不一致時,則需要將大量購買日誌與結算資料比對,找出產生差異的範圍。

在 BigQuery 中,可以用 SQL 查詢這些情況所需的資料,並進行去除重複、時區轉換、屬性擷取等前處理。如此一來,就能具體確認僅憑畫面上顯示的結果難以得知的收集錯誤與彙總差異的原因。

Hive Analytics 的 BigQuery 查詢環境

Hive Analytics 提供可在 BigQuery 中直接查詢所收集事件資料的環境。從申請權限到執行 SQL 的流程如下。

  1. 準備 Google 帳戶
    準備用來存取 BigQuery 的 Gmail 或公司使用的 Google 帳戶。
  2. 申請權限
    由具備分析管理員權限的使用者,在帳戶選單的 BigQuery 存取權限管理 中登錄 Google 帳戶。權限只會套用到提出申請的分析控制台環境,因此若需要同時查詢正式與沙盒資料,請在各環境分別申請。申請後,請在申請記錄中確認等待、完成、拒絕等處理狀態。權限一般會立即授予,但若申請記錄處於等待狀態,最多可能需要 2 個工作天。
  3. 準備 Google Cloud 專案
    準備用來執行 SQL 的 Google Cloud 專案。若沒有 Google Cloud 帳單帳戶,可以設定 BigQuery 沙箱,在有限的免費範圍內開始使用。設定方法與限制事項請參閱 Google Cloud 的BigQuery 沙箱說明文件。
  4. 連接分析專案
    在 BigQuery 探索器中將 habq-storage 專案加入我的最愛。若看不到專案,請在 新增資料 中選擇依名稱為專案加上星號,並輸入 habq-storage。
  5. 確認資料集與表格
    展開專案,確認已獲得權限的資料集與事件表格。正式資料儲存在 habq-storage.analytics_N_live,沙盒資料儲存在 habq-storage.analytics_N_sandbox。資料集名稱中的 N 是各公司的識別值,探索器只會顯示可存取的資料集,因此不需要另外確認這個值。可查詢的表格種類、用途與主要欄位,請參閱 Hive Developers 的 BigQuery 表格。
  6. 執行 SQL
    執行 SQL 時,所選的 Google Cloud 專案中必須具有 BigQuery 工作使用者權限。以 BigQuery 沙箱建立的專案,可在免費使用量上限內無需額外設定權限即可查詢。選擇專案後,在 SQL 編輯器中執行查詢。

因業務變更或離職等原因,不再需要查詢原始資料的帳戶,請在分析的 BigQuery 存取權限管理 中申請收回權限。只保留需要的帳戶與環境,就能明確管理原始資料的存取範圍。

BigQuery 查詢權限的申請與收回、Google Cloud 專案準備的詳細步驟,請參閱 Hive Developers 的 BigQuery 設定。

試著在 BigQuery 查詢事件原始資料

例如,假設要確認正式環境中收集的 contents_success 事件基本資訊與屬性。進入 Google BigQuery 後,在 BigQuery 控制台左上方的專案選擇區域選擇要執行 SQL 的 Google Cloud 專案。接著開啟 SQL 編輯器,如下設定查詢條件。

SELECT
  userId,
  deviceId,
  appIdGroup,
  appId,
  DATETIME(TIMESTAMP_ADD(dateTime, INTERVAL 32400 SECOND)) AS dateTime_kst,
  attributes
FROM `habq-storage.analytics_N_live.t_raw_event_log`  --analytics_N_live: 已獲得權限的正式資料集
WHERE identifierProvider = 'hive'
  AND eventName = 'contents_success'  --要查詢的事件名稱
  AND appIdGroup = 'com.sample.test'  --要查詢之遊戲的實際 appIdGroup
  AND dateTime >= TIMESTAMP_SUB(TIMESTAMP('2026-10-01 00:00:00'), INTERVAL 32400 SECOND)  --查詢期間的開始日
  AND dateTime < TIMESTAMP_SUB(TIMESTAMP('2026-10-08 00:00:00'), INTERVAL 32400 SECOND)  --查詢期間的結束日
QUALIFY ROW_NUMBER() OVER (
  PARTITION BY checksum
  ORDER BY bigqueryRegistTimestamp DESC
) = 1
LIMIT 100

執行查詢前,請將註解中標示的值依實際查詢環境修改。

dateTime 以 UTC 為準儲存,因此範例中加上 9 小時以 KST 顯示。若查詢期間也要以 KST 為準設定,請將開始時間與結束時間減去 9 小時,轉換為 UTC 條件。

相同事件再次傳送時,可能會儲存重複資料。範例中的 QUALIFY 子句會在 checksum 相同的資料中,只保留 bigqueryRegistTimestamp 最新的一筆。去除重複的標準請依分析目的與事件傳送方式套用。

t_raw_event_log 是以 dateTime 為準建立的每日分區表格。在查詢中一併輸入日期條件、只查詢需要的分區,就能降低查詢費用。執行前也確認 BigQuery 顯示的預估處理資料量,就能減少不必要的資料查詢與費用。

查詢結果中不僅能確認用戶與應用程式資訊,也能確認儲存在 attributes 中的事件屬性。若要將特定屬性以獨立欄位確認,請使用 JSON_VALUE 與資料型別轉換函式擷取需要的值。

開始使用 Hive Analytics

準備好 BigQuery 查詢環境後,就能以想要的條件確認特定事件與屬性值,並將指標的彙總標準與原始資料比較。

Hive Analytics 是一款遊戲專用的分析解決方案,提供可在 BigQuery 中直接查詢透過 Hive SDK 收集之事件的環境。現在就到 Hive Analytics 申請 BigQuery 查詢權限,直接探索遊戲資料吧。