unnest
UNNEST 是一种表函数 (table function),用于将一个数组展开成多行。
您可以将 StarRocks 的 Lateral Join 与 UNNEST 功能结合使用,实现常见的列转行逻辑,比如展开 STRING,ARRAY,和 BITMAP 类型的数据。更多使用示例,参见 Lateral join。
从 2.5 版本开始,UNNEST 支持传入多个 array 参数,并且多个 array 的元素类型 和长度(元素个数)可以不同。对于长度不同的情况,以最长数组的长度为基准,长度小于这个长度的数组使用 NULL 进行元素补充,参见 示例二。
从 3.2.7 版本开始,UNNEST 支持 LEFT JOIN ON TRUE,会保留左表中的所有行,即使右表的表达式没有返回任何行,会对右表相应的行用空值填充。参见 示例三。
语法
unnest(array0[, array1 ...])
参数说明
array
:待转换的数组或者能转化成数组的表达式,必填。
返回值说明
返回数组展开后的多行数据。返回值的数据类型取决于数组中的元素类型。
有关 StarRocks 支持的数组元素类型,请参见 ARRAY。
注意事项
- UNNEST 必须与 lateral join 一起使用,但是 lateral join 关键字可以在查询中省略。
- 支持输入多个数组,数组的长度和类型可以不同。
- 如果输入的数组为 NULL 或 空,则计算时跳过(LEFT JOIN ON TRUE 除外)。
- 如果数组中的某个元素为 NULL,该元素对应的位置返回 NULL。