2

我想从我的 GA BigQuery 数据中获取以下架构:主机名;自定义维度2;自定义维度3;页面浏览量;屏幕视图;总事件;会话

起初我只想获取主机名和 cd2 我的查询如下所示:

SELECT hits.page.hostname, hits.customDimensions.value  
FROM `dataset`, UNNEST(hits) as hits  
WHERE hits.customDimensions.index = 2 
LIMIT 1000

我收到以下错误:
无法访问类型为 ARRAY<STRUCT<index INT64, value STRING>> at [1:162] 的值的字段索引

那么如何处理两个不同的 BigQuery 数组?

4

2 回答 2

4

由于该数组中最多可以有 200 个字段,并且您通常只需要其中一个,因此最好不要与它交叉连接,而是编写一个小子查询。

SELECT 
  page.hostname, 
  (SELECT value FROM UNNEST(h.customDimensions) WHERE index=2) AS cd2 
FROM `dataset`, 
  UNNEST(hits) as h  
LIMIT 1000

与交叉连接版本相比,您拥有的数据越多,此查询的执行速度就越快。子查询总是比交叉连接快。

于 2020-09-08T08:52:30.643 回答
1

以下是 BigQuery 标准 SQL

#standardSQL
SELECT hit.page.hostname, customDimension.value  
FROM `dataset`, UNNEST(hits) AS hit, UNNEST(hit.customDimensions) AS customDimension 
WHERE customDimension.index = 2 
LIMIT 100
于 2020-09-07T08:22:15.157 回答