跳到主要内容

bitmap_or_agg:位图合并

速查结论

bitmap_or_agg(child) 是 Spark SQL 中用于返回一个位图,它是子表达式中所有位图的按位或(OR)结果的聚合函数。

语法

bitmap_or_agg(child)

参数说明

参数类型说明
child位图(BINARY)需要合并的位图表达式。输入通常是从 bitmap_construct_agg() 创建的位图。

Examples

> SELECT substring(hex(bitmap_or_agg(col)), 0, 6) FROM VALUES (X '10'), (X '20'), (X '40') AS tab(col);
700000
> SELECT substring(hex(bitmap_or_agg(col)), 0, 6) FROM VALUES (X '10'), (X '10'), (X '10') AS tab(col);
100000

常见报错与避坑指南

输入位图应是同构的。 bitmap_or_agg 将来自不同行的位图做按位或运算,如果不同行的位图来自不同的构建逻辑(如不同的 bitmap_bit_position 映射),合并结果可能失去业务含义。建议确保参与合并的位图都使用相同的位位置定义。

重复的位图做 OR 运算不会改变结果。 如示例中三次 X '10' 合并后结果仍为 100000(即 X '10' 本身),因为 10 OR 10 OR 10 = 10。这不是错误,而是按位或运算的数学特性。

Since: 3.5.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

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

交流微信二维码

你可能还想看