* DOCSUP-2806: Add meta intro. * DOCSUP-2806: Update meta intro. * DOCSUP-2806: Fix meta. * DOCSUP-2806: Add quotes for meta headers. * DOCSUP-2806: Remove quotes from meta headers. * DOCSUP-2806: Add meta headers. * DOCSUP-2806: Fix quotes in meta headers. * DOCSUP-2806: Update meta headers. * DOCSUP-2806: Fix link to nowhere in EN. * DOCSUP-2806: Fix link (settings to tune) * DOCSUP-2806: Fix links. * DOCSUP-2806:Fix links EN * DOCSUP-2806: Fix build errors. * DOCSUP-2806: Fix meta intro. * DOCSUP-2806: Fix toc_priority in examples datasets TOC. * DOCSUP-2806: Fix items order in toc. * DOCSUP-2806: Fix order in toc. * DOCSUP-2806: Fix toc order. * DOCSUP-2806: Fix order in toc. * DOCSUP-2806: Fix toc index in create * DOCSUP-2806: Fix toc order in create. Co-authored-by: romanzhukov <romanzhukov@yandex-team.ru> Co-authored-by: alexey-milovidov <milovidov@yandex-team.ru>
9.5 KiB
toc_priority | toc_title |
---|---|
49 | Функции для битмапов |
Функции для битовых масок
bitmapBuild
Создаёт битовый массив из массива целочисленных значений.
bitmapBuild(array)
Параметры
array
– массив типаUInt*
.
Пример
SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res)
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│ │ AggregateFunction(groupBitmap, UInt8) │
└─────┴──────────────────────────────────────────────┘
bitmapToArray
Преобразует битовый массив в массив целочисленных значений.
bitmapToArray(bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘
bitmapSubsetLimit
Создает подмножество битмапа с n элементами, расположенными между range_start
и cardinality_limit
.
Синтаксис
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)
Параметры
-
bitmap
– Битмап. Bitmap object. -
range_start
– Начальная точка подмножества. UInt32. -
cardinality_limit
– Верхний предел подмножества. UInt32.
Возвращаемое значение
Подмножество битмапа.
Тип: Bitmap object
.
Пример
Запрос:
SELECT bitmapToArray(bitmapSubsetLimit(bitmapBuild([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,100,200,500]), toUInt32(30), toUInt32(200))) AS res
Ответ:
┌─res───────────────────────┐
│ [30,31,32,33,100,200,500] │
└───────────────────────────┘
bitmapContains
Проверяет вхождение элемента в битовый массив.
bitmapContains(haystack, needle)
Параметры
haystack
– объект Bitmap, в котором функция ищет значение.needle
– значение, которое функция ищет. Тип — UInt32.
Возвращаемые значения
- 0 — если в
haystack
нетneedle
. - 1 — если в
haystack
естьneedle
.
Тип — UInt8
.
Пример
SELECT bitmapContains(bitmapBuild([1,5,7,9]), toUInt32(9)) AS res
┌─res─┐
│ 1 │
└─────┘
bitmapHasAny
Проверяет, имеют ли два битовых массива хотя бы один общий элемент.
bitmapHasAny(bitmap1, bitmap2)
Если вы уверены, что bitmap2
содержит строго один элемент, используйте функцию bitmapContains. Она работает эффективнее.
Параметры
bitmap*
– массив любого типа с набором элементов.
Возвращаемые значения
1
, еслиbitmap1
иbitmap2
имеют хотя бы один одинаковый элемент.0
, в противном случае.
Пример
SELECT bitmapHasAny(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
┌─res─┐
│ 1 │
└─────┘
bitmapHasAll
Аналогично функции hasAll(array, array)
возвращает 1 если первый битовый массив содержит все элементы второго, 0 в противном случае.
Если второй аргумент является пустым битовым массивом, то возвращает 1.
bitmapHasAll(bitmap,bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapHasAll(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
┌─res─┐
│ 0 │
└─────┘
bitmapAnd
Логическое И для двух битовых массивов. Результат — новый битовый массив.
bitmapAnd(bitmap,bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res─┐
│ [3] │
└─────┘
bitmapOr
Логическое ИЛИ для двух битовых массивов. Результат — новый битовый массив.
bitmapOr(bitmap,bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapToArray(bitmapOr(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘
bitmapXor
Логическое исключающее ИЛИ для двух битовых массивов. Результат — новый битовый массив.
bitmapXor(bitmap,bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapToArray(bitmapXor(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res───────┐
│ [1,2,4,5] │
└───────────┘
bitmapAndnot
Логическое отрицание И для двух битовых массивов. Результат — новый битовый массив.
bitmapAndnot(bitmap,bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res───┐
│ [1,2] │
└───────┘
bitmapCardinality
Возвращает кардинальность битового массива в виде значения типа UInt64
.
bitmapCardinality(bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapCardinality(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│ 5 │
└─────┘
bitmapAndCardinality
Выполняет логическое И и возвращает кардинальность (UInt64
) результирующего битового массива.
bitmapAndCardinality(bitmap,bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 1 │
└─────┘
bitmapOrCardinality
Выполняет логическое ИЛИ и возвращает кардинальность (UInt64
) результирующего битового массива.
bitmapOrCardinality(bitmap,bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 5 │
└─────┘
bitmapXorCardinality
Выполняет логическое исключающее ИЛИ и возвращает кардинальность (UInt64
) результирующего битового массива.
bitmapXorCardinality(bitmap,bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 4 │
└─────┘
bitmapAndnotCardinality
Выполняет логическое отрицание И и возвращает кардинальность (UInt64
) результирующего битового массива.
bitmapAndnotCardinality(bitmap,bitmap)
Параметры
bitmap
– битовый массив.
Пример
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 2 │
└─────┘