【问题标题】:Count Sessions based on hits.page.pageTitle根据 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?通过重复的字段操作更容易明确。

标签: session google-analytics google-bigquery page-title


【解决方案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

【讨论】:

    猜你喜欢
    • 2022-10-24
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2015-08-10
    相关资源
    最近更新 更多