您好需要hits.latencyTracking.userTimingLabel
从我的表中排除该列并选择所有其他列。如何在标准 Sql 中执行此操作?我已经发现了一个关于类似问题的问题(BigQuery select * except nested column),但在我的情况下,我有一个双嵌套列,我无法调整代码。谢谢
问问题
1325 次
3 回答
1
如果hits
是一个数组并且latencyTracking
是一个结构,那么:
SELECT ARRAY(SELECT (SELECT AS STRUCT latencyTracking.* EXCEPT(userTimingLabel)) AS latencyTracking FROM UNNEST(hits)) AS hits
FROM YourTable;
于 2017-03-29T15:57:31.560 回答
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`
于 2017-03-29T19:14:04.920 回答
0
select * 除了嵌套列和您的问题之间的区别在于它hits
是一个数组。以下是如何从结构数组中排除列:
SELECT * REPLACE
(ARRAY(SELECT AS STRUCT * EXCEPT(page) FROM UNNEST(hits) h) AS hits)
FROM `google.com:analytics-bigquery.LondonCycleHelmet.ga_sessions_20130910`
于 2017-03-29T15:58:05.883 回答