0

我在 BigQuery 中有两个要合并的表。出于解释的目的,让我们将这两个表命名为 A 和 B。因此,我们将 B 合并到 A 中。此外,我有一个名为 id 的主键,基于它我正在执行合并。现在,它们都有一个类型为 ARRAY 的列(让我们将其命名为 X 以进行解释)。如果两个表中的数组不相等,我的主要目的是用 B 中的数组数据替换 A 中的数组数据。我怎样才能做到这一点。我确实在 SO 和其他网站上找到了帖子,但没有一个在我的用例中工作。

A                       B
----------              ----------
id | x                  id | x
----------              ----------
1  | [1,2]              1  | [1,2]
----------              ----------
2  | [3]                2  | [4, 5]

合并的结果应该是

A 
----------
id | x
----------
1  | [1,2]
----------
2  | [4,5]

我怎样才能达到上述结果。任何线索都会非常有帮助。另外,如果还有其他直接解决上述情况的帖子,请指出我

编辑:

我尝试了以下方法:

merge A as main_table
using B as updated_table
on main_table.id = updated_taable.id
when matched and main_table.x != updated_table.x then update set main_table.x = updated_table.x
when not matched then
    insert(id, x) values (updated_table.id, updated_table.x)
;

希望这可以帮助。

4

1 回答 1

1

我不能直接在数组右边使用比较运算符。我的用例是仅在值不相等时更新值。所以,我不能直接使用 != 之类的东西。这是主要问题

您可以使用to_json_string函数“直接”比较两个数组

to_json_string(main_table.x) != to_json_string(updated_table.x)    
于 2021-07-15T18:13:19.900 回答