在AWS Athena中使用serde格式提取json文件中的数组和嵌套数组 [英] Extract arrays and nested arrays within a json file, using serde format in AWS Athena

查看:0
本文介绍了在AWS Athena中使用serde格式提取json文件中的数组和嵌套数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在数组和嵌套数组中逐个提取数据,但我希望使用一条语句(如‘SELECT*’)从数组中提取所有数据 它看起来是这样的:

而不是写

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

我想知道是否有方法可以从.data.Balance数组中获取所有值,例如.data.Balance[*]

推荐答案

不确定您的实际数据类型是什么,但您可以尝试对嵌套数据的每一层使用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 双嵌套id str
1 11 111 1
1 12 121 2

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

这篇关于在AWS Athena中使用serde格式提取json文件中的数组和嵌套数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆