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

如何从Firebase项目的BigQuery获取Crashlytics事件并实现自定义报表?

别着急,我来帮你一步步解决这个问题——先排查Crashlytics数据没同步到BigQuery的原因,再告诉你怎么提取数据搭建自定义报表方案。

第一步:排查Crashlytics数据未出现在BigQuery的原因

很多时候数据没同步是因为细节没配置到位,先检查这几点:

  • 确认Crashlytics与BigQuery的同步开关已开启:就算你的Firebase项目整体开了BigQuery,Crashlytics的同步需要单独配置。打开Firebase控制台→进入你的项目→点击左侧「Crashlytics」→右上角设置图标→选择「集成」→找到「BigQuery」,确保「导出Crashlytics数据到BigQuery」是开启状态,并且选对了要同步到的数据集。
  • 给数据同步留够时间:Crashlytics数据同步到BigQuery不是实时的,首次同步或者新崩溃事件,可能需要几小时甚至24小时才能在BigQuery里看到,先别急着排查,等一段时间再检查。
  • 验证崩溃事件是否真的上报了:先去Firebase Crashlytics控制台确认崩溃记录已经显示出来了,如果控制台都看不到崩溃,那是客户端的Crashlytics集成有问题,得先解决上报的问题。
  • 找对BigQuery里的表:Crashlytics的数据会存在以crashlytics_开头的分区表,比如crashlytics_events_YYYYMMDD,别和Analytics的表搞混了,检查你找的数据集和表名是否正确。
第二步:提取Crashlytics数据的方法

等数据成功同步到BigQuery后,你可以用这几种方式提取数据:

  • 直接用BigQuery SQL查询:这是最直接的方式,写SQL就能拿到你需要的字段,比如查询某个时间段内的崩溃详情:
    SELECT
      TIMESTAMP_MICROS(event_timestamp) AS crash_time,
      app_info.app_version AS app_version,
      device.model AS device_model,
      exception.exception_message AS error_msg,
      stack_trace AS error_stack
    FROM
      `你的项目ID.你的数据集ID.crashlytics_events_*`
    WHERE
      _TABLE_SUFFIX BETWEEN '20240101' AND '20240131'
      AND event_name = 'crash' -- 只查致命崩溃,non_fatal是非致命异常
    
  • 导出到其他存储做离线处理:如果需要把数据导入到第三方报表工具,你可以把BigQuery的查询结果导出到Google Cloud Storage(支持CSV、JSON、Parquet格式),再从GCS导入到Tableau、Power BI这类工具里。操作步骤:BigQuery控制台运行查询→点击「保存结果」→选择「导出到Cloud Storage」。
  • 用代码程序化提取:如果需要自动化提取数据,可以用Google Cloud的BigQuery SDK,比如Python的google-cloud-bigquery库:
    from google.cloud import bigquery
    import os
    
    # 设置认证(本地开发可以用服务账号密钥)
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "你的服务账号密钥路径.json"
    
    client = bigquery.Client()
    query = """
      SELECT
        app_info.app_version,
        COUNT(*) AS crash_count
      FROM `你的项目ID.你的数据集ID.crashlytics_events_*`
      WHERE event_name = 'crash'
      GROUP BY app_version
      ORDER BY crash_count DESC
    """
    # 执行查询并获取结果
    results = client.query(query).result()
    for row in results:
        print(f"版本 {row.app_version} 崩溃次数:{row.crash_count}")
    
第三步:搭建自定义报表解决方案

拿到数据后,就能灵活搭建符合你需求的报表了:

  • 直接连接报表工具:Tableau、Power BI、Looker Studio这些主流工具都支持直接连接BigQuery,你可以通过拖拽字段快速创建可视化报表,比如按版本统计崩溃趋势、按设备型号分析崩溃分布、展示Top 10崩溃原因等。
  • 创建定时汇总表:如果报表需要实时更新,你可以在BigQuery里创建定时查询,每天自动计算汇总数据(比如当日崩溃总数、Top 5异常类型),把结果保存到一个专门的汇总表,然后让报表工具连接这个汇总表,这样仪表盘就能自动更新,不用每次都跑全量查询。
  • 设置崩溃告警(可选):如果需要监控异常崩溃率,你可以结合BigQuery和Cloud Monitoring,设置当某个版本的崩溃次数超过阈值时,自动发送邮件、Slack通知,及时发现问题。
最后提醒
  • 确保你有足够的权限:操作BigQuery需要「BigQuery Data Editor」或更高权限,Firebase控制台的配置需要「Project Editor」权限,权限不够的话找项目管理员调整。
  • 熟悉Crashlytics的表结构:BigQuery里的Crashlytics表有很多字段,比如event_name区分致命/非致命异常、exception里包含异常详情、device里有设备系统版本等,你可以在BigQuery的表详情里查看所有字段,方便写出更精准的查询。

内容的提问来源于stack exchange,提问作者Ajay Singh Beniwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:18:25