【发布时间】:2019-11-30 18:14:40
【问题描述】:
我正在尝试使用 STRING_AGG 函数按 fullVisitorId 和 ORDER BY visitNumber 分区来获得唯一的来源、媒介和活动。 但是,我在使用 STRING_AGG 的来源、媒体和广告系列中获得了很多重复字段。
所以我想到了使用 DISTINCT,但它不适用于 STRING_AGG。
任何建议表示赞赏。
代码:
SELECT
CAST(concat(SUBSTR(date,0,4), '-', SUBSTR(date,5,2),'-',SUBSTR(date,7,2)) as date ) as date,
fullVisitorId,
trafficSource.keyword,
trafficSource.adContent,
STRING_AGG(channelGrouping), ' > ') OVER (PARTITION BY fullVisitorId ORDER BY visitNumber) AS channelPath,
STRING_AGG(trafficSource.medium), ' > ') OVER (PARTITION BY fullVisitorId ORDER BY visitNumber ) AS medium_Path,
STRING_AGG(trafficSource.source), ' > ') OVER (PARTITION BY fullVisitorId ORDER BY visitNumber) AS source_Path,
STRING_AGG(trafficSource.campaign), ' > ') OVER (PARTITION BY fullVisitorId ORDER BY visitNumber) AS campaign_Path
FROM
`tfa-big-query.74006564.ga_sessions_*`,UNNEST(hits) as hit
WHERE _table_suffix BETWEEN '20180801' and '201808015'
STRING_AGG列中的结果(channelgrouping、medium和source是重复字段的出现,可以看出如下:
实际结果:
自然搜索>自然搜索>自然搜索
预期输出:
自然搜索
【问题讨论】:
标签: google-analytics google-bigquery