Функции битмапа
Битмапы могут быть созданы двумя способами. Первый способ - это использование агрегатной функции groupBitmap с -State
, другой способ - создать битмап из объекта массива.
bitmapBuild
Создает битмап из массива беззнаковых целых чисел.
Синтаксис
Аргументы
array
– массив беззнаковых целых чисел.
Пример
bitmapToArray
Преобразует битмап в массив целых чисел.
Синтаксис
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapSubsetInRange
Возвращает подмножество битмапа с битами в пределах заданного интервала значений.
Синтаксис
Аргументы
bitmap
– объект битмапа.range_start
– начало диапазона (включительно). UInt32.range_end
– конец диапазона (исключительно). UInt32.
Пример
Результат:
bitmapSubsetLimit
Возвращает подмножество битмапа с наименьшим значением бита range_start
и не более cardinality_limit
элементов.
Синтаксис
Аргументы
bitmap
– объект битмапа.range_start
– начало диапазона (включительно). UInt32.cardinality_limit
– максимальная кардинальность подмножества. UInt32.
Пример
Результат:
subBitmap
Возвращает подмножество битмапа, начиная с позиции offset
. Максимальная кардинальность возвращенного битмапа составляет cardinality_limit
.
Синтаксис
Аргументы
bitmap
– битмап. объект битмапа.offset
– позиция первого элемента подмножества. UInt32.cardinality_limit
– максимальное количество элементов в подмножестве. UInt32.
Пример
Результат:
bitmapContains
Проверяет, содержит ли битмап элемент.
Аргументы
bitmap
– объект битмапа.needle
– искомое значение бита. UInt32.
Возвращаемые значения
Пример
Результат:
bitmapHasAny
Проверяет, пересекаются ли два битмапа.
Если bitmap2
содержит ровно один элемент, рассмотрите возможность использования bitmapContains вместо этого, так как это работает более эффективно.
Синтаксис
Аргументы
bitmap1
– объект битмапа 1.bitmap2
– объект битмапа 2.
Возвращаемые значения
1
, еслиbitmap1
иbitmap2
имеют хотя бы один общий элемент.0
, в противном случае.
Пример
Результат:
bitmapHasAll
Возвращает 1, если первый битмап содержит все элементы второго битмапа, иначе 0. Если второй битмап пуст, возвращает 1.
См. также hasAll(array, array)
.
Синтаксис
Аргументы
bitmap1
– объект битмапа 1.bitmap2
– объект битмапа 2.
Пример
Результат:
bitmapCardinality
Возвращает кардинальность битмапа.
Синтаксис
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapMin
Вычисляет наименьший установленный бит в битмапе, или UINT32_MAX, если битмап пуст.
Синтаксис
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapMax
Вычисляет наибольший установленный бит в битмапе, или 0, если битмап пуст.
Синтаксис
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapTransform
Заменяет не более N бит в битмапе. Старое и новое значение i-го замененного бита задаются from_array[i]
и to_array[i]
.
Результат зависит от порядка массивов from_array
и to_array
.
Синтаксис
Аргументы
bitmap
– объект битмапа.from_array
– массив UInt32. Для индекса в диапазоне [0, from_array.size()), если битмап содержит from_array[idx], затем замените его на to_array[idx].to_array
– массив UInt32 такого же размера, какfrom_array
.
Пример
Результат:
bitmapAnd
Вычисляет логическое и двух битмапов.
Синтаксис
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapOr
Вычисляет логическое или двух битмапов.
Синтаксис
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapXor
Выполняет операцию XOR для двух битмапов.
Синтаксис
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapAndnot
Вычисляет логическое и двух битмапов и негативирует результат.
Синтаксис
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapAndCardinality
Возвращает кардинальность логического и двух битмапов.
Синтаксис
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapOrCardinality
Возвращает кардинальность логического или двух битмапов.
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapXorCardinality
Возвращает кардинальность XOR двух битмапов.
Аргументы
bitmap
– объект битмапа.
Пример
Результат:
bitmapAndnotCardinality
Возвращает кардинальность операции AND-NOT двух битмапов.
Аргументы
bitmap
– объект битмапа.
Пример
Результат: