Google bigquery BigQuery中字符串数组的差异

Google bigquery BigQuery中字符串数组的差异,google-bigquery,Google Bigquery,我试图使用标准SQL确定BigQuery中两个字符串数组之间的差异 比如说: id cust_id orders high_value_orders 1 1 [a,b,c,d] [a,b] 我想做的是: id cust_id diff 1 1 [c,d] 基本上执行设置操作订单-高值订单 我已经尝试了一些东西,我知道它可能需要一些不必要的东西,但我不知道如何准确地编写它。任何帮助都将不胜感激。以下是Bi

我试图使用标准SQL确定BigQuery中两个字符串数组之间的差异

比如说:

id    cust_id    orders     high_value_orders
1     1          [a,b,c,d]    [a,b]
我想做的是:

id    cust_id    diff
1     1          [c,d]
基本上执行设置操作
订单-高值订单


我已经尝试了一些东西,我知道它可能需要一些不必要的东西,但我不知道如何准确地编写它。任何帮助都将不胜感激。

以下是BigQuery标准SQL

#standardSQL
SELECT *,
  ARRAY(
    SELECT element FROM (
      SELECT DISTINCT element FROM t.orders element UNION ALL
      SELECT DISTINCT element FROM t.high_value_orders element 
    )
    GROUP BY element
    HAVING COUNT(1) = 1
  ) AS diff
FROM `project.dataset.table` t   
如果要应用于您的示例数据,请参见下面的示例

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 id, 1 cust_id, ['a','b','c','d'] orders, ['a','b'] high_value_orders
)
SELECT *,
  ARRAY(
    SELECT element FROM (
      SELECT DISTINCT element FROM t.orders element UNION ALL
      SELECT DISTINCT element FROM t.high_value_orders element 
    )
    GROUP BY element
    HAVING COUNT(1) = 1
  ) AS diff
FROM `project.dataset.table` t   
结果是


谢谢@Mikhail Berlyant!