【问题标题】:BigQuery over-counting transactionsBigQuery 超算交易
【发布时间】:2018-05-11 21:57:09
【问题描述】:

我正在尝试获取指标(会话、用户、新用户、进入、跳出)以及特定来源、广告类型和自定义维度的交易。返回的会话似乎是正确的,但事务是重复的。我不确定如何将点击级别的自定义维度与会话级别的指标混合使用。

任何想法如何更改查询,以免重复值?

#Standard-SQL
SELECT
  trafficSource.source AS source,
  trafficSource.adContent AS adContent,
  (CASE WHEN hcd.index = 10 THEN hcd.value END) Destination,
  COUNT(DISTINCT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING) )) Sessions,
  COUNT(totals.transactions) transactions
FROM `cc-bigquery-venture.534939.ga_sessions_*`,
UNNEST(hits) as hit,
UNNEST(hit.customdimensions) as hcd
WHERE
_TABLE_SUFFIX BETWEEN '20170101' AND '20170131'
GROUP BY
  source,
  adContent,
  Destination
HAVING 
  Destination IS NOT NULL
AND
  Destination !=''
AND 
  source = 'dfa' AND adContent = 'vacationcore'
ORDER BY
  Destination ASC

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    BigQuery 标准 SQL 如下

    #StandardSQL
    SELECT
      trafficSource.source AS source,
      trafficSource.adContent AS adContent,
      (
        SELECT ANY_VALUE(hcd.value) 
        FROM UNNEST(hits) AS hit,
          UNNEST(hit.customdimensions) AS hcd
        WHERE hcd.index = 10
      ) Destination,
      COUNT(DISTINCT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING) )) Sessions,
      SUM(totals.transactions) transactions
    FROM `cc-bigquery-venture.534939.ga_sessions_*`
    WHERE _TABLE_SUFFIX BETWEEN '20170101' AND '20170131'
    GROUP BY source, adContent, Destination
    HAVING Destination IS NOT NULL
    AND Destination !=''
    AND source = 'dfa' AND adContent = 'vacationcore'
    ORDER BY Destination ASC
    

    【讨论】:

    • @ElliottBrossard - 谢谢 Elliott!我认为我最初把它放在那里的原因 - 是在结果中显示 0(零)而不是 NULL - 对于给定组根本没有任何事务的情况。但最好不要在 SUM 内部,而是在外部 :o)
    • 啊,明白了。无论如何,很好的答案:) OP 最大的收获应该是对数组的子选择,这可以在会话级别进行分析。
    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多