在 BigQuery 合并语句中检查两个数组是否完全相同

Check if two arrays are exactly the same in BigQuery merge statement

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

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)
;

希望,这对您有所帮助。

I cannot direclty use a compare operator over array right. My use case is that only update values when they are not equal. So, i cannot use something like != directly. This is the main problem

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

to_json_string(main_table.x) != to_json_string(updated_table.x)