doris 实现将某个字段按照规则拆分成多行

1、explode 

explode 函数接受一个数组,会将数组的每个元素映射为单独的行。通常与 LATERAL VIEW 配合使用,以将嵌套数据结构展开为标准的平面表格式。explode 和 explode_outer 区别主要在于空值处理。

当数组不为空或 NULL 时,explode 和 explode_outer 的返回值相同。

当数据为空或 NULL 时:explode 不会产生任何行,并且会过滤掉这些记录。explode_outer 如果数组是空的,explode_outer 会生成一行记录,但展开的列值会是 NULL。如果数组为 NULL,同样会保留一行,并返回 NULL。

语法:

EXPLODE(<array>)
EXPLODE_OUTER(<array>)

2、explode_split

explode_split 表函数用于将字符串按照指定分隔符拆分为多个子字符串,并将每个子字符串展开为一行。每个子字符串作为单独的行返回,通常与 LATERAL VIEW 一起使用,便于将长字符串拆解为单独的部分,进行更细粒度的查询。

explode_split_outer 与 explode_split 类似。但与 explode_split 不同的是,它在处理空值和 NULL 值时会有不同的行为,能够处理空的或 NULL 的字符串。

语法:

EXPLODE_SPLIT(<str>, <delimiter>
EXPLODE_SPLIT_OUTER(<str>, <delimiter>)

ex:

EXPLODE_SPLIT(company,'-')   将字段company中值按照‘-’拆分

 

将表table的A字段,按照‘-’拆分成多行

select  * from table1 lateral view explode_split_outer(A,'-') table_temp as split_a ;

 

 

posted @ 2025-04-03 10:18  iyoer  阅读(452)  评论(0)    收藏  举报