首页 > 解决方案 > BigQuery Crashlytics - 无崩溃用户/会话

问题描述

我已将我的 firebase crashlytics 数据链接到 bigquery 并设置了 google 提供的数据工作室模板。除了我的仪表板所需的最重要指标之外,那里有很多很棒的数据:无崩溃用户无崩溃会话百分比。

在我可以用来计算这个的模式中没有什么突出的。

有什么想法可以让我得到这个值吗?它显示在 Firebase 仪表板中,因此它必须可用..

在此处输入图像描述

标签: firebasegoogle-bigquerycrashlyticsgoogle-data-studiofirebase-crash-reporting

解决方案


我查看了文档,发现event_name='app_exception'. 有了它,您可以编写如下查询

WITH userCrashes AS (
  SELECT user_pseudo_id, MAX(event_name = 'app_exception') hasCrash 
  FROM `firebase-public-project.analytics_153293282.events_20181003` 
  GROUP BY 1
)

SELECT
  IF(hasCrash,'crashed','crash-free') crashState,
  COUNT(DISTINCT user_pseudo_id) AS users,
  ROUND(COUNT(DISTINCT user_pseudo_id) / SUM(COUNT(DISTINCT user_pseudo_id)) OVER (),2) AS userShare
FROM userCrashes
GROUP BY 1

但是事件参数中还有一个标志“致命”。在示例数据中,它总是正确的,但如果你想尊重它,你可以做类似的事情

WITH userCrashes AS (
  SELECT 
    user_pseudo_id, 
    MAX(event_name = 'app_exception') hasCrash,
    MAX(event_name = 'app_exception' 
      AND (select value.int_value=1 from unnest(event_params) where key='fatal')
    ) hasFatalCrash
  FROM `firebase-public-project.analytics_153293282.events_20181003` 
  GROUP BY 1
)

SELECT
  IF(hasCrash,'crashed','crash-free') crashState,
  IF(hasFatalCrash,'crashed fatal','crash-free') fatalCrashState,
  COUNT(DISTINCT user_pseudo_id) AS users,
  ROUND(COUNT(DISTINCT user_pseudo_id) / SUM(COUNT(DISTINCT user_pseudo_id)) OVER (),2) AS userShare
FROM userCrashes
GROUP BY 1,2

免责声明:我从未使用过 firebase,所以这一切都只是基于文档和示例数据。不过,希望它有所帮助。


推荐阅读