繁体   English   中英

使用 AWS Athena 中的 serde 格式提取 json 文件中的数组和嵌套数组

[英]Extract arrays and nested arrays within a json file, using serde format in AWS Athena

我正在一个数组和嵌套数组中一一提取数据,但我想用一个像“SELECT *”这样的语句从数组中提取所有数据,它是这样的:

在此处输入图片说明

而不是写作

customerdata.data.balances[8].data.balances[2].date date_29,
customerdata.data.balances[8].data.balances[3].date date_29

等等

我想知道有没有办法从 .data.balances 数组中获取所有值,例如 .data.balances[*]

不确定您的实际数据类型是什么,但您可以尝试对每一层嵌套数据使用 unnest。 像这样的东西:

WITH dataset (id, nested) AS (
    VALUES (
            1,
            CAST(
                ROW(
                    1,
                    ARRAY [ 
                        ROW(11, ARRAY [ ROW(111, '1') ]),
                        ROW(12, ARRAY [ ROW(121, '2') ]) 
                    ]
                ) as ROW(id INTEGER, data ARRAY(ROW(id INTEGER, data ARRAY(ROW (id INTEGER, str VARCHAR)))))
            )
        )
)

SELECT id, t.row.id nested_id, tt.row.id as double_nested_id, tt.row.str
FROM dataset
CROSS JOIN UNNEST(nested.data) AS t (row)
CROSS JOIN UNNEST(t.row.data) AS tt (row);

输出:

ID 嵌套 ID double_nested_id 字符串
1 11 111 1
1 12 121 2

请注意,以这种方式分解数据可能会产生一些性能影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM