BigQuery Crashlytics - 崩溃免费用户/会话

16
我已将我的Firebase崩溃分析数据链接到BigQuery,并设置了Google提供的Data Studio模板。其中有很多很棒的数据,但我的仪表板所需的最重要的指标无崩溃用户无崩溃会话的百分比并没有被包含在内。
在Schema中没有任何突出显示的内容可以用于计算这个指标。你有什么想法如何获得这个值?它在Firebase仪表板中显示,因此一定是可用的。 enter image description here

你知道是否有一个示例共享表格可以编写查询吗? - Felipe Hoffa
@FelipeHoffa,这里有一个DataStudio报告的样例,但我认为您无法在底层数据上编写查询。https://datastudio.google.com/u/0/reporting/10TMAKxL0ZxcNGTLDQy1LAF5V7uNDYxRC/page/1xZU/preview - Ollie Jones
1个回答

11

我查阅了文档,发现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

但事件参数中也有一个'fatal'标志。 在示例数据中,它始终为true,但是如果您想要将其考虑在内,可以执行类似以下操作:

但是事件参数中也有一个'fatal'标志。 在示例数据中,它始终为true,但是如果您想要将其考虑在内,可以执行类似以下操作:

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合作,因此这一切都是基于文档和示例数据。希望它能有所帮助。


2
据我理解,通过在Google云平台查询编辑器中运行此查询,可以帮助查看结果。有人能帮我了解如何将这些数据添加到Google数据工作室仪表板中吗? - Vijay
非常感谢,马丁!我正在努力为每天准备一些东西,就像在Crashlytics中看到的那样,以便我可以将其绘制成图形。我该如何使用您的查询来实现这一点?我想这样做是因为不可能在x天内拥有每个平台(iOS/Android)的无崩溃叠加层。也可以只复制Crashlytics中的图形。谢谢! - Frank B.
1
那么查询的输出是什么?我认为它不是无崩溃会话。 - ror

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接