如何将数组字符串列展平为雪花中的行?

Posted

技术标签:

【中文标题】如何将数组字符串列展平为雪花中的行?【英文标题】:How to flatten Array string column to row in snowflake? 【发布时间】:2021-12-18 09:10:09 【问题描述】:

我尝试过使用雪花的扁平化,但它不起作用,所以我在问。

示例数据

数组字符串类型 -> varchar
id array string
1 [10001,100000][10003,100000000][10004,10000][10006,100]

我想要

id array string
1 [10001,100000]
1 [10003,100000000]
1 .....

【问题讨论】:

【参考方案1】:
SELECT 
    id, 
    '[' || c.value::string AS "array string"
FROM data d,
     LATERAL FLATTEN(input=>split(d."array string", '[')) c;

应该可以,因为您正在拆分开放数组令牌,因此需要将其放回输出中。

【讨论】:

非常感谢。尽管仅使用“[”创建了一个单独的行,但如果我只过滤它,它就会完全按照我的意愿出现。 @SuyoungJang 啊,是的,第一个 [ 成为它自己的结果,我认为如果你换成它,我认为尾随 ] 也会发生这种情况。哎呀,我没有测试 SQL。

以上是关于如何将数组字符串列展平为雪花中的行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery SQL 中将字符串列拆分为多行单个单词和单词对?

雪花中具有多个 JSON 对象的横向展平数组

计算存储为 Hive 字符串列的 JSON 数组中的对象数

从雪花中的字符串中删除变音符号[重复]

如何在pyspark中将字符串列转换为ArrayType

将 Spark Dataframe 字符串列拆分为多列