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

问题描述 投票:0回答:1

我有一个表

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.
json amazon-web-services amazon-redshift super-columns
1个回答
0
投票

您可能需要从解除超级数组的嵌套开始 - https://docs.aws.amazon.com/redshift/latest/dg/query-super.html

这将为原始表中的每一行提供一行,并与该行的数组中的每个元素交叉连接。从那里您可以提取“A”值。比如:

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

请记住,由于您在超级中使用大写字母,因此您需要为 Redshift 会话启用区分大小写。

SET enable_case_sensitive_identifier TO true;
© www.soinside.com 2019 - 2024. All rights reserved.