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

> Documentación de las funciones de bitmap

# Funciones de bitmap

Los bitmaps se pueden construir de dos formas. La primera utiliza la función de agregación groupBitmap con `-State`; la segunda consiste en construir un bitmap a partir de un Array.

{/*AUTOGENERATED_START*/}

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

Introducido en: v20.1.0

Calcula la conjunción lógica (AND) de dos bitmaps.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve un bitmap que contiene los bits presentes en los dos bitmaps de entrada [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve la cardinalidad de la conjunción lógica (AND) de dos bitmaps.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve el número de bits activados en la intersección de los dos bitmaps [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Calcula la diferencia de conjuntos A AND-NOT B entre dos bitmaps.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve un bitmap que contiene los bits activados presentes en el primer bitmap, pero no en el segundo [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve la cardinalidad de la operación AND-NOT entre dos bitmaps.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve el número de bits activados en el resultado de `bitmap1 AND-NOT bitmap2` [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Crea un bitmap a partir de un array de enteros sin signo. Es la operación inversa de la función [`bitmapToArray`](/es/reference/functions/regular-functions/bitmap-functions#bitmapToArray).

**Sintaxis**

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

**Argumentos**

* `array` — Array de enteros sin signo. [`Array(UInt*)`](/es/reference/data-types/array)

**Valor devuelto**

Devuelve un bitmap a partir del array proporcionado [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve el número de bits activados (la cardinalidad) en el bitmap.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve el número de bits activados en el bitmap [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Comprueba si el bitmap contiene un elemento específico.

**Sintaxis**

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

**Argumentos**

* `bitmap` — Objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `value` — Elemento cuya presencia se debe comprobar. [(U)Int8/16/32/64](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve `1` si el bitmap contiene el valor especificado; de lo contrario, `0` [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Comprueba si el primer bitmap contiene todos los bits activados del segundo bitmap.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve `1` si todos los bits activados del segundo bitmap están presentes en el primero; de lo contrario, `0` [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Comprueba si el primer bitmap contiene algún bit activado del segundo bitmap.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve `1` si algún bit del segundo bitmap está presente en el primero; en caso contrario, `0` [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve la posición del bit activado de mayor valor en un bitmap, o `0` si el bitmap está vacío.

**Sintaxis**

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

**Argumentos**

* `bitmap` — Objeto de bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve la posición del bit activado más alto en el bitmap; de lo contrario, `0` [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve la posición del bit activado más pequeño en un bitmap. Si no hay ningún bit activado, devuelve `UINT32_MAX` (`UINT64_MAX` si el bitmap contiene más de `2^64` bits).

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la posición del bit activado de menor valor en el bitmap, o `UINT32_MAX`/`UINT64_MAX` [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Calcula la disyunción lógica (OR) de dos bitmaps.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve un bitmap que contiene los bits activados presentes en cualquiera de los bitmaps de entrada [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve la cardinalidad de la disyunción lógica (OR) de dos bitmaps.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve el número de bits activados en la unión de los dos bitmaps [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve un subconjunto del bitmap que contiene solo los bits activados en el rango especificado \[start, end). Usa indexación basada en 1.

**Sintaxis**

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

**Argumentos**

* `bitmap` — Bitmap del que extraer el subconjunto. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `start` — Inicio del rango (inclusivo). [`UInt*`](/es/reference/data-types/int-uint) - `end` — Fin del rango (exclusivo). [`UInt*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un bitmap que contiene solo los bits activados en el rango especificado [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve un subconjunto de un bitmap a partir de la posición `range_start`, con un máximo de `cardinality_limit` bits activos. Utiliza indexación desde 1.

**Sintaxis**

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

**Argumentos**

* `bitmap` — Objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `range_start` — Inicio del rango (inclusivo). [`UInt32`](/es/reference/data-types/int-uint) - `cardinality_limit` — Cardinalidad máxima del subconjunto. [`UInt32`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un bitmap que contiene como máximo `cardinality_limit` bits activados, a partir de `range_start` [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Convierte un bitmap en un array de enteros sin signo. Es la función opuesta a [`bitmapBuild`](/es/reference/functions/regular-functions/bitmap-functions#bitmapBuild).

**Sintaxis**

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

**Argumentos**

* `bitmap` — Bitmap que se convertirá. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve un Array de enteros sin signo contenidos en el bitmap [`Array(UInt*)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Cambia hasta N bits de un bitmap sustituyendo los valores de bits específicos de `from_array` por los correspondientes de `to_array`.

**Sintaxis**

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

**Argumentos**

* `bitmap` — Objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `from_array` — Array de bits activados originales que se van a reemplazar. [`Array(T)`](/es/reference/data-types/array). - `to_array` — Array de nuevos bits activados con los que se reemplazarán. [`Array(T)`](/es/reference/data-types/array).

**Valor devuelto**

Devuelve un bitmap cuyos elementos se transforman según el mapeo indicado [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Calcula la diferencia simétrica (XOR) entre dos bitmaps.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve un bitmap que contiene los bits activados presentes en cualquiera de los bitmap de entrada, pero no en ambos [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve la cardinalidad del XOR (diferencia simétrica) de dos bitmaps.

**Sintaxis**

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

**Argumentos**

* `bitmap1` — Primer objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `bitmap2` — Segundo objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction).

**Valor devuelto**

Devuelve el número de bits activados en la diferencia simétrica de los dos bitmaps [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v21.9.0

Devuelve un subconjunto del bitmap a partir de la posición `offset`. La cardinalidad máxima del bitmap devuelto es `cardinality_limit`.

**Sintaxis**

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

**Argumentos**

* `bitmap` — Objeto bitmap. [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction). - `offset` — Número de bits activados que se omiten desde el inicio (indexado desde cero). [`UInt32`](/es/reference/data-types/int-uint) - `cardinality_limit` — Número máximo de bits activados que se incluirán en el subconjunto. [`UInt32`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un bitmap que contiene como máximo `limit` bits activados, tras omitir `offset` bits activados en orden ascendente [`AggregateFunction(groupBitmap, T)`](/es/reference/data-types/aggregatefunction)

**Ejemplos**

**Ejemplo de uso**

```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] │
└────────┘
```
