在 BigQuery 中查询 Hive Analytics 原始数据
Hive Analytics 的事件原始数据可以在 BigQuery 的 habq-storage 项目中直接用 SQL 查询。只需由 Hive Analytics 管理员在 BigQuery Access Permission Management(BigQuery 访问权限管理)中按环境为 Google 账号申请查询权限,并准备好用于执行 SQL 的 Google Cloud 项目即可。查询时,需将以 UTC 存储的 dateTime 转换为 KST,按 checksum 去重,并通过日期条件只扫描所需分区。
利用原始数据进行数据验证
采集游戏事件后,需要确认用户行为是否在预期的时间点被记录,以及分析所需的值是否完整。如果查询时间范围较长,或需要同时应用多个条件,有时就必须直接查看原始事件。
例如,如果已发送的事件在 Hive Analytics 中查不到,就需要检查它是否因不符合采集标准而被存入了隔离表。如果汇总数值高于预期,可以确认是否有相同事件被重复发送;也可以通过原始日志查看特定时间段、应用或国家是否反复出现异常值。当应用商店结算金额与收入指标不一致时,则需要将大量购买日志与结算数据进行比对,找出产生差异的范围。
在 BigQuery 中,可以用 SQL 查询上述场景所需的数据,并完成去重、时区转换、属性提取等预处理。这样就能具体定位仅凭界面结果难以发现的采集错误和汇总差异的原因。
Hive Analytics 的 BigQuery 查询环境
Hive Analytics 提供可在 BigQuery 中直接查询已采集事件数据的环境。从申请权限到执行 SQL 的流程如下。
- 准备 Google 账号
准备用于访问 BigQuery 的 Gmail 或公司使用的 Google 账号。 - 申请权限
由拥有 Hive Analytics 管理员权限的用户,在账号菜单的BigQuery Access Permission Management中登记 Google 账号。权限仅适用于提交申请的 Hive Analytics 控制台环境,如果需要同时查询正式环境和沙箱环境的数据,请在各环境中分别申请。申请后,可在申请记录中查看待处理、已完成、已拒绝等处理状态。权限通常会立即授予;如果申请记录处于待处理状态,最多可能需要 2 个工作日。 - 准备 Google Cloud 项目
准备用于执行 SQL 的 Google Cloud 项目。如果没有 Google Cloud 结算账号,可以设置 BigQuery 沙盒,在有限的免费额度内开始使用。设置方法与限制事项请参阅 Google Cloud 的试用 BigQuery 沙盒。 - 关联 Hive Analytics 项目
在 BigQuery 探索器中将habq-storage项目加入收藏(加星标)。如果看不到该项目,请在添加数据中选择按名称为项目加星标,并输入habq-storage。 - 查看数据集与表
展开项目,查看已授权的数据集和事件表。正式环境数据存储在habq-storage.analytics_N_live,沙箱环境数据存储在habq-storage.analytics_N_sandbox。数据集名称中的N为各公司的标识值;探索器只会显示有权访问的数据集,因此无需另行确认该值。可查询的表的种类、用途和主要列,请参阅开发者网站的BigQuery 表。 - 执行 SQL
执行 SQL 需要在所选的 Google Cloud 项目中拥有 BigQuery 作业用户(BigQuery Job User)权限。通过 BigQuery 沙盒创建的项目,在免费用量上限内无需额外设置权限即可查询。选择项目后,在 SQL 编辑器中执行查询即可。
因岗位变动、离职等原因不再需要查询原始数据的账号,请在 Hive Analytics 的 BigQuery Access Permission Management 中申请收回权限。只保留必要的账号和环境,就能清晰地管理原始数据的访问范围。
BigQuery 查询权限的申请与收回、Google Cloud 项目准备的详细步骤,请参阅开发者网站的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 查询权限,亲自探索游戏数据吧。