将 Redshift 超级字符串值数组转换为逗号分隔的字符串

Ant*_*Lam 3 arrays type-conversion super user-defined-functions amazon-redshift

我在 Redshift 中有一些值,它们是超级数据类型,看起来像["a", "b", "c"].

我正在尝试编写一个类似于array_joinAthena SQL 中的函数,它将所有部分与分隔符组合在一起。因此,对于上面的示例,它将返回 varchar 值a, b, c

如果需要,我有权创建 python/sql 用户定义函数,但 python UDF 无法读取超级数据类型。
我尝试将数组转换为子查询表并使用partiql来取消嵌套,但是redshift不允许我在领导者或其他东西上取消嵌套子查询。我的方法是将这些值重新列表在一起。我能够创建一个表而不是子查询,并成功取消嵌套/listagg 值,但 sql 函数不允许使用多个命令。

我还尝试使用涉及 seq_0_5 视图的在线指南将 sql 数组拆分为行,并将代码调整为超级函数。这不起作用,因为当我尝试使用不等式连接表时,redshift 断开了我的连接。

如果我已经接近了,请告诉我,但感觉我已经走进了两个死胡同。

Ant*_*Lam 7

如果有人遇到这个问题,我找到了解决方案!有一个名为 json 的函数json_serialize可以将 super 转换为字符串。然后你只需要修剪掉括号,也许替换掉双引号。