Les bitmaps peuvent être construits de deux façons. La première consiste à utiliser la fonction d'agrégation groupBitmap avec -State ; la seconde à construire un bitmap à partir d'un objet Array.
bitmapAnd
Introduit dans : v20.1.0
Calcule la conjonction logique (AND) de deux bitmaps.
Syntaxe
bitmapAnd(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie un bitmap contenant les bits présents dans les deux bitmaps d’entrée AggregateFunction(groupBitmap, T)
Exemples
Exemple d’utilisation
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;┌─res─┐
│ [3] │
└─────┘bitmapAndCardinality
Introduit dans : v20.1.0
Renvoie la cardinalité de la conjonction logique (AND) de deux bitmaps.
Syntaxe
bitmapAndCardinality(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie le nombre de bits à 1 dans l’intersection des deux bitmaps UInt64
Exemples
Exemple d’utilisation
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;┌─res─┐
│ 1 │
└─────┘bitmapAndnot
Introduit dans : v20.1.0
Calcule la différence d'ensemble A AND-NOT B entre deux bitmaps.
Syntaxe
bitmapAndnot(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie un bitmap contenant les bits à 1 présents dans le premier bitmap, mais pas dans le second AggregateFunction(groupBitmap, T)
Exemples
Exemple d'utilisation
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;┌─res───┐
│ [1,2] │
└───────┘bitmapAndnotCardinality
Introduit dans : v20.1.0
Renvoie la cardinalité de l’opération AND-NOT entre deux bitmaps.
Syntaxe
bitmapAndnotCardinality(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie le nombre de bits à 1 dans le résultat de bitmap1 AND-NOT bitmap2 UInt64
Exemples
Exemple d'utilisation
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;┌─res─┐
│ 2 │
└─────┘bitmapBuild
Introduit dans : v20.1.0
Crée un bitmap à partir d'un tableau d'entiers. Les types d’éléments pris en charge sont des entiers signés et non signés de 8, 16, 32 ou 64 bits. C'est l'inverse de la fonction bitmapToArray.
Syntaxe
bitmapBuild(array)Arguments
array— Tableau d’entiers.Array((U)Int*)
Valeur renvoyée
Renvoie un bitmap à partir du tableau fourni AggregateFunction(groupBitmap, T)
Exemples
Exemple d’utilisation
-- A bitmap is a binary value, so it is shown with `hex`.
SELECT hex(bitmapBuild([1, 2, 3, 4, 5])) AS res, toTypeName(bitmapBuild([1, 2, 3, 4, 5])) AS type;┌─res────────────┬─type──────────────────────────────────┐
│ 00050102030405 │ AggregateFunction(groupBitmap, UInt8) │
└────────────────┴───────────────────────────────────────┘Bitmap signé
-- A bitmap is a binary value, so it is shown with `hex`.
SELECT hex(bitmapBuild([-128, -1]::Array(Int8))) AS res, toTypeName(bitmapBuild([-128, -1]::Array(Int8))) AS type;┌─res──────┬─type─────────────────────────────────┐
│ 000280FF │ AggregateFunction(groupBitmap, Int8) │
└──────────┴──────────────────────────────────────┘bitmapCardinality
Introduit dans : v20.1.0
Renvoie le nombre de bits à 1 (la cardinalité) dans le bitmap.
Syntaxe
bitmapCardinality(bitmap)Arguments
bitmap— Objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie le nombre de bits à 1 dans le bitmap UInt64
Exemples
Exemple d'utilisation
SELECT bitmapCardinality(bitmapBuild([1, 3, 3, 5, 7, 7])) AS res┌─res─┐
│ 4 │
└─────┘bitmapContains
Introduit dans : v20.1.0
Vérifie si le bitmap contient un élément donné. La valeur est comparée en tant qu’entier non signé du type d’élément du bitmap. Pour les bitmaps signés, un élément négatif correspond à son équivalent non signé (par exemple, la valeur Int8 -1 correspond à 255).
Syntaxe
bitmapContains(bitmap, value)Arguments
bitmap— objet bitmap.AggregateFunction(groupBitmap, T). -value— Élément à rechercher. (U)Int8/16/32/64
Valeur renvoyée
Renvoie 1 si le bitmap contient la valeur spécifiée, sinon 0 UInt8
Exemples
Exemple d'utilisation
SELECT bitmapContains(bitmapBuild([1, 2, 3]), 2) AS res;┌─res─┐
│ 1 │
└─────┘Bitmap signé
SELECT bitmapContains(bitmapBuild([-1]::Array(Int8)), 255) AS res;┌─res─┐
│ 1 │
└─────┘bitmapHasAll
Introduit dans : v20.1.0
Vérifie si le premier bitmap contient tous les bits à 1 du second bitmap.
Syntaxe
bitmapHasAll(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie 1 si tous les bits à 1 du deuxième bitmap sont présents dans le premier bitmap, sinon 0 UInt8
Exemples
Exemple d'utilisation
SELECT bitmapHasAll(bitmapBuild([1, 2, 3]), bitmapBuild([2, 3])) AS res;┌─res─┐
│ 1 │
└─────┘bitmapHasAny
Introduit dans : v20.1.0
Vérifie si le premier bitmap contient au moins un des bits à 1 du second bitmap.
Syntaxe
bitmapHasAny(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie 1 si au moins un bit du deuxième bitmap est présent dans le premier bitmap, sinon 0 UInt8
Exemples
Exemple d'utilisation
SELECT bitmapHasAny(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5])) AS res;┌─res─┐
│ 1 │
└─────┘bitmapMax
Introduit dans : v20.1.0
Renvoie le plus grand élément d’un bitmap, interprété comme un entier non signé du type d’élément du bitmap. Pour les bitmaps signés, les valeurs négatives sont traitées comme leurs équivalents non signés (par exemple, la valeur Int8 -1 correspond à 255). Renvoie 0 si le bitmap est vide.
Syntaxe
bitmapMax(bitmap)Arguments
bitmap— Objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie le plus grand élément sous forme de valeur non signée du type d’élément du bitmap, ou 0 si le bitmap est vide UInt64
Exemples
Exemple d'utilisation
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res;┌─res─┐
│ 5 │
└─────┘Bitmap signé
SELECT bitmapMax(bitmapBuild([-128, -1]::Array(Int8))) AS res;┌─res─┐
│ 255 │
└─────┘bitmapMin
Introduite dans : v20.1.0
Renvoie le plus petit élément d’un bitmap, interprété comme un entier non signé du type d’élément du bitmap. Pour les bitmaps signés, les valeurs négatives sont traitées comme leurs équivalents non signés (par exemple, la valeur Int8 -128 correspond à 128). Si le bitmap est vide, renvoie UINT32_MAX (UINT64_MAX si le type d’élément du bitmap dépasse 32 bits).
Syntaxe
bitmapMin(bitmap)Arguments
bitmap— Objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie le plus petit élément sous forme de valeur non signée du type d’élément du bitmap, ou UINT32_MAX/UINT64_MAX si le bitmap est vide UInt64
Exemples
Exemple d’utilisation
SELECT bitmapMin(bitmapBuild([3, 5, 2, 6])) AS res;┌─res─┐
│ 2 │
└─────┘Bitmap signé
SELECT bitmapMin(bitmapBuild([-128, -1]::Array(Int8))) AS res;┌─res─┐
│ 128 │
└─────┘bitmapOr
Introduit dans : v20.1.0
Calcule la disjonction logique (OR) de deux bitmaps.
Syntaxe
bitmapOr(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie un bitmap contenant les bits à 1 présents dans l'un ou l'autre des bitmaps d'entrée AggregateFunction(groupBitmap, T)
Exemples
Exemple d'utilisation
SELECT bitmapToArray(bitmapOr(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘bitmapOrCardinality
Introduit dans : v20.1.0
Renvoie la cardinalité de la disjonction logique (OR) de deux bitmaps.
Syntaxe
bitmapOrCardinality(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie le nombre de bits à 1 dans l'union des deux bitmaps UInt64
Exemples
Exemple d'utilisation
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;┌─res─┐
│ 5 │
└─────┘bitmapSubsetInRange
Introduit dans : v20.1.0
Renvoie un sous-ensemble du bitmap contenant les éléments dans la plage de valeurs [start, end). Les valeurs des éléments sont comparées en tant qu'entiers non signés du type d'élément du bitmap.
Syntaxe
bitmapSubsetInRange(bitmap, start, end)Arguments
bitmap— Bitmap à partir duquel extraire le sous-ensemble.AggregateFunction(groupBitmap, T). -start— Début de la plage (inclus).UInt*-end— Fin de la plage (exclue).UInt*
Valeur renvoyée
Renvoie un bitmap contenant uniquement les éléments dans la plage de valeurs spécifiée AggregateFunction(groupBitmap, T)
Exemples
Exemple d'utilisation
SELECT bitmapToArray(bitmapSubsetInRange(bitmapBuild([1, 2, 3, 4, 5]), 2, 5)) AS res;┌─res─────┐
│ [2,3,4] │
└─────────┘bitmapSubsetLimit
Introduit dans : v20.1.0
Renvoie un sous-ensemble d’au plus cardinality_limit éléments dont les valeurs sont supérieures ou égales à range_start, en sélectionnant les plus petites selon l’ordre non signé.
Syntaxe
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)Arguments
bitmap— Objet bitmap.AggregateFunction(groupBitmap, T). -range_start— Début de la plage (inclus).UInt32-cardinality_limit— Cardinalité maximale du sous-ensemble.UInt32
Valeur renvoyée
Renvoie un bitmap contenant au plus cardinality_limit éléments dont la valeur non signée est au moins range_start AggregateFunction(groupBitmap, T)
Exemples
Exemple d'utilisation
SELECT arraySort(bitmapToArray(bitmapSubsetLimit(bitmapBuild([1, 5, 3, 2, 8]), 3, 2))) AS res;┌─res───┐
│ [3,5] │
└───────┘bitmapToArray
Introduit dans : v20.1.0
Convertit un bitmap en un tableau contenant ses éléments. Le type d’élément du tableau correspond au type d’élément T du bitmap (entier signé ou non signé). C’est l’inverse de la fonction bitmapBuild.
Syntaxe
bitmapToArray(bitmap)Arguments
bitmap— bitmap à convertir.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie un tableau des éléments contenus dans le bitmap Array(T)
Exemples
Exemple d’utilisation
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res;┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘Bitmap signé
SELECT arraySort(bitmapToArray(bitmapBuild([-128, -1]::Array(Int8)))) AS res;┌─res───────┐
│ [-128,-1] │
└───────────┘bitmapTransform
Introduit dans : v20.1.0
Remplace les éléments d’un bitmap selon une correspondance entre from_array et to_array.
Les valeurs sont interprétées comme des entiers non signés du type d’élément du bitmap (même domaine que bitmapContains).
Pour les bitmaps signés, un élément négatif correspond à son équivalent non signé (par exemple, la valeur Int8 -1 correspond à 255).
Une valeur de to_array qui ne peut pas être représentée dans le type d’élément du bitmap lève BAD_ARGUMENTS. Une valeur de from_array
qui ne peut pas être représentée n’est simplement pas trouvée, de sorte que le remplacement correspondant ne s’applique pas.
Syntaxe
bitmapTransform(bitmap, from_array, to_array)Arguments
bitmap— objet bitmap.AggregateFunction(groupBitmap, T). -from_array— Array des bits à 1 d’origine à remplacer.Array(T). -to_array— Array des nouveaux bits à 1 de remplacement.Array(T).
Valeur renvoyée
Renvoie un bitmap dont les éléments sont transformés selon la correspondance indiquée AggregateFunction(groupBitmap, T)
Exemples
Exemple d'utilisation
SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5]), [2, 4], [20, 40])) AS res;┌─res───────────┐
│ [1,3,5,20,40] │
└───────────────┘Bitmap signé
SELECT arraySort(bitmapToArray(bitmapTransform(bitmapBuild([-1, 0]::Array(Int8)), [255], [10]))) AS res;┌─res────┐
│ [0,10] │
└────────┘bitmapXor
Introduit dans : v20.1.0
Calcule la différence symétrique (XOR) de deux bitmaps.
Syntaxe
bitmapXor(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie un bitmap contenant les bits à 1 présents dans l’un ou l’autre des bitmaps d’entrée, mais pas dans les deux AggregateFunction(groupBitmap, T)
Exemples
Exemple d'utilisation
SELECT bitmapToArray(bitmapXor(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;┌─res───────┐
│ [1,2,4,5] │
└───────────┘bitmapXorCardinality
Introduit dans : v20.1.0
Renvoie la cardinalité du XOR (différence symétrique) de deux bitmaps.
Syntaxe
bitmapXorCardinality(bitmap1, bitmap2)Arguments
bitmap1— Premier objet bitmap.AggregateFunction(groupBitmap, T). -bitmap2— Deuxième objet bitmap.AggregateFunction(groupBitmap, T).
Valeur renvoyée
Renvoie le nombre de bits à 1 dans la différence symétrique des deux bitmaps UInt64
Exemples
Exemple d'utilisation
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;┌─res─┐
│ 4 │
└─────┘subBitmap
Introduit dans : v21.9.0
Renvoie un sous-ensemble du bitmap après avoir ignoré offset éléments dans l’ordre croissant des valeurs non signées. La cardinalité maximale du bitmap renvoyé est cardinality_limit.
Syntaxe
subBitmap(bitmap, offset, cardinality_limit)Arguments
bitmap— Objet bitmap.AggregateFunction(groupBitmap, T). -offset— Nombre de bits à 1 à ignorer depuis le début (indexation à partir de zéro).UInt32-cardinality_limit— Nombre maximal de bits à 1 à inclure dans le sous-ensemble.UInt32
Valeur renvoyée
Renvoie un bitmap contenant au plus cardinality_limit éléments après omission de offset éléments dans l’ordre croissant des valeurs non signées AggregateFunction(groupBitmap, T)
Exemples
Exemple d’utilisation
SELECT bitmapToArray(subBitmap(bitmapBuild([1, 2, 3, 4, 5]), 2, 2)) AS res;┌─res───┐
│ [3,4] │
└───────┘