BigQuery:两个命中级自定义维度

Posted

技术标签:

【中文标题】BigQuery:两个命中级自定义维度【英文标题】:BigQuery: two hitlevel custom dimensions 【发布时间】:2016-04-16 15:30:31 【问题描述】:

我似乎无法获得一个查询,该查询为我提供了同一命中中 customdimensionX 的值为 X 且 customdimensionY 的值为 Y 的所有会话。我目前的查询结果没有找到结果。

谁能帮我解决这个问题:)? 谢谢!

SELECT  sum(totals.visits)

from TABLE_DATE_RANGE([xxxx.ga_sessions_], TIMESTAMP('2016-3-1'),TIMESTAMP('2016-3-1'))

WHERE 
  (hits.customDimensions.index=x AND hits.customDimensions.value='x') 
  AND (hits.customDimensions.index=y AND hits.customDimensions.value='y')

【问题讨论】:

【参考方案1】:

回答我自己的问题有点奇怪,但它可能对其他人有用:) 我通过以下方式找到了正确的号码:

SELECT EXACT_COUNT_DISTINCT(uniqueVisitId) as sessions
FROM( 
 SELECT
   CONCAT(fullvisitorid,"_",string(visitId)) AS uniqueVisitId,
   MAX(IF(hits.customDimensions.index=x,hits.customDimensions.value,NULL)) WITHIN hits AS x,
   MAX(IF(hits.customDimensions.index=y,hits.customDimensions.value,NULL)) WITHIN hits AS y,
   hits.hitNumber

   FROM TABLE_DATE_RANGE([xxxxxx.ga_sessions_], TIMESTAMP('2016-3-1'),TIMESTAMP('2016-3-1'))

   having
    (x contains 'x' and y contains 'y')
)

【讨论】:

【参考方案2】:

尝试以下选项(没有机会测试,但应该接近您的需要,如果不完全一样):

SELECT SUM(totals.visits) 
FROM TABLE_DATE_RANGE([66080915.ga_sessions_], TIMESTAMP('2016-3-1'),TIMESTAMP('2016-3-1'))
OMIT RECORD IF 
SUM((hits.customDimensions.index=x AND hits.customDimensions.value='x')
 OR (hits.customDimensions.index=y AND hits.customDimensions.value='y')
) != 2 

SELECT SUM(totals.visits) FROM (  
  SELECT totals.visits, 
  SUM((hits.customDimensions.index=x AND hits.customDimensions.value='x')
   OR (hits.customDimensions.index=y AND hits.customDimensions.value='y')
  ) WITHIN RECORD AS check,
  FROM TABLE_DATE_RANGE([66080915.ga_sessions_], TIMESTAMP('2016-3-1'),TIMESTAMP('2016-3-1'))
  HAVING check = 2  
)

添加

如果 customDimensions 按特定匹配(如 hits.hit.customVariables)分组 - 您可以使用WITHIN hits.hitOMIT hits.hit IF 识别同一匹配中的两个条件 分别与WITHIN RECORDOMIT RECORD IF

但我检查了BigQuery Export schema,似乎不是这样。 我看不到区分每个特定命中的尺寸的方法。 自定义维度按级别呈现 - 用户/会话级别、产品级别和点击级别。 每个产品只能识别/查询产品级自定义维度。

希望对你有帮助

【讨论】:

感谢您的回答,但问题是 customdimension x 和 y 的条件都应在同一次命中中得到满足,我认为您的建议选择在会话中某处同时满足这两个条件的会话而不是专门在同一个命中? :o) 我专注于修复你的 WHERE 子句,假设这是你的亮点。你的其余代码我没碰过 好吧,无论如何谢谢@Mikhail Berlyant。我找到了另一种获得结果的方法(见下文),可能不是最干净的,如果有更好的方法,请告诉我。 很高兴你得到它。我觉得我的回答帮助你达到了这一点——尤其是使用 WHITHIN(这正是我的重点)。如果是这样,您至少可以通过投票将其标记为有用。 嗨 Mikhail,我有一个与使用自定义维度获取新用户数和用户数相关的问题。这是链接:***.com/questions/48016315/…你有时间可以看看吗?谢谢

以上是关于BigQuery:两个命中级自定义维度的主要内容,如果未能解决你的问题,请参考以下文章

取消嵌套命中和取消嵌套会话范围的自定义维度 BigQuery 代码过滤器

BigQuery 在同一查询中展平 GA 会话和命中级别字段

查询会话和命中级别的自定义维度

谷歌 BigQuery 中的自定义维度

在 BigQuery 中按 Google Analytics 自定义维度过滤

GA BigQuery:使用自定义维度计算浏览量