跳到主要内容

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真题

交流微信二维码

你可能还想看