简体   繁体   English

无法使用BigQuery标准SQL拉取特定ID的“自定义维度”

[英]Unable to pull Custom Dimension for a specific ID using BigQuery Standard SQL

I came across a case where I could see value for CustomDimension1 in GA for a specific ID (CustomDimension 2). 我遇到一种情况,我可以在GA中看到特定ID(CustomDimension 2)的CustomDimension1的值。 But when I pull the value from BigQuery using Standard SQL, I couldn't find the value, instead it is showing null value. 但是,当我使用标准SQL从BigQuery中提取值时,我找不到该值,而是显示空值。

SELECT fullVisitorId, CD1, CD2
FROM (
  SELECT
    fullvisitorid, 
    (SELECT MAX(IF(index=1, value, NULL)) FROM UNNEST(hits.customDimensions)) AS CD1,
    (SELECT MAX(IF(index=2, value, NULL)) FROM UNNEST(hits.customDimensions)) AS CD2
  FROM `XXXXXXXXXXXXX`, UNNEST(hits) AS hits
)
WHERE CD2= '111111' and CD1 IS NOT NULL

You don't need the MAX(IF(...)) trick in standard sql, simply use a sub-select in your SELECT statement - something like (SELECT value FROM UNNEST(customDimensions) WHERE index=1) AS cd1 or in your specific case 您不需要标准sql中的MAX(IF(...))技巧,只需在SELECT语句中使用子选择-类似于(SELECT value FROM UNNEST(customDimensions) WHERE index=1) AS cd1或in您的具体情况

SELECT
  fullvisitorid, visitstarttime, hitnumber,
  (SELECT cd.value
   FROM h.customDimensions AS cd
   WHERE cd.index=16 ) AS hitsCd2
FROM
  `project.dataset.ga_sessions_20171210` AS t, t.hits as h -- flatten to hits scope with cross join
LIMIT
  1000

The general approach is: First flatten to your desired dimension scope, in this case hits scope. 通用方法是:首先展平到所需的尺寸范围,在这种情况下将命中范围。 Then calculate all the metrics - sub-selects for lower scopes and count(distinct some_id) for higher scopes. 然后计算所有指标-较低范围的子选择,较高范围的count(distinct some_id)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM