Arrays 无法在Presto Athena中将varchar转换为数组
我的数据是varchar格式的。我想拆分这个数组的两个元素,这样我就可以从json中提取一个键值Arrays 无法在Presto Athena中将varchar转换为数组,arrays,json,presto,amazon-athena,trino,Arrays,Json,Presto,Amazon Athena,Trino,我的数据是varchar格式的。我想拆分这个数组的两个元素,这样我就可以从json中提取一个键值 Data format: [ { "skuId": "5bc87ae20d298a283c297ca1", "unitPrice": 0, "id": "5bc87ae20d298a283c297ca1", "quantity": "1" }, { "skuId": "182784738484wefhdchs4848", "unitPric
Data format:
[
{
"skuId": "5bc87ae20d298a283c297ca1",
"unitPrice": 0,
"id": "5bc87ae20d298a283c297ca1",
"quantity": "1"
},
{
"skuId": "182784738484wefhdchs4848",
"unitPrice": 50,
"id": "5bc87ae20d298a283c297ca1",
"quantity": "4"
},
]
例如,我想从上述列中提取skuid。
因此,我提取后的数据应该如下所示:
1 5bc87ae20d298a283c297ca1
2 182784738484wefhdchs4848
对数组的强制转换不起作用
e、 g select castcol as array给出以下错误:
未知类型:数组
因此,我无法取消阵列的检测
如何在Athena中解决此问题?您可以结合使用,将其强制转换为结构化SQL类型的数组/map/row,并将数组中的元素提取为单独的行。请注意,这仅在JSON负载中的数组元素没有尾随逗号的情况下有效。您的示例有一个,但已从下面的示例中删除 以数据值作为值 '[ { skuId:5bc87ae20d298a283c297ca1, 单价:0,, id:5bc87ae20d298a283c297ca1, 数量:1 }, { skuId:182784738484wefhdchs4848, 售价:50元, id:5bc87ae20d298a283c297ca1, 数量:4 } ]' , parsedentries作为 选择castjson_parsevalue作为arrayrowskuId varchar 从数据 选择序号,skuId 来自已解析的、不带序号的tskuId、ordinal 产生:
ordinal | skuId
---------+--------------------------
1 | 5bc87ae20d298a283c297ca1
2 | 182784738484wefhdchs4848
(2 rows)
马丁:我试过在aws雅典娜上执行你们提供的代码片段。我得到一个错误:无效的\u CAST\u参数:无法将JSON转换为arrayrowskuid varcharare。你能找到提取雅典娜数据的解决方案吗?我刚刚尝试了以下解决方案,结果出现了一个错误:无效的\u CAST\u参数:无法将JSON转换为arrayrowskuid varchar