我有一个表table
,它的超级列scans
的值是[{"A": 1}, {"A": 2}]
,[{"A": 3}, {"A": 4}, {"A": 5}]
。
我如何用这样的值创建一个列[1, 2]
,[3, 4, 5]
?
我尝试了一些东西,
SELECT
scans[r]."A"
FROM table t
cross join (select row_number() OVER (ORDER BY true) r from some_table) x
where r < get_array_length(t.scans)
字符串
但如果出现错误
[XX000] ERROR: Query unsupported due to an internal error.
Detail: SQL reparse error. Where: function get_array_path(super, bigint) does not exist.
型
1条答案
按热度按时间jv2fixgn1#
您可能需要从解嵌套超级数组https://docs.aws.amazon.com/redshift/latest/dg/query-super.html开始
这将为原始表中的每一行提供一行,并与该行数组中的每个元素交叉连接。从那里,您可以提取“A”值。类似于:
字符串
请记住,由于您在super中使用大写字母,因此需要为Redshift会话打开大小写敏感性。
型