Arrays 无法在Presto Athena中将varchar转换为数组

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

我的数据是varchar格式的。我想拆分这个数组的两个元素,这样我就可以从json中提取一个键值

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