首页 > 解决方案 > 如何找到用户在 bigquery 中执行的不同会话的engagement_time_msec 总和?

问题描述

我的数据如下所示: 在此处输入图像描述

对于特定的“event_params.key”=“ga_session_id”,我想在“event_params.key”=“engagement_time_msec”时找到“event_params.value.int_value”的总和。这是为每个用户完成的(列 - “user_pseudo_id”)。

“engagement_time_msec”仅存在于“event_name”=“screen_view”和“user_engagement”中,并且对于一个特定的“ga_session_id”可以多次出现。

基本上,“ga_session_id”是“user_pseudo_id”创建的每个会话的唯一 ID。我想找到用户的平均会话持续时间。

请帮我。

标签: sqlgoogle-bigquery

解决方案


以下是 BigQuery 标准 SQL

#standardSQL
select user_pseudo_id, avg(session_time_msec) as avg_session_time_msec
from (
  select user_pseudo_id, 
    (select value.int_value from e.event_params where key = 'ga_session_id') as ga_session_id,
    sum((select value.int_value from e.event_params where key = 'engagement_time_msec')) as session_time_msec
  from `project.dataset.table` e
  group by 1, 2
)
group by 1   

推荐阅读