bitmap_construct_agg:构建位图
速查结论
bitmap_construct_agg(child) 是 Spark SQL 中用于返回一个位图,其中设置了来自子表达式所有值的位位置的聚合函数。
语法
bitmap_construct_agg(child)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| child | 数值表达式 | 通常为 bitmap_bit_position() 的返回值,用于指定需要在该位图中置位的位位置。 |
Examples
> SELECT substring(hex(bitmap_construct_agg(bitmap_bit_position(col))), 0, 6) FROM VALUES (1), (2), (3) AS tab(col);
070000
> SELECT substring(hex(bitmap_construct_agg(bitmap_bit_position(col))), 0, 6) FROM VALUES (1), (1), (1) AS tab(col);
010000
常见报错与避坑指南
子表达式应配合 bitmap_bit_position() 使用。 bitmap_construct_agg 期望的输入是位位置值(0-based),直接传入原始列值而不经过 bitmap_bit_position() 转换,可能导致位图结果不符合预期。
重复值只会在位图中设置一次。 从示例可以看到,当输入为 (1), (1), (1) 时,结果中仅对应位被置位一次,不会因重复而多次设置。这是位图的正常行为,不应理解为数据丢失。
位图大小由最大位位置决定。 如果输入中存在较大的位位置值,生成的位图将占用更多内存。在设计去重场景时,建议将值映射到合理的位位置范围内。
Since: 3.5.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
