Есть ли способ преобразовать следующие данные (массив «кортежей») в Athena SQL в следующий формат?
Примечание: что количество элементов в массиве не определено и их может быть много, но они всегда парные.
От:
[1234, 1, 5678, 2, ..., 9012, 3]
К:
Я БЫ | Вал |
---|---|
1234 | 1 |
5678 | 2 |
9012 | 3 |
С предоставленными данными вы можете попробовать следующий подход - unnest
массив с порядковым номером, сгруппировать с использованием порядкового номера в массив, а затем извлечь элементы массива:
select try(agg [ 1 ]) id,
try(agg [ 2 ]) val
from (
select (a - 1) / 2 grp, -- group determined from ordinality
array_agg(n) agg -- aggregated array with up to 2 members
from (select array[1234, 1, 5678, 2, 9012, 3] arr) -- initial data
cross join unnest(arr) WITH ORDINALITY AS t (n, a)
group by 1
)
order by grp
Выход:
я бы | вал |
---|---|
1234 | 1 |
5678 | 2 |
9012 | 3 |