BigQuery Crashlytics - бесплатные пользователи / сессии

Я связал свои данные о сбоях Firebase с BigQuery и настроил шаблоны студии данных, предоставляемые Google. Там много отличных данных, кроме самых важных показателей, необходимых для моей панели: без сбоя пользователей и без сессий в процентах.

Ничто не выделяется в схеме, которую я мог бы использовать для расчета этого.

Любые идеи, как я мог бы получить это значение? Он отображается на информационной панели Firebase, поэтому он должен быть доступен..

0 ответов

Я посмотрел в документации и нашел 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, так что все это только на основе документации и примеров данных. Надеюсь, это поможет.