如何使用DML语法更新BigQuery中的嵌套记录?

Sar*_*ara 6 google-bigquery

我有以下BigQuery架构,我正在尝试更新该event_dim.date字段:

在此输入图像描述

我使用标准SQL和新的BigQuery DML尝试了以下查询:

UPDATE `sara-bigquery.examples.app_events_20170113`
SET event_dim.date = '20170113'
WHERE true
Run Code Online (Sandbox Code Playgroud)

但得到了这个错误:

Error: Cannot access field date on a value with type ARRAY<STRUCT<name STRING, params ARRAY<STRUCT<key STRING, 
value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, ...>>>, timestamp_micros INT64, ...>> at [2:15]
Run Code Online (Sandbox Code Playgroud)

我可以使用此查询选择嵌套字段:

 SELECT x.date FROM `sara-bigquery.examples.app_events_20170113`,
 UNNEST(event_dim) x
Run Code Online (Sandbox Code Playgroud)

但无法弄清楚正确的UPDATE语法.

Sar*_*ara 7

该查询失败,因为event_dim是一个结构数组.这应该做的伎俩:

UPDATE `sara-bigquery.examples.app_events_20170113`
SET event_dim = ARRAY(
  SELECT AS STRUCT * REPLACE('20170113' AS date) FROM UNNEST(event_dim)
)
WHERE true
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请查看有关如何在标准SQL中处理数组的文档.

  • 请注意,您需要使用反引号来转义表名,因为它包含`-`. (2认同)