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

3

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

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

如果需要,我有权限创建python/sql用户定义的函数,但python UDF无法读取超级数据类型。
我尝试将数组转换为子查询表,并使用partiql进行展开,但redshift不允许我在leader上展开子查询或其他操作。我的方法是将值列成列表,而不是子查询表,然后再将其合并到一起。我成功地将列表拆分成子查询表,并将值进行分解和合并,但sql函数不允许多个命令。

我也尝试通过使用在线指南,包括一个seq_0_5视图和调整代码以处理超级函数来将SQL数组拆分成行。由于在使用不等式连接表时,redshift会使我断开连接,所以这种方法没有起作用。

让我知道我是否接近成功,但感觉好像已经走进了两个死胡同。

1个回答

7

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


所有这些函数都有红移的最大 varchar 限制,这对于长 jsons 是很麻烦的。 - halil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接