BigQuery:两个高级自定义维度

时间:2016-04-16 15:30:31

标签: google-analytics google-bigquery

我似乎无法获得一个查询,该查询为我提供了所有会话,其中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')

2 个答案:

答案 0 :(得分:4)

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

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')
)

答案 1 :(得分: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  
)
  

ADDED

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

但是我已经检查了BigQuery Export schema,但似乎并非如此 我没有办法区分每个特定命中的尺寸。 自定义维度按级别 - 用户/会话级别,产品级别和命中级别显示。 每个产品只能识别/查询产品级自定义维度。

希望这有帮助