You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Performance与BigQuery导出数据显著差异排查

Firebase控制台与BigQuery帧数据差异排查问题

在2023-02-07至2023-02-08的时间范围内,Firebase控制台显示慢渲染中位数约30%、冻结帧中位数约11.5%,但用BigQuery执行以下查询得到的结果差异极大:慢渲染约26%、冻结帧约0%。

查询语句如下:

SELECT
  distinct 
  percentile_disc(round(trace_info.screen_info.frozen_frame_ratio, 2)*100, 0.5) over() as frozen_p50,
  percentile_disc(round(trace_info.screen_info.slow_frame_ratio, 2)*100, 0.5) over() as slow_p50
FROM
  `my-table-name`
WHERE
  event_type = "SCREEN_TRACE" and
  event_name = "_st_MainActivity" and
  DATE(_PARTITIONDATE) >= "2023-02-07" and
  DATE(_PARTITIONDATE) < "2023-02-08"

注:Firebase控制台已设置对应日期范围,百分位选为50%(中位数)。

待解答问题

  1. 上述查询语句是否存在问题?
  2. 若查询语句无误,为何数据差异如此显著?

更新1:同一数据集、时间范围下,Google Sheet计算冻结帧p90为7%,但BigQuery用percentile_disc和percentile_cont计算结果均为0%。

更新2:缩小数据范围后,BigQuery与Google Sheet的百分位结果基本一致,但仍和Firebase数据存在显著差异,特此求助。


问题分析与解答

一、查询语句的问题点

  1. DISTINCT冗余且无必要:窗口函数percentile_disc()会为每一行生成相同的百分位值,添加DISTINCT虽能得到唯一结果,但属于多余操作,可改用LIMIT 1替代,效率更高。
  2. ROUND函数导致精度丢失:计算百分位前对比例值做两位小数的四舍五入,会把低比例数据(比如0.006即0.6%)直接舍入为0,大量这类数据会拉低百分位结果,这很可能是冻结帧p50为0的核心原因。
  3. 时间范围边界不匹配:Firebase控制台选择“2月7日至2月8日”通常包含2月8日全天数据,但你的查询条件是DATE(_PARTITIONDATE) < "2023-02-08",仅统计2月7日的数据,这会直接导致数据范围不一致,是结果差异的关键因素。

二、数据差异的深层原因(假设查询修正后仍有差异)

  1. 指标定义不一致:Firebase控制台的“慢渲染”“冻结帧”可能是会话级统计(比如整个会话内的卡顿比例),而BigQuery中slow_frame_ratio、frozen_frame_ratio是单屏幕追踪事件的比例;或者两者对“冻结帧”的判定阈值(比如连续卡顿帧数)不同。
  2. 数据过滤规则不同:Firebase控制台会自动过滤无效数据(如测试设备、异常短会话),而你的BigQuery查询未添加对应过滤条件,导致统计基数不同。
  3. 时区错位:Firebase控制台默认使用本地时区,而BigQuery的_PARTITIONDATE是UTC时区,实际统计的时间范围存在偏差。
  4. 数据同步延迟:Firebase控制台展示的数据经过了后期清洗,而BigQuery中的原始数据可能未完成最终同步,存在数据不一致。

修正建议

  1. 修正时间范围:将日期条件改为DATE(_PARTITIONDATE) BETWEEN "2023-02-07" AND "2023-02-08",确保和Firebase范围一致。
  2. 移除ROUND函数:保留原始精度计算百分位,修正后的查询示例:
    SELECT
      percentile_disc(trace_info.screen_info.frozen_frame_ratio * 100, 0.5) over() as frozen_p50,
      percentile_disc(trace_info.screen_info.slow_frame_ratio * 100, 0.5) over() as slow_p50
    FROM
      `my-table-name`
    WHERE
      event_type = "SCREEN_TRACE" and
      event_name = "_st_MainActivity" and
      DATE(_PARTITIONDATE) BETWEEN "2023-02-07" AND "2023-02-08"
    LIMIT 1
    
  3. 核对指标定义:查阅Firebase文档,确认“慢渲染”“冻结帧”的计算逻辑,确保BigQuery字段和计算方式与之匹配。
  4. 检查时区设置:统一Firebase和BigQuery的时区,必要时转换时区后再统计。

内容的提问来源于stack exchange,提问作者ror

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:25:30