根据 hits.page.pageTitle 计算会话数
Posted
技术标签:
【中文标题】根据 hits.page.pageTitle 计算会话数【英文标题】:Count Sessions based on hits.page.pageTitle 【发布时间】:2017-10-23 11:24:31 【问题描述】:我正在查询包含 Google Analytics 导出的 BigData。 查找访问包含字符串“rafinha”的页面的所有会话,因此我使用此查询
SELECT
channelGrouping as Default_Channel_Grouping,
SUM (totals.visits) as Sessions,
SUM(case when hits.page.pageTitle CONTAINS ('rafinha - Dugout') then 1 else 0 end) as Rafinha_Sessions
FROM
(TABLE_DATE_RANGE([133338516.ga_sessions_],
TIMESTAMP('2017-10-01'),
TIMESTAMP('2017-10-20')))
GROUP BY Default_Channel_Grouping
ORDER BY Sessions DESC
我没有得到 BigQuery 和 Google Analytics 之间的数字匹配 > Acquisitions > Channels
【问题讨论】:
hits
是一个重复字段,因此如果有多个匹配的pageTitle
值,您可能会多算totals.visits
。您是否尝试过使用标准 SQL?通过重复的字段操作更容易明确。
【参考方案1】:
试试
SELECT
channelGrouping,
COUNT(1) AS Sessions,
SUM(isRafinhaSession)
FROM (
SELECT
channelGrouping,
SOME(hits.page.pageTitle CONTAINS ('rafinha - Dugout')) WITHIN RECORD isRafinhaSession
FROM (TABLE_DATE_RANGE([133338516.ga_sessions_], TIMESTAMP('2017-10-01'), TIMESTAMP('2017-10-20')))
WHERE
totals.visits=1)
GROUP BY
1
ORDER BY
Sessions DESC
内部查询在会话级别(WITHIN RECORD)查找您的条件(SOME 使用 OR 聚合多个布尔值) - 而外部查询允许对整个表进行分组和聚合。
【讨论】:
感谢@sco,这对除(其他)以外的所有频道都非常有用。在 Google Analytics 中我得到 14 个会话,而在 BigQuery 中我只得到 1 个。您认为问题出在哪里?【参考方案2】:这是数据相关的问题,所以使用lower进行比较解决了如下问题,谢谢大家。
SELECT
channelGrouping,
COUNT(1) AS Sessions,
SUM(nvl(isRafinhaSession,1)) as RafinhaSession
FROM (
SELECT
channelGrouping,
some(LOWER(hits.page.pageTitle) CONTAINS LOWER(('rafinha - Dugout')) ) WITHIN RECORD isRafinhaSession
FROM (TABLE_DATE_RANGE([133338516.ga_sessions_], TIMESTAMP('2017-10-01'), TIMESTAMP('2017-10-20')))
WHERE
totals.visits=1)
GROUP BY
1
ORDER BY
Sessions DESC
【讨论】:
以上是关于根据 hits.page.pageTitle 计算会话数的主要内容,如果未能解决你的问题,请参考以下文章