【问题标题】:BigQuery except double nested columnBigQuery 除了双嵌套列
【发布时间】:2017-08-22 19:07:24
【问题描述】:
【问题讨论】:
标签:
select
google-bigquery
bigquery-standard-sql
【解决方案1】:
以下是我对此的几分钱:
我认为它回答了您的确切问题/案例
#standardSQL
SELECT * REPLACE(
ARRAY(
SELECT AS STRUCT hit.*
REPLACE((SELECT AS STRUCT latencyTracking.* EXCEPT(userTimingLabel)) AS latencyTracking)
FROM UNNEST(hits) AS hit
) AS hits)
FROM `yourProject.yourDataset.yourTable`
我在公共表上测试了如下:
#standardSQL
SELECT * REPLACE(
ARRAY(
SELECT AS STRUCT hit.*
REPLACE((SELECT AS STRUCT page.* EXCEPT(hostname)) AS page)
FROM UNNEST(hits) AS hit
) AS hits)
FROM `google.com:analytics-bigquery.LondonCycleHelmet.ga_sessions_20130910`
【解决方案2】:
如果hits 是一个数组,latencyTracking 是一个结构,那么:
SELECT ARRAY(SELECT (SELECT AS STRUCT latencyTracking.* EXCEPT(userTimingLabel)) AS latencyTracking FROM UNNEST(hits)) AS hits
FROM YourTable;
【解决方案3】:
select * except nested column 和您的问题之间的区别在于hits 是一个数组。以下是如何从结构数组中排除列:
SELECT * REPLACE
(ARRAY(SELECT AS STRUCT * EXCEPT(page) FROM UNNEST(hits) h) AS hits)
FROM `google.com:analytics-bigquery.LondonCycleHelmet.ga_sessions_20130910`