如何在RedShift中从数组中的每个json中提取json元素?

jhiyze9q  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(139)

我有一个表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.

jv2fixgn

jv2fixgn1#

您可能需要从解嵌套超级数组https://docs.aws.amazon.com/redshift/latest/dg/query-super.html开始
这将为原始表中的每一行提供一行,并与该行数组中的每个元素交叉连接。从那里,您可以提取“A”值。类似于:

select s.A 
from table t, t.scans s;

字符串
请记住,由于您在super中使用大写字母,因此需要为Redshift会话打开大小写敏感性。

SET enable_case_sensitive_identifier TO true;

相关问题