2017-03-22 112 views
2

我正在迁移到BigQuery中的新SQL语法,因为它似乎更灵活。然而,当访问customDimensions中的字段时,我有点卡住了。我写的东西很简单,像这样:BigQuery以新的SQL语法访问CustomDimensions

SELECT 
    cd.customDimensions.index, 
    cd.customDimensions.value 
FROM `xxxxx.ga_sessions_20170312`, unnest(hits) cd 
limit 100 

但我得到的错误

Error: Cannot access field index on a value with type ARRAY<STRUCT<index INT64, value STRING>> 

但是,如果我运行这样的工作完全正常:

SELECT 
     date, 
     SUM((SELECT SUM(latencyTracking.pageLoadTime) FROM UNNEST(hits))) pageLoadTime, 
     SUM((SELECT SUM(latencyTracking.serverResponseTime) FROM UNNEST(hits))) serverResponseTime 
    FROM `xxxxxx.ga_sessions_20170312` 
    group by 1 

是有一些不同逻辑当谈到查询customDimensions?

回答

3

如果意图是检索呈扁平状的所有自定义尺寸,然后用UNNEST(customDimensions)加入,以及:

#standardSQL 
SELECT 
    cd.index, 
    cd.value 
FROM `xxxxx.ga_sessions_20170312`, 
    unnest(hits) hit, 
    unnest(hit.customDimensions) cd 
limit 100; 
+0

哦,它需要跨越与两个表加入。好吧,我明白了:)谢谢! –

+0

如果这对您有用,请另请[将答案标记为已接受](http://stackoverflow.com/help/someone-answers)。谢谢! –

1
SELECT 
fullvisitorid, 
(SELECT MAX(IF(index=1,value, NULL))FROM UNNEST(hits.customDimensions)) AS CustomDimension1, 
(SELECT MAX(IF(index=2,value, NULL))FROM UNNEST(hits.customDimensions)) AS CustomDimension2 
FROM 
    `XXXXXXX`, unnest(hits) as hits