Session Firebase中每个用户的会话分配表

Session Firebase中每个用户的会话分配表,session,google-bigquery,firebase-analytics,bigquery-standard-sql,Session,Google Bigquery,Firebase Analytics,Bigquery Standard Sql,这是关于Firebase Analytics数据中的分布的第二篇文章(我的后续文章)。这次,我想基于Firebase会话数据在BigQuery中创建一个用户分布表。输出应如下所示: 我成功地创建了以下脚本,以使用app_instance_id: #standardSQL SELECT COUNT(DISTINCT(CASE WHEN sess_id = 0 THEN app_instance_id END)) AS sess_count_0, COUNT(DISTINCT(CASE

这是关于Firebase Analytics数据中的分布的第二篇文章(我的后续文章)。这次,我想基于Firebase会话数据在BigQuery中创建一个用户分布表。输出应如下所示:

我成功地创建了以下脚本,以使用app_instance_id:

#standardSQL
SELECT 
  COUNT(DISTINCT(CASE WHEN sess_id = 0 THEN app_instance_id END)) AS sess_count_0,
  COUNT(DISTINCT(CASE WHEN sess_id = 1 THEN app_instance_id END)) AS sess_count_1,
  COUNT(DISTINCT(CASE WHEN sess_id > 1 AND sess_id <= 5 THEN app_instance_id END)) AS sess_count_2BETWEEN5,
  COUNT(DISTINCT(CASE WHEN sess_id > 5 AND sess_id <= 10 THEN app_instance_id END)) AS sess_count_6BETWEEN10,
  COUNT(DISTINCT(CASE WHEN sess_id > 10 AND sess_id <= 30 THEN app_instance_id END)) AS sess_count_11BETWEEN30,
  COUNT(DISTINCT(CASE WHEN sess_id > 30 THEN app_instance_id END)) AS sess_count_PLUS31
FROM (SELECT *, SUM(session_start) OVER(PARTITION BY app_instance_id ORDER BY min_time) sess_id
      FROM (SELECT *, IF(previous IS null OR (min_time-previous)>(20*60*1000*1000),1, 0) session_start 
            FROM (SELECT *, LAG(max_time, 1) OVER(PARTITION BY app_instance_id ORDER BY max_time) previous
                  FROM (SELECT user_dim.app_info.app_instance_id, 
                  user_dim.device_info.mobile_model_name, 
                  user_dim.device_info.platform_version, 
                  (SELECT MIN(timestamp_micros) 
                  FROM UNNEST(event_dim)) min_time, 
                    (SELECT MAX(timestamp_micros) FROM UNNEST(event_dim)) max_time 
                    FROM `firebase-public-project.com_firebase_demo_IOS.app_events_*` 
                    WHERE (_TABLE_SUFFIX BETWEEN '20170701' AND '20170731')
                  )
            )
      )
)
#standardSQL
SELECT 
COUNT (DISTINCT user_dim.app_info.app_instance_id) as users
FROM `firebase-public-project.com_firebase_demo_IOS.app_events_*`, UNNEST(event_dim) AS event 
  WHERE (_TABLE_SUFFIX BETWEEN '20170701' AND '20170731')
  AND event.name = "session_start"