BigQuery中来自Firebase的每个会话的会话长度

时间:2018-12-14 18:20:10

标签: sql firebase google-bigquery

我正在尝试在BigQuery中编写一个SQL查询,以从Firebase获取每个会话的会话长度。

使用this question的第一个和第二个响应,我能够产生以下SQL查询:

请注意,我使用了第一个响应中的方法来获取每个用户,同时更新为第二个响应所示的新架构。我还使用了user_id而不是app_instance_id

SELECT user_id, sess_id, MIN(min_time) sess_start, MAX(max_time) sess_end, COUNT(*) records, MAX(sess_id) OVER(PARTITION BY user_id) total_sessions,
   (ROUND((MAX(max_time)-MIN(min_time))/(1000*1000),1)) sess_length_seconds
FROM (
  SELECT *, SUM(session_start) OVER(PARTITION BY user_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 user_id ORDER BY max_time) previous
        FROM (SELECT user_id, MIN(event_timestamp) AS min_time, MAX(event_timestamp) AS max_time
        FROM `dataset_name.table_name`
         GROUP BY user_id)
      )
    )
  )
GROUP BY 1, 2
ORDER BY 1, 2

我遇到的问题是,这似乎只是获得每个用户的总长度,而不是每个会话的总长度。

screenshot of results

非常感谢您提供的帮助,可以使每次会话的会话时长达到真实的水平!

0 个答案:

没有答案