跳到主要内容
版本:Stable-3.1

unnest_bitmap

功能

unnest_bitmap 是一种表函数 (table function),用于将一个 bitmap 展开成多行。

可以将 StarRocks 的 Lateral Join 与 unnest_bitmap 功能结合使用,实现常见的列转行逻辑。

该函数可以用于替换 unnest(bitmap_to_array(bitmap)),性能更好,占用内存资源更少,不受数组长度的限制。

该函数从 3.1 版本开始支持。

语法

unnest_bitmap(bitmap)

参数说明

bitmap: 待转换的 bitmap,必填。

返回值说明

返回数组展开后的多行数据。返回值的数据类型为 Bigint。

示例

假设有表 t1, 其中 c2 列为 bitmap 列。

-- 使用 bitmap_to_string() 函数将 c2 列转换为一个字符串。
mysql> select c1, bitmap_to_string(c2) from t1;
+------+----------------------+
| c1 | bitmap_to_string(c2) |
+------+----------------------+
| 1 | 1,2,3,4,5,6,7,8,9,10 |
+------+----------------------+

-- 使用 unnest_bitmap() 函数将 bitmap 列展开。
mysql> select c1, unnest_bitmap from t1, unnest_bitmap(c2);
+------+---------------+
| c1 | unnest_bitmap |
+------+---------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
| 1 | 7 |
| 1 | 8 |
| 1 | 9 |
| 1 | 10 |
+------+---------------+