如何在 BigQuery 中编写条件 string_agg 函数?
How can I write a conditional string_agg function in BigQuery?
我编写了一个查询来查看用户浏览我网站的旅程,使用 string_agg()
函数和 hits.contentGroup.contentGroup1
按顺序将产品页面、建议页面、新闻页面等组合在一起顺序,使用命中数对它们进行排序,只查看 'PAGE'
命中类型。
但是,注册页面的分组方式不同,因此如果用户已注册,这会导致 '(not set)'
值出现在查询输出 table 的整个用户旅程中一个帐户。
有没有办法给string_agg函数应用条件,这样如果内容组是'not set'
,就可以查看对应的页面路径,如果页面路径匹配LIKE '%join/complete%'
例如 return 'Join Complete'
或 'not set'
?
以外的结果
这是我最好的尝试,但它只是 return 包含 join/complete 的结果,而不是用户旅程的其余部分。
SELECT
date,
fullVisitorId,
visitId,
STRING_AGG(
CASE
WHEN hit.contentGroup.contentGroup1 = '(not set)' THEN
CASE
WHEN hit.page.pagePath LIKE '%join/complete%' THEN 'join_complete'
ELSE hit.contentGroup.contentGroup1
END
END
, '#' ORDER BY hit.hitNumber)
FROM `xxxxx-ga-datasets.xxxx.ga_sessions_*` AS t,
UNNEST(hits) AS hit
WHERE
_TABLE_SUFFIX BETWEEN '20190101' AND '20190101'
AND hit.type='PAGE'
GROUP BY 1, 2, 3
ORDER BY 1, 2
感谢任何建议!干杯。
因为如果内容组不是 not set
,您的案例构建 returns NULL
。您可以将其简化为
SELECT
date,
fullVisitorId,
visitId,
STRING_AGG(
CASE
WHEN hit.page.pagePath LIKE '%join/complete%' THEN 'join_complete'
ELSE hit.contentGroup.contentGroup1
END
, '#' ORDER BY hit.hitNumber)
FROM `xxxxx-ga-datasets.xxxx.ga_sessions_*` AS t,
UNNEST(hits) AS hit
WHERE
_TABLE_SUFFIX BETWEEN '20190101' AND '20190101'
AND hit.type='PAGE'
GROUP BY 1, 2, 3
ORDER BY 1, 2
我编写了一个查询来查看用户浏览我网站的旅程,使用 string_agg()
函数和 hits.contentGroup.contentGroup1
按顺序将产品页面、建议页面、新闻页面等组合在一起顺序,使用命中数对它们进行排序,只查看 'PAGE'
命中类型。
但是,注册页面的分组方式不同,因此如果用户已注册,这会导致 '(not set)'
值出现在查询输出 table 的整个用户旅程中一个帐户。
有没有办法给string_agg函数应用条件,这样如果内容组是'not set'
,就可以查看对应的页面路径,如果页面路径匹配LIKE '%join/complete%'
例如 return 'Join Complete'
或 'not set'
?
这是我最好的尝试,但它只是 return 包含 join/complete 的结果,而不是用户旅程的其余部分。
SELECT
date,
fullVisitorId,
visitId,
STRING_AGG(
CASE
WHEN hit.contentGroup.contentGroup1 = '(not set)' THEN
CASE
WHEN hit.page.pagePath LIKE '%join/complete%' THEN 'join_complete'
ELSE hit.contentGroup.contentGroup1
END
END
, '#' ORDER BY hit.hitNumber)
FROM `xxxxx-ga-datasets.xxxx.ga_sessions_*` AS t,
UNNEST(hits) AS hit
WHERE
_TABLE_SUFFIX BETWEEN '20190101' AND '20190101'
AND hit.type='PAGE'
GROUP BY 1, 2, 3
ORDER BY 1, 2
感谢任何建议!干杯。
因为如果内容组不是 not set
,您的案例构建 returns NULL
。您可以将其简化为
SELECT
date,
fullVisitorId,
visitId,
STRING_AGG(
CASE
WHEN hit.page.pagePath LIKE '%join/complete%' THEN 'join_complete'
ELSE hit.contentGroup.contentGroup1
END
, '#' ORDER BY hit.hitNumber)
FROM `xxxxx-ga-datasets.xxxx.ga_sessions_*` AS t,
UNNEST(hits) AS hit
WHERE
_TABLE_SUFFIX BETWEEN '20190101' AND '20190101'
AND hit.type='PAGE'
GROUP BY 1, 2, 3
ORDER BY 1, 2