ClickHouse/docs/es/sql-reference/functions/bitmap-functions.md
2020-10-13 20:23:29 +03:00

11 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 49 Bits

Funciones de mapa de bits

Las funciones de mapa de bits funcionan para dos mapas de bits Cálculo del valor del objeto, es devolver un nuevo mapa de bits o cardinalidad mientras se usa el cálculo de la fórmula, como y, o, xor, y no, etc.

Hay 2 tipos de métodos de construcción para Bitmap Object. Uno debe ser construido por la función de agregación groupBitmap con -State , el otro debe ser construido por Array Object . También es para convertir objeto de mapa de bits a objeto de matriz.

RoaringBitmap se envuelve en una estructura de datos, mientras que el almacenamiento real de los objetos de mapa de bits. Cuando la cardinalidad es menor o igual que 32, utiliza Set objet. Cuando la cardinalidad es mayor que 32, utiliza el objeto RoaringBitmap. Es por eso que el almacenamiento del conjunto de baja cardinalidad es más rápido.

Para obtener más información sobre RoaringBitmap, consulte: CRoaring.

bitmapBuild

Construya un mapa de bits a partir de una matriz de enteros sin signo.

bitmapBuild(array)

Parámetros

  • array unsigned integer array.

Ejemplo

SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res)
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│     │ AggregateFunction(groupBitmap, UInt8)    │
└─────┴──────────────────────────────────────────────┘

bitmapToArray

Convertir mapa de bits a matriz entera.

bitmapToArray(bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘

bitmapSubsetInRange

Devuelve el subconjunto en el rango especificado (no incluye range_end).

bitmapSubsetInRange(bitmap, range_start, range_end)

Parámetros

Ejemplo

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

Crea un subconjunto de mapa de bits con n elementos tomados entre range_start y cardinality_limit.

Sintaxis

bitmapSubsetLimit(bitmap, range_start, cardinality_limit)

Parámetros

Valor devuelto

Subconjunto.

Tipo: Bitmap object.

Ejemplo

Consulta:

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

Resultado:

┌─res───────────────────────┐
│ [30,31,32,33,100,200,500] │
└───────────────────────────┘

bitmapContains

Comprueba si el mapa de bits contiene un elemento.

bitmapContains(haystack, needle)

Parámetros

Valores devueltos

  • 0 — If haystack no contiene needle.
  • 1 — If haystack contener needle.

Tipo: UInt8.

Ejemplo

SELECT bitmapContains(bitmapBuild([1,5,7,9]), toUInt32(9)) AS res
┌─res─┐
│  1  │
└─────┘

bitmapHasAny

Comprueba si dos mapas de bits tienen intersección por algunos elementos.

bitmapHasAny(bitmap1, bitmap2)

Si está seguro de que bitmap2 contiene estrictamente un elemento, considere usar el bitmapContains función. Funciona de manera más eficiente.

Parámetros

  • bitmap* bitmap object.

Valores de retorno

  • 1, si bitmap1 y bitmap2 tienen un elemento similar al menos.
  • 0, de lo contrario.

Ejemplo

SELECT bitmapHasAny(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
┌─res─┐
│  1  │
└─────┘

bitmapHasAll

Análogo a hasAll(array, array) devuelve 1 si el primer mapa de bits contiene todos los elementos del segundo, 0 de lo contrario. Si el segundo argumento es un mapa de bits vacío, devuelve 1.

bitmapHasAll(bitmap,bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapHasAll(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
┌─res─┐
│  0  │
└─────┘

bitmapCardinalidad

Vuelva a ejecutar la cardinalidad del mapa de bits de tipo UInt64.

bitmapCardinality(bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapCardinality(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│   5 │
└─────┘

bitmapMin

Vuelva a ejecutar el valor más pequeño de tipo UInt64 en el conjunto, UINT32_MAX si el conjunto está vacío.

bitmapMin(bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapMin(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│   1 │
└─────┘

bitmapMax

Vuelva a ejecutar el mayor valor de tipo UInt64 en el conjunto, 0 si el conjunto está vacío.

bitmapMax(bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│   5 │
└─────┘

bitmapTransform

Transformar una matriz de valores en un mapa de bits a otra matriz de valores, el resultado es un nuevo mapa de bits.

bitmapTransform(bitmap, from_array, to_array)

Parámetros

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

Ejemplo

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

Dos mapa de bits y cálculo, el resultado es un nuevo mapa de bits.

bitmapAnd(bitmap,bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapToArray(bitmapAnd(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res─┐
│ [3] │
└─────┘

bitmapO

Dos mapa de bits o cálculo, el resultado es un nuevo mapa de bits.

bitmapOr(bitmap,bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapToArray(bitmapOr(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘

bitmapXor

Dos bitmap xor cálculo, el resultado es un nuevo mapa de bits.

bitmapXor(bitmap,bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapToArray(bitmapXor(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res───────┐
│ [1,2,4,5] │
└───────────┘

bitmapAndnot

Dos mapas de bits y no cálculo, el resultado es un nuevo mapa de bits.

bitmapAndnot(bitmap,bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res───┐
│ [1,2] │
└───────┘

Bienvenido a WordPress

Dos mapa de bits y cálculo, devuelven cardinalidad de tipo UInt64.

bitmapAndCardinality(bitmap,bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapAndCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│   1 │
└─────┘

bitmapOrCardinalidad

Dos mapa de bits o cálculo, retorno cardinalidad de tipo UInt64.

bitmapOrCardinality(bitmap,bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapOrCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│   5 │
└─────┘

bitmapXorCardinalidad

Dos bitmap xor cálculo, retorno cardinalidad de tipo UInt64.

bitmapXorCardinality(bitmap,bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapXorCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│   4 │
└─────┘

Por favor, introduzca su dirección de correo electrónico

Dos mapas de bits yno cálculo, devuelve cardinalidad de tipo UInt64.

bitmapAndnotCardinality(bitmap,bitmap)

Parámetros

  • bitmap bitmap object.

Ejemplo

SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│   2 │
└─────┘

Artículo Original