我想了解如何更新 BigQuery 嵌套表的原理。
例如,有一个表:
ID GROSS OL.ID OL.GROSS PL.ID PL.GROSS
1 100 12 200 34 454
34 465 56 5667
67 7876
我想将主值、OL. 和 PL. 的总值更新为任何其他值
有什么方法可以做到这一点?
下面是 BigQuery Standard SQL,并扩展了 Elliott 的答案
通常,struct 中不止两个元素,您只需要更新一两个 - 而不是显式调用它们来重建原始数组 - 您可以使用以下方法
UPDATE `project.dataset.table` SET
OL = ARRAY(SELECT AS STRUCT * REPLACE(1.1 * GROSS AS GROSS) FROM UNNEST(OL)),
PL = ARRAY(SELECT AS STRUCT * REPLACE(1.2 * GROSS AS GROSS) FROM UNNEST(PL))
我假设OL
和PL
在这个例子中是数组,但很难说。您可以使用如下查询:
UPDATE dataset.table
SET
OL = ARRAY(SELECT AS STRUCT ID + 2 AS ID, GROSS + 3 AS GROSS FROM UNNEST(OL)),
PL = ARRAY(SELECT AS STRUCT 1 AS ID, GROSS + 3 AS GROSS FROM UNNEST(PL))
另请参阅文档中的UPDATE repeated records
示例