> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation des fonctions bitmap

# Fonctions bitmap

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.

{/*AUTOGENERATED_START*/}

<div id="bitmapAnd">
  ## bitmapAnd
</div>

Introduit dans : v20.1.0

Calcule la conjonction logique (AND) de deux bitmaps.

**Syntaxe**

```sql theme={null}
bitmapAnd(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie un bitmap contenant les bits présents dans les deux bitmaps d’entrée [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res─┐
│ [3] │
└─────┘
```

<div id="bitmapAndCardinality">
  ## bitmapAndCardinality
</div>

Introduit dans : v20.1.0

Renvoie la cardinalité de la conjonction logique (AND) de deux bitmaps.

**Syntaxe**

```sql theme={null}
bitmapAndCardinality(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie le nombre de bits à 1 dans l’intersection des deux bitmaps [`UInt64`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   1 │
└─────┘
```

<div id="bitmapAndnot">
  ## bitmapAndnot
</div>

Introduit dans : v20.1.0

Calcule la différence d'ensemble A AND-NOT B entre deux bitmaps.

**Syntaxe**

```sql theme={null}
bitmapAndnot(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie un bitmap contenant les bits à 1 présents dans le premier bitmap, mais pas dans le second [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res────┐
│ [1, 2] │
└────────┘
```

<div id="bitmapAndnotCardinality">
  ## bitmapAndnotCardinality
</div>

Introduit dans : v20.1.0

Renvoie la cardinalité de l’opération AND-NOT entre deux bitmaps.

**Syntaxe**

```sql theme={null}
bitmapAndnotCardinality(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie le nombre de bits à 1 dans le résultat de `bitmap1 AND-NOT bitmap2` [`UInt64`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   2 │
└─────┘
```

<div id="bitmapBuild">
  ## bitmapBuild
</div>

Introduit dans : v20.1.0

Crée un bitmap à partir d'un tableau d'entiers non signés. C'est l'inverse de la fonction [`bitmapToArray`](/fr/reference/functions/regular-functions/bitmap-functions#bitmapToArray).

**Syntaxe**

```sql theme={null}
bitmapBuild(array)
```

**Arguments**

* `array` — Tableau d’entiers non signés. [`Array(UInt*)`](/fr/reference/data-types/array)

**Valeur renvoyée**

Renvoie un bitmap à partir du tableau fourni [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res);
```

```response title=Response theme={null}
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│     │ AggregateFunction(groupBitmap, UInt8)        │
└─────┴──────────────────────────────────────────────┘
```

<div id="bitmapCardinality">
  ## bitmapCardinality
</div>

Introduit dans : v20.1.0

Renvoie le nombre de bits à 1 (la cardinalité) dans le bitmap.

**Syntaxe**

```sql theme={null}
bitmapCardinality(bitmap)
```

**Arguments**

* `bitmap` — Objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie le nombre de bits à 1 dans le bitmap [`UInt64`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapCardinality(bitmapBuild([1, 3, 3, 5, 7, 7])) AS res
```

```response title=Response theme={null}
┌─res─┐
│   4 │
└─────┘
```

<div id="bitmapContains">
  ## bitmapContains
</div>

Introduit dans : v20.1.0

Vérifie si le bitmap contient un élément donné.

**Syntaxe**

```sql theme={null}
bitmapContains(bitmap, value)
```

**Arguments**

* `bitmap` — objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `value` — Élément à rechercher. [(U)Int8/16/32/64](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie `1` si le bitmap contient la valeur spécifiée, sinon `0` [`UInt8`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapContains(bitmapBuild([1, 2, 3]), 2) AS res;
```

```response title=Response theme={null}
┌─res─┐
│  1  │
└─────┘
```

<div id="bitmapHasAll">
  ## bitmapHasAll
</div>

Introduit dans : v20.1.0

Vérifie si le premier bitmap contient tous les bits à 1 du second bitmap.

**Syntaxe**

```sql theme={null}
bitmapHasAll(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie `1` si tous les bits à 1 du deuxième bitmap sont présents dans le premier bitmap, sinon `0` [`UInt8`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapHasAll(bitmapBuild([1, 2, 3]), bitmapBuild([2, 3])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│  1  │
└─────┘
```

<div id="bitmapHasAny">
  ## bitmapHasAny
</div>

Introduit dans : v20.1.0

Vérifie si le premier bitmap contient au moins un des bits à 1 du second bitmap.

**Syntaxe**

```sql theme={null}
bitmapHasAny(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie `1` si au moins un bit du deuxième bitmap est présent dans le premier bitmap, sinon `0` [`UInt8`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapHasAny(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│  1  │
└─────┘
```

<div id="bitmapMax">
  ## bitmapMax
</div>

Introduit dans : v20.1.0

Renvoie la position du bit à 1 le plus élevé dans un bitmap, ou `0` si le bitmap est vide.

**Syntaxe**

```sql theme={null}
bitmapMax(bitmap)
```

**Arguments**

* `bitmap` — Objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie la position du bit à 1 le plus élevé dans le bitmap, sinon `0` [`UInt64`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   5 │
└─────┘
```

<div id="bitmapMin">
  ## bitmapMin
</div>

Introduit dans : v20.1.0

Renvoie la position du plus petit bit à 1 dans un bitmap. Si aucun bit n’est défini, renvoie `UINT32_MAX` (`UINT64_MAX` si le bitmap contient plus de `2^64` bits).

**Syntaxe**

```sql theme={null}
bitmapMin(bitmap)
```

**Arguments**

* `bitmap` — Objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie la position du plus petit bit à 1 dans le bitmap, ou `UINT32_MAX`/`UINT64_MAX` [`UInt64`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapMin(bitmapBuild([3, 5, 2, 6])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   2 │
└─────┘
```

<div id="bitmapOr">
  ## bitmapOr
</div>

Introduit dans : v20.1.0

Calcule la disjonction logique (OR) de deux bitmaps.

**Syntaxe**

```sql theme={null}
bitmapOr(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**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)`](/fr/reference/data-types/aggregatefunction)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapOr(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘
```

<div id="bitmapOrCardinality">
  ## bitmapOrCardinality
</div>

Introduit dans : v20.1.0

Renvoie la cardinalité de la disjonction logique (OR) de deux bitmaps.

**Syntaxe**

```sql theme={null}
bitmapOrCardinality(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie le nombre de bits à 1 dans l'union des deux bitmaps [`UInt64`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   5 │
└─────┘
```

<div id="bitmapSubsetInRange">
  ## bitmapSubsetInRange
</div>

Introduit dans : v20.1.0

Renvoie un sous-ensemble du bitmap contenant uniquement les bits à 1 dans la plage spécifiée \[start, end). Utilise une indexation à partir de 1.

**Syntaxe**

```sql theme={null}
bitmapSubsetInRange(bitmap, start, end)
```

**Arguments**

* `bitmap` — Bitmap à partir duquel extraire le sous-ensemble. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `start` — Début de la plage (inclus). [`UInt*`](/fr/reference/data-types/int-uint) - `end` — Fin de la plage (exclue). [`UInt*`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un bitmap contenant uniquement les bits à 1 dans la plage spécifiée [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapSubsetInRange(bitmapBuild([1, 2, 3, 4, 5]), 2, 5)) AS res;
```

```response title=Response theme={null}
┌─res───────┐
│ [2, 3, 4] │
└───────────┘
```

<div id="bitmapSubsetLimit">
  ## bitmapSubsetLimit
</div>

Introduit dans : v20.1.0

Renvoie un sous-ensemble d’un bitmap à partir de la position `range_start`, avec au plus `cardinality_limit` bits à 1. Utilise une indexation à partir de 1.

**Syntaxe**

```sql theme={null}
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)
```

**Arguments**

* `bitmap` — Objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `range_start` — Début de la plage (inclus). [`UInt32`](/fr/reference/data-types/int-uint) - `cardinality_limit` — Cardinalité maximale du sous-ensemble. [`UInt32`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un bitmap contenant au plus `cardinality_limit` bits à 1, à partir de `range_start` [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapSubsetLimit(bitmapBuild([1, 5, 3, 2, 8]), 3, 2)) AS res;
```

```response title=Response theme={null}
┌─res────┐
│ [5, 3] │
└────────┘
```

<div id="bitmapToArray">
  ## bitmapToArray
</div>

Introduit dans : v20.1.0

Convertit un bitmap en tableau d’entiers non signés. C’est l’inverse de la fonction [`bitmapBuild`](/fr/reference/functions/regular-functions/bitmap-functions#bitmapBuild).

**Syntaxe**

```sql theme={null}
bitmapToArray(bitmap)
```

**Arguments**

* `bitmap` — bitmap à convertir. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie un tableau d’entiers non signés contenus dans le bitmap [`Array(UInt*)`](/fr/reference/data-types/array)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res;
```

```response title=Response theme={null}
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘
```

<div id="bitmapTransform">
  ## bitmapTransform
</div>

Introduit dans : v20.1.0

Modifie jusqu'à N bits d'un bitmap en remplaçant les valeurs de bit spécifiées dans `from_array` par les valeurs correspondantes de `to_array`.

**Syntaxe**

```sql theme={null}
bitmapTransform(bitmap, from_array, to_array)
```

**Arguments**

* `bitmap` — objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `from_array` — Array des bits à 1 d'origine à remplacer. [`Array(T)`](/fr/reference/data-types/array). - `to_array` — Array des nouveaux bits à 1 de remplacement. [`Array(T)`](/fr/reference/data-types/array).

**Valeur renvoyée**

Renvoie un bitmap dont les éléments sont transformés selon la correspondance indiquée [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5]), [2, 4], [20, 40])) AS res;
```

```response title=Response theme={null}
┌─res───────────────┐
│ [1, 3, 5, 20, 40] │
└───────────────────┘
```

<div id="bitmapXor">
  ## bitmapXor
</div>

Introduit dans : v20.1.0

Calcule la différence symétrique (XOR) de deux bitmaps.

**Syntaxe**

```sql theme={null}
bitmapXor(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**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)`](/fr/reference/data-types/aggregatefunction)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapXor(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res──────────┐
│ [1, 2, 4, 5] │
└──────────────┘
```

<div id="bitmapXorCardinality">
  ## bitmapXorCardinality
</div>

Introduit dans : v20.1.0

Renvoie la cardinalité du XOR (différence symétrique) de deux bitmaps.

**Syntaxe**

```sql theme={null}
bitmapXorCardinality(bitmap1, bitmap2)
```

**Arguments**

* `bitmap1` — Premier objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `bitmap2` — Deuxième objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction).

**Valeur renvoyée**

Renvoie le nombre de bits à 1 dans la différence symétrique des deux bitmaps [`UInt64`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   4 │
└─────┘
```

<div id="subBitmap">
  ## subBitmap
</div>

Introduit dans : v21.9.0

Renvoie un sous-ensemble du bitmap à partir de la position `offset`. La cardinalité maximale du bitmap renvoyé est `cardinality_limit`.

**Syntaxe**

```sql theme={null}
subBitmap(bitmap, offset, cardinality_limit)
```

**Arguments**

* `bitmap` — Objet bitmap. [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction). - `offset` — Nombre de bits à 1 à ignorer à partir du début (indexation à partir de zéro). [`UInt32`](/fr/reference/data-types/int-uint) - `cardinality_limit` — Nombre maximal de bits à 1 à inclure dans le sous-ensemble. [`UInt32`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un bitmap contenant au plus `limit` bits à 1, après omission de `offset` bits à 1, dans l’ordre croissant [`AggregateFunction(groupBitmap, T)`](/fr/reference/data-types/aggregatefunction)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT bitmapToArray(subBitmap(bitmapBuild([1, 2, 3, 4, 5]), 2, 2)) AS res;
```

```response title=Response theme={null}
┌─res────┐
│ [3, 4] │
└────────┘
```
