Стандартный SQL - сумма массивов в столбце - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть вопрос относительно BigQuery (с использованием стандартного SQL).

Предположим, у меня есть следующие данные:

Id  Arrays
1   [1, 4]
2   [2]
1   [3, 4, 6, 91]
2   [0, 9, 1, 4, 0, 37]

Я хочу суммировать массивы для следующего вывода:

Id  Arrays
1   [4, 8, 6, 91]
2   [2, 9, 1, 4, 0, 37]

Количество элементов в каждом массиве может варьироваться.И порядок суммированного результата имеет большое значение.

Я рассмотрел пользовательские функции в стандартном SQL, но не смог.

Может кто-нибудь сказать мне, если это возможно достичь с помощью стандартного SQL иесли да, то как?

Было бы здорово, если бы вы могли показать мне пример кода.Заранее спасибо.

1 Ответ

0 голосов
/ 25 февраля 2019

Это должно работать:

SELECT
  id, ARRAY_AGG(x ORDER BY idx) AS arrays
FROM (
  SELECT id, idx, SUM(x) AS x
  FROM table,
  UNNEST(arrays) AS x WITH OFFSET idx
  GROUP BY id, idx
)
GROUP BY id

Сначала он суммирует элементы массива на основе индекса, а затем повторно объединяет в массивы, используя исходный порядок элементов.

...