子句嵌套的 BigQuery 不符合预期
Posted
技术标签:
【中文标题】子句嵌套的 BigQuery 不符合预期【英文标题】:Clausing a nested BigQuery doesn't as expected 【发布时间】:2020-06-11 12:55:45 【问题描述】:我基本上是在尝试查询一个名为 hits.CustomDimension.index 的列,所以我必须嵌套多次才能访问数据。我正在尝试过滤,因此它只显示 hits.CustomDimension.index = 16 的行以及下面的查询,但它返回所有 CustomDimension 行以获取任何具有 CustomDimension.index = 16 某处的观察。 不知道我做错了什么?正如您在我添加的图像中看到的那样,仍然出现 customDimension.index = 16 的所有自定义维度,我只希望将其展平。
SELECT * EXCEPT(hit, hits)
FROM ***,
UNNEST(hit) h
CROSS JOIN UNNEST(customDimensions) cd
WHERE cd.index = 16 AND timeOnSite IS NOT NULL
【问题讨论】:
【参考方案1】:下面试试
SELECT *
FROM ******.ga_sessions_export,
UNNEST(hits) h
CROSS JOIN UNNEST(h.customDimensions) cd
WHERE cd.index = 16
LIMIT 10
原始查询中的问题是您不是按 hits.customDimensions 过滤,而是按名为 customDimensions 的单独字段过滤
对比
【讨论】:
同样的问题。它会在自定义维度 11 出现的任何观察结果中返回所有自定义维度 那么我认为你应该用更多的细节/例子更好地定义你的问题 再仔细阅读我的回答!你可能会注意到一些有用的东西。这是答案的重点 @linacar231 这个解决方案是对的。您可能对字段感到困惑(GA 数据有三个名为 customDimensions 的字段)【参考方案2】:自定义维度存储为数组。如果您只想查看特定的自定义维度,可以从 select 语句中排除匹配和匹配列。
SELECT * EXCEPT(hits, hit),
FROM ******.ga_sessions_export,
UNNEST(hits) hit,
UNNEST(customDimensions) cd
WHERE cd.index = 16
LIMIT 10
【讨论】:
这仍然返回任何出现 cd.index = 16 的观察结果!附上它的外观图片 啊,我明白了。你只想看到 cd.index = 16。我现在正在编辑它。以上是关于子句嵌套的 BigQuery 不符合预期的主要内容,如果未能解决你的问题,请参考以下文章