ClickHouse/docs/fr/sql-reference/functions/bitmap-functions.md
Ivan Blinkov d91c97d15d
[docs] replace underscores with hyphens (#10606)
* Replace underscores with hyphens

* remove temporary code

* fix style check

* fix collapse
2020-04-30 21:19:18 +03:00

11 KiB
Raw Blame History

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 Lobjet de deux bitmaps, il sagit 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 Lobjet Bitmap. Lun doit être construit par la fonction dagrégation groupBitmap avec-State, lautre doit être construit par Lobjet Array. Il est également de convertir Lobjet 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 lobjet RoaringBitmap. Cest pourquoi le stockage de faible cardinalité jeu est plus rapide.

Pour plus dinformations sur RoaringBitmap, voir: CRoaring.

bitmapBuild

Construire un bitmap à partir dun 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 (ninclut 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 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 dutiliser 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 lensemble, UINT32_MAX si lensemble 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 lensemble, 0 si lensemble 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 dune image à lautre 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