presto unnest varchar数组字段

wxclj1h5  于 2021-08-01  发布在  Java
关注(0)|答案(2)|浏览(604)

我不熟悉presto和以数组形式存储的数据。我有一个表,它有一个varchar列,包含如下所示的数据:

i、 一个申请可以因为多种原因被拒绝。我需要显示“有多少申请因为什么原因被拒绝”,即输出应该如下所示:

我尝试过unnest,但得到“cannot unnest type:varchar”

SELECT * 
FROM table
CROSS JOIN UNNEST(decline_reasons) AS t(value)

也尝试强制转换为数组,但得到“未知类型:数组”

SELECT cast(json_parse(decline_reasons) as array) 
FROM table

如有提示/指导,将不胜感激。

bakd9h0s

bakd9h0s1#

您可以通过以下方式将数据强制转换为数组

cast(json_parse(decline_reasons) as array<varchar>)

然后,你就可以使用 UNNEST 对于数组结果。
https://prestosql.io/docs/current/functions/json.html#json_parse

bbuxkriu

bbuxkriu2#

找到了如何排列和排列的方法。现在数数将是最简单的部分

SELECT split_b 
FROM table
CROSS JOIN UNNEST(SPLIT(replace(replace(replace(json_format(cast(split(replace(replace(replace(regexp_replace(decline_reasons,'\s'),'"',''),'[',''),']',''),',') as json)),'[',''),']',''),'"',''),',')) AS t (split_b)

相关问题