Google bigquery 如何操作对';平均会话持续时间';至';DAU平均会话持续时间';在BigQuery中使用谷歌分析?
我目前有一个查询返回“跨平台的平均会话持续时间”。我现在需要它返回“跨平台DAU的平均会话持续时间”。下面三个表之间的差异是iOS、Android和web数据Google bigquery 如何操作对';平均会话持续时间';至';DAU平均会话持续时间';在BigQuery中使用谷歌分析?,google-bigquery,Google Bigquery,我目前有一个查询返回“跨平台的平均会话持续时间”。我现在需要它返回“跨平台DAU的平均会话持续时间”。下面三个表之间的差异是iOS、Android和web数据user_id是GA中的一个自定义维度,我可以使用它,但是单独添加它并不能得到我想要的结果。我想我需要添加user_id自定义维度,并对日期进行处理,以按日期获得唯一的用户。然而,我对使用BigQuery还不熟悉,我自己无法做到这一点。我意识到这个问题是含糊不清的——我很乐意相应地更新我的问题 WITH base AS ( SELE
user_id
是GA中的一个自定义维度,我可以使用它,但是单独添加它并不能得到我想要的结果。我想我需要添加user_id自定义维度,并对日期进行处理,以按日期获得唯一的用户。然而,我对使用BigQuery还不熟悉,我自己无法做到这一点。我意识到这个问题是含糊不清的——我很乐意相应地更新我的问题
WITH
base AS (
SELECT
*
FROM (
SELECT
_TABLE_SUFFIX AS table_date,
"web" AS app_source,
*
FROM
`XXXX.ga_sessions_*`
UNION ALL
SELECT
_TABLE_SUFFIX AS table_date,
"iOS" AS app_source,
*
FROM
`XXXX.ga_sessions_*`
UNION ALL
SELECT
_TABLE_SUFFIX AS table_date,
"Android" AS app_source,
*
FROM
`XXXX.ga_sessions_*` )
WHERE
NOT REGEXP_CONTAINS(table_date, "intraday|backup") )
SELECT
FORMAT_DATE("%E4Y-%m-01", PARSE_DATE("%E4Y%m%d", MIN(table_date))) AS
ymd,
AVG(COALESCE(totals.timeOnSite, totals.timeOnScreen, 0)) as timeOnSite
FROM
base
WHERE
table_date > "20180101"
GROUP BY 1
ORDER BY 1
我认为您需要在两个级别上进行聚合。这有用吗
WITH base AS (
SELECT
*
FROM (
SELECT
_TABLE_SUFFIX AS table_date,
'web' AS app_source,
*
FROM
`XXXX.ga_sessions_*`
UNION ALL
SELECT
_TABLE_SUFFIX AS table_date,
'iOS' AS app_source,
*
FROM
`XXXX.ga_sessions_*`
UNION ALL
SELECT
_TABLE_SUFFIX AS table_date,
'Android' AS app_source,
*
FROM
`XXXX.ga_sessions_*`
)
WHERE NOT REGEXP_CONTAINS(table_date, 'intraday|backup')
)
select
app_source,
parse_date('%Y%m%d', table_date) as date,
count(distinct user_id) as total_users,
AVG(coalesce(totals.timeOnSite, totals.timeOnScreen, 0)) as average_time_on_site
from base
group by 1,2
order by 1,2
那么您希望每个平台上每个用户的平均时间按日期计算?对吧?重新表述这个问题的一个有用的方法是根据你想要的维度和尺度;大致上,您需要一个表,其第一列将所有数据切割成
dau
,下一列为平均会话持续时间。我不确定日常活跃用户作为维度是什么样子的——第一列显示了什么值?你想让它显示同伙吗?或者您只想要今天的DAU的平均会话持续时间?@Jagthebellet Daily Active Users将是用户id的总和,平均会话持续时间将以秒或分钟为单位,日期将不仅仅是今天,即2019年的一天一天。@khan我想要所有用户(而不是每个用户)的平均会话持续时间按日期在每个平台上。每个用户都可以,但不是必需的。我添加了一个可能有用的答案。另外,请确保使用单引号来封装SQL语法中的字符串。这绝对有帮助。让我试试这个,然后再打给你。谢谢如果有帮助,请将答案标记为正确。谢谢。我是否需要在查询中的某个位置添加自定义维度user\u id
,以便能够在最后一个select语句中对其进行计数?