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

  • bitmapObjet 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

  • bitmapObjet 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

  • haystackObjet Bitmap où la fonction recherche.
  • needle – Value that the function searches. Type: UInt32.

Valeurs renvoyées

  • 0 — If haystack ne contient pas de needle.
  • 1 — If haystack contenir needle.

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, si bitmap1 et bitmap2 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 │
└─────┘

Article Original

Rating: 4 - 1 votes

Was this content helpful?
★★★★☆