我看到了一些类似的问题,但找不到适合我的问题的答案。我认为我正在努力解决的是我想要解除嵌套的数组没有任何连接键(或者也许我不明白我面临的问题)。
所以我有这个数据集:
with raw as (
select
['a','b','c','d'] as keys,
[1,2,3,4] values
union all
select
['a','b','c','d'] ,
[5,6,7,8]
)
select
*
from
raw
我希望每个键都有一列,其对应的值作为行。
到目前为止,我有类似的东西,但我有点卡住了。我认为我需要在某个时候使用偏移,但我不确定如何以及在哪里......
with raw as (
select
['a','b','c','d'] as keys,
[1,2,3,4] values
union all
select
['a','b','c','d'] ,
[5,6,7,8]
)
select
*
from (
select
*
from raw,
unnest(keys) as un_keys,
unnest(values) as un_values
)
pivot(max(un_values) for un_keys in ('a','b'))
以下应该有帮助
WITH raw AS (
SELECT ['a','b','c','d'] AS keys, [1,2,3,4] VALUES UNION ALL
SELECT ['a','b','c','d'], [5,6,7,8]
)
SELECT * EXCEPT(line) FROM (
SELECT line, key, VALUE FROM (
SELECT *, ROW_NUMBER() OVER() AS line FROM raw
), UNNEST(keys) AS key WITH OFFSET
JOIN UNNEST(VALUES) AS VALUE WITH OFFSET
USING (OFFSET))
PIVOT(ANY_VALUE(VALUE) FOR key IN ('a', 'b', 'c', 'd'))
有输出