11 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | f865c9653f |
49 | Bitmap |
Fonctions de Bitmap
Les fonctions Bitmap fonctionnent pour le calcul de la valeur de L'objet de deux bitmaps, il s'agit de renvoyer un nouveau bitmap ou une cardinalité tout en utilisant le calcul de la formule, tel que and, or, xor, and not, etc.
Il existe 2 types de méthodes de construction pour L'objet Bitmap. L'un doit être construit par la fonction d'agrégation groupBitmap avec-State, l'autre doit être construit par L'objet Array. Il est également de convertir L'objet Bitmap en objet tableau.
RoaringBitmap est enveloppé dans une structure de données pendant le stockage réel des objets Bitmap. Lorsque la cardinalité est inférieure ou égale à 32, elle utilise Set objet. Lorsque la cardinalité est supérieure à 32, elle utilise l'objet RoaringBitmap. C'est pourquoi le stockage de faible cardinalité jeu est plus rapide.
Pour plus d'informations sur RoaringBitmap, voir: CRoaring.
bitmapBuild
Construire un bitmap à partir d'un tableau entier non signé.
bitmapBuild(array)
Paramètre
array
– unsigned integer array.
Exemple
SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res)
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│ │ AggregateFunction(groupBitmap, UInt8) │
└─────┴──────────────────────────────────────────────┘
bitmapToArray
Convertir bitmap en tableau entier.
bitmapToArray(bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘
bitmapSubsetInRange
Retourne le sous-ensemble dans la plage spécifiée (n'inclut pas le range_end).
bitmapSubsetInRange(bitmap, range_start, range_end)
Paramètre
bitmap
– Objet Bitmap.range_start
– range start point. Type: UInt32.range_end
– range end point(excluded). Type: UInt32.
Exemple
SELECT bitmapToArray(bitmapSubsetInRange(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] │
└───────────────────┘
bitmapSubsetLimit
Crée un sous-ensemble de bitmap avec n éléments pris entre range_start
et cardinality_limit
.
Syntaxe
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)
Paramètre
bitmap
– Objet Bitmap.range_start
– The subset starting point. Type: UInt32.cardinality_limit
– The subset cardinality upper limit. Type: UInt32.
Valeur renvoyée
Ensemble.
Type: Bitmap object
.
Exemple
Requête:
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
Résultat:
┌─res───────────────────────┐
│ [30,31,32,33,100,200,500] │
└───────────────────────────┘
bitmapContains
Vérifie si le bitmap contient un élément.
bitmapContains(haystack, needle)
Paramètre
haystack
– Objet Bitmap où la fonction recherche.needle
– Value that the function searches. Type: UInt32.
Valeurs renvoyées
- 0 — If
haystack
ne contient pas deneedle
. - 1 — If
haystack
contenirneedle
.
Type: UInt8
.
Exemple
SELECT bitmapContains(bitmapBuild([1,5,7,9]), toUInt32(9)) AS res
┌─res─┐
│ 1 │
└─────┘
bitmapHasAny
Vérifie si deux bitmaps ont une intersection par certains éléments.
bitmapHasAny(bitmap1, bitmap2)
Si vous êtes sûr que bitmap2
contient strictement un élément, envisagez d'utiliser le bitmapContains fonction. Cela fonctionne plus efficacement.
Paramètre
bitmap*
– bitmap object.
Les valeurs de retour
1
, sibitmap1
etbitmap2
avoir un élément similaire au moins.0
, autrement.
Exemple
SELECT bitmapHasAny(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
┌─res─┐
│ 1 │
└─────┘
bitmapHasAll
Analogue à hasAll(array, array)
renvoie 1 si le premier bitmap contient tous les éléments du second, 0 sinon.
Si le deuxième argument est un bitmap vide, alors renvoie 1.
bitmapHasAll(bitmap,bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapHasAll(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
┌─res─┐
│ 0 │
└─────┘
bitmapCardinality
Retrun bitmap cardinalité de type UInt64.
bitmapCardinality(bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapCardinality(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│ 5 │
└─────┘
bitmapMin
Retrun la plus petite valeur de type UInt64 dans l'ensemble, UINT32_MAX si l'ensemble est vide.
bitmapMin(bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapMin(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│ 1 │
└─────┘
bitmapMax
Retrun la plus grande valeur de type UInt64 dans l'ensemble, 0 si l'ensemble est vide.
bitmapMax(bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│ 5 │
└─────┘
bitmapTransform
Transformer un tableau de valeurs d'une image à l'autre tableau de valeurs, le résultat est une nouvelle image.
bitmapTransform(bitmap, from_array, to_array)
Paramètre
bitmap
– bitmap object.from_array
– UInt32 array. For idx in range [0, from_array.size()), if bitmap contains from_array[idx], then replace it with to_array[idx]. Note that the result depends on array ordering if there are common elements between from_array and to_array.to_array
– UInt32 array, its size shall be the same to from_array.
Exemple
SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), cast([5,999,2] as Array(UInt32)), cast([2,888,20] as Array(UInt32)))) AS res
┌─res───────────────────┐
│ [1,3,4,6,7,8,9,10,20] │
└───────────────────────┘
bitmapAnd
Deux bitmap et calcul, le résultat est un nouveau bitmap.
bitmapAnd(bitmap,bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res─┐
│ [3] │
└─────┘
bitmapOr
Deux bitmap ou calcul, le résultat est un nouveau bitmap.
bitmapOr(bitmap,bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapToArray(bitmapOr(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘
bitmapXor
Deux bitmap xor calcul, le résultat est une nouvelle image.
bitmapXor(bitmap,bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapToArray(bitmapXor(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res───────┐
│ [1,2,4,5] │
└───────────┘
bitmapetnot
Deux Bitmap andnot calcul, le résultat est un nouveau bitmap.
bitmapAndnot(bitmap,bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res───┐
│ [1,2] │
└───────┘
bitmapetcardinalité
Deux bitmap et calcul, retour cardinalité de type UInt64.
bitmapAndCardinality(bitmap,bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 1 │
└─────┘
bitmapOrCardinality
Deux bitmap ou calcul, retour cardinalité de type UInt64.
bitmapOrCardinality(bitmap,bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 5 │
└─────┘
bitmapXorCardinality
Deux bitmap XOR calcul, retour cardinalité de type UInt64.
bitmapXorCardinality(bitmap,bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 4 │
└─────┘
bitmapetnotcardinality
Deux bitmap andnot calcul, retour cardinalité de type UInt64.
bitmapAndnotCardinality(bitmap,bitmap)
Paramètre
bitmap
– bitmap object.
Exemple
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 2 │
└─────┘