BigQuery 更新多个嵌套列



我想了解如何更新 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))

我假设OLPL在这个例子中是数组,但很难说。您可以使用如下查询:

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示例

最新更新