2017-03-02 29 views
2

如何计算会话持续时间 in Firebase analytics 原始数据它与BigQuery链接?如何计算Firebase Analytics原始数据中的会话和会话持续时间?

我已经使用了以下博客通过使用其嵌套每个记录中的事件的扁平化指挥来计算用户,但我想知道如何在计算会议会话持续时间继续按国家和时间。

(我已经配置了许多应用程序,但如果你能帮助我的SQL查询计算会话持续时间和会话,这将是巨大的帮助)

Google Blog on using Firebase and big query

回答

9

首先,你需要定义一个会话 - 在下面的查询中,当用户闲置超过20分钟时,我将打断一个会话。

现在,要查找与SQL的所有会话,您可以使用https://blog.modeanalytics.com/finding-user-sessions-sql/中描述的技巧。

以下查询查找所有会话其长度:

#standardSQL 

SELECT app_instance_id, sess_id, MIN(min_time) sess_start, MAX(max_time) sess_end, COUNT(*) records, MAX(sess_id) OVER(PARTITION BY app_instance_id) total_sessions, 
    (ROUND((MAX(max_time)-MIN(min_time))/(1000*1000),1)) sess_length_seconds 
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), # sessions broken by this inactivity 
       1, 0) session_start 
       #https://blog.modeanalytics.com/finding-user-sessions-sql/ 
    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 
      , (SELECT MIN(timestamp_micros) FROM UNNEST(event_dim)) min_time 
      , (SELECT MAX(timestamp_micros) FROM UNNEST(event_dim)) max_time 
     FROM `firebase-analytics-sample-data.ios_dataset.app_events_20160601` 
    ) 
    ) 
) 
) 
GROUP BY 1, 2 
ORDER BY 1, 2 

enter image description here

+1

user_engagement有** ** event_dim.params.key包含** ** engagement_time_msec和** _ event_dim。 params.value.int_value _ **包含每个实例**的**参与时间,你认为这个参数可以用于计算会话持续时间吗? 如果它是真的,它应该比你的计算更容易,因为计算会话持续时间的约定时间似乎是直截了当的。 –

+0

也许 - 但使用这个值将不允许你像这个查询那样灵活地定义会话(这也适用于其他数据集) - 我会很高兴看到别人是否也提供了一个备选答案! –