【发布时间】:2020-07-05 08:18:37
【问题描述】:
我有一个包含三列的BigQuery 表,每一行可以具有与前一行相同的值。
例如:
| col_a | col_b | col_c
+-------+-------+------------
| 123 | 3 | 2019-12-12
| 123 | 3 | 2019-12-12
| 234 | 11 | 2019-10-12
现在我想添加一个名为 col_d 的新列,其中包含一个 UUID。
问题是当我尝试执行UPDATE 命令时,我无法一次只更新一行(因为有些行具有相同的值,而我希望每一行都有不同的 UUID)。
我没有运气尝试的事情:(
限制
UPDATE table
SET col_d = GENERATE_UUID()
LIMIT 1
我想获取所有行,然后使用更新命令遍历它们。但 BigQuery 中的 UPDATE 命令没有限制。
ROW_NUMBER
UPDATE table
SET col_d = ROW_NUMBER() OVER()
但 BigQuery 不允许在 Update 命令中使用解析函数
插入
我可以查询所有行,并使用 UUID 插入它们,然后删除所有没有 UUID 的旧行。这种方法会奏效,这将是我的最后一道关口,但我相信有更好的方法,所以我在这里问。
欢迎任何其他想法或建议。
【问题讨论】:
标签: sql google-bigquery sql-update