Разница в строковых массивах в BigQuery - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь определить разницу между двумя строковыми массивами в BigQuery, используя Стандарт SQL.

Например, скажем:

id    cust_id    orders     high_value_orders
1     1          [a,b,c,d]    [a,b]

Что я хотел бы сделать это получить:

id    cust_id    diff
1     1          [c,d]

В основном выполнение операции установки orders - high_value_orders.

Я пробовал пару вещей, и я знаю, что, вероятно, нужно UNNEST, но я не уверен как именно написать это. Любая помощь будет оценена.

1 Ответ

1 голос
/ 22 апреля 2020

Ниже для BigQuery Standard 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   

результат равен

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...