2017-07-06 84 views
2

我正在嘗試執行您認爲在BigQuery中的一項簡單操作;我試圖更新一個BigQuery表中的嵌套字段,這是360導出的結果。更新BigQuery表中的嵌套字段

這裏是我的查詢:

#standardSQL 
UPDATE `dataset_name`.`ga_sessions_20170705` 
SET hits.eventInfo.eventLabel = 'some string' 
WHERE TRUE 

但我收到此錯誤信息:

Error: Cannot access field eventInfo on a value with type ARRAY<STRUCT<item STRUCT<transactionId INT64, currencyCode STRING>, isEntrance BOOL, minute INT64, ...>> at [3:10]

如何更新此嵌套領域?

回答

1

hits是一個數組,因此您需要使用數組子查詢來分配給它。它看起來像這樣:

#standardSQL 
UPDATE `dataset_name`.`ga_sessions_20170705` 
SET hits = 
    ARRAY(
    SELECT AS STRUCT * REPLACE(
     (SELECT AS STRUCT eventInfo.* REPLACE('some string' AS eventLabel)) AS eventInfo) 
    FROM UNNEST(hits) 
) 
WHERE TRUE; 
+0

謝謝你的超級快速回復@Elliot!我在運行查詢時遇到此錯誤:'除非使用SELECT AS STRUCT在[4:3]'構建STRUCT值,否則'ARRAY子查詢不能有多個列。不幸的是,這對我來說有點神祕,因爲我對BigQuery很陌生。 –

+0

啊,我忘了'SELECT AS STRUCT'。現在這個工作嗎? –

+0

嗯,現在錯誤說錯誤:錯誤:類型ARRAY 的值,isEntrance BOOL,分鐘INT64,... >>不能分配給匹配,其類型爲ARRAY ,isEntrance BOOL,minute INT64,... >> at [4:3]' –