Pular para o conteúdo principal
Bitmaps podem ser construídos de duas formas. A primeira é por meio da função de agregação groupBitmap com -State; a outra é construir um bitmap a partir de um objeto Array.

bitmapAnd

Introduzido em: v20.1.0 Calcula a conjunção lógica (AND) de dois bitmaps. Sintaxe
bitmapAnd(bitmap1, bitmap2)
Argumentos Valor retornado Retorna um bitmap contendo os bits presentes em ambos os bitmaps de entrada AggregateFunction(groupBitmap, T) Exemplos Exemplo de uso
Query
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
Response
┌─res─┐
│ [3] │
└─────┘

bitmapAndCardinality

Introduzido em: v20.1.0 Retorna a cardinalidade da conjunção lógica (AND) de dois bitmaps. Sintaxe
bitmapAndCardinality(bitmap1, bitmap2)
Argumentos Valor retornado Retorna o número de bits definidos na interseção entre os dois bitmaps UInt64 Exemplos Exemplo de uso
Query
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   1 │
└─────┘

bitmapAndnot

Introduzido em: v20.1.0 Calcula a diferença de conjuntos A AND-NOT B entre dois bitmaps. Sintaxe
bitmapAndnot(bitmap1, bitmap2)
Argumentos Valor retornado Retorna um bitmap que contém os bits definidos presentes no primeiro bitmap, mas não no segundo AggregateFunction(groupBitmap, T) Exemplos Exemplo de uso
Query
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
Response
┌─res────┐
│ [1, 2] │
└────────┘

bitmapAndnotCardinality

Introduzido em: v20.1.0 Retorna a cardinalidade da operação AND-NOT entre dois bitmaps. Sintaxe
bitmapAndnotCardinality(bitmap1, bitmap2)
Argumentos Valor retornado Retorna o número de bits definidos no resultado de bitmap1 AND-NOT bitmap2 UInt64 Exemplos Exemplo de uso
Query
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   2 │
└─────┘

bitmapBuild

Introduzido em: v20.1.0 Cria um bitmap a partir de um array de inteiros sem sinal. É o oposto da função bitmapToArray. Sintaxe
bitmapBuild(array)
Argumentos Valor retornado Retorna um bitmap do array fornecido AggregateFunction(groupBitmap, T) Exemplos Exemplo de uso
Query
SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res);
Response
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│     │ AggregateFunction(groupBitmap, UInt8)        │
└─────┴──────────────────────────────────────────────┘

bitmapCardinality

Introduzido em: v20.1.0 Retorna o número de bits definidos (a cardinalidade) no bitmap. Sintaxe
bitmapCardinality(bitmap)
Argumentos Valor retornado Retorna o número de bits definidos no bitmap UInt64 Exemplos Exemplo de uso
Query
SELECT bitmapCardinality(bitmapBuild([1, 3, 3, 5, 7, 7])) AS res
Response
┌─res─┐
│   4 │
└─────┘

bitmapContains

Disponível a partir da versão: v20.1.0 Verifica se o bitmap contém um elemento específico. Sintaxe
bitmapContains(bitmap, value)
Argumentos Valor retornado Retorna 1 se o bitmap contiver o valor especificado; caso contrário, 0 UInt8 Exemplos Exemplo de uso
Query
SELECT bitmapContains(bitmapBuild([1, 2, 3]), 2) AS res;
Response
┌─res─┐
│  1  │
└─────┘

bitmapHasAll

Introduzido em: v20.1.0 Verifica se o primeiro bitmap contém todos os bits definidos no segundo bitmap. Sintaxe
bitmapHasAll(bitmap1, bitmap2)
Argumentos Valor retornado Retorna 1 se todos os bits definidos do segundo bitmap estiverem presentes no primeiro bitmap; caso contrário, 0 UInt8 Exemplos Exemplo de uso
Query
SELECT bitmapHasAll(bitmapBuild([1, 2, 3]), bitmapBuild([2, 3])) AS res;
Response
┌─res─┐
│  1  │
└─────┘

bitmapHasAny

Introduzido em: v20.1.0 Verifica se o primeiro bitmap contém algum dos bits definidos no segundo bitmap. Sintaxe
bitmapHasAny(bitmap1, bitmap2)
Argumentos Valor retornado Retorna 1 se algum bit do segundo bitmap estiver presente no primeiro bitmap; caso contrário, 0 UInt8 Exemplos Exemplo de uso
Query
SELECT bitmapHasAny(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5])) AS res;
Response
┌─res─┐
│  1  │
└─────┘

bitmapMax

Introduzido em: v20.1.0 Retorna a posição do bit definido de maior valor em um bitmap, ou 0 se o bitmap estiver vazio. Sintaxe
bitmapMax(bitmap)
Argumentos Valor retornado Retorna a posição do bit de maior valor definido no bitmap; caso contrário, 0 UInt64 Exemplos Exemplo de uso
Query
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res;
Response
┌─res─┐
│   5 │
└─────┘

bitmapMin

Introduzido em: v20.1.0 Retorna a posição do menor bit definido em um bitmap. Se nenhum bit estiver definido, ou UINT32_MAX (UINT64_MAX se o bitmap contiver mais de 2^64 bits). Sintaxe
bitmapMin(bitmap)
Argumentos Valor retornado Retorna a posição do menor bit definido no bitmap ou UINT32_MAX/UINT64_MAX UInt64 Exemplos Exemplo de uso
Query
SELECT bitmapMin(bitmapBuild([3, 5, 2, 6])) AS res;
Response
┌─res─┐
│   2 │
└─────┘

bitmapOr

Introduzido em: v20.1.0 Calcula a disjunção lógica (OR) de dois bitmaps. Sintaxe
bitmapOr(bitmap1, bitmap2)
Argumentos Valor retornado Retorna um bitmap contendo os bits definidos presentes em um ou outro bitmap de entrada AggregateFunction(groupBitmap, T) Exemplos Exemplo de uso
Query
SELECT bitmapToArray(bitmapOr(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
Response
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘

bitmapOrCardinality

Introduzido em: v20.1.0 Retorna a cardinalidade da disjunção lógica (OR) de dois bitmaps. Sintaxe
bitmapOrCardinality(bitmap1, bitmap2)
Argumentos Valor retornado Retorna o número de bits definidos na união dos dois bitmaps UInt64 Exemplos Exemplo de uso
Query
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   5 │
└─────┘

bitmapSubsetInRange

Introduzido em: v20.1.0 Retorna um subconjunto do bitmap, contendo apenas os bits definidos no intervalo especificado [start, end). Usa indexação iniciada em 1. Sintaxe
bitmapSubsetInRange(bitmap, start, end)
Argumentos Valor retornado Retorna um bitmap contendo apenas os bits definidos no intervalo especificado AggregateFunction(groupBitmap, T) Exemplos Exemplo de uso
Query
SELECT bitmapToArray(bitmapSubsetInRange(bitmapBuild([1, 2, 3, 4, 5]), 2, 5)) AS res;
Response
┌─res───────┐
│ [2, 3, 4] │
└───────────┘

bitmapSubsetLimit

Introduzido em: v20.1.0 Retorna um subconjunto de um bitmap a partir da posição range_start, com no máximo cardinality_limit bits definidos. A indexação começa em 1. Sintaxe
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)
Argumentos Valor retornado Retorna um bitmap contendo no máximo cardinality_limit bits definidos, a partir de range_start AggregateFunction(groupBitmap, T) Exemplos Exemplo de uso
Query
SELECT bitmapToArray(bitmapSubsetLimit(bitmapBuild([1, 5, 3, 2, 8]), 3, 2)) AS res;
Response
┌─res────┐
│ [5, 3] │
└────────┘

bitmapToArray

Introduzido em: v20.1.0 Converte um bitmap em um array de números inteiros sem sinal. É o oposto da função bitmapBuild. Sintaxe
bitmapToArray(bitmap)
Argumentos Valor retornado Retorna um array com os inteiros sem sinal contidos no bitmap Array(UInt*) Exemplos Exemplo de uso
Query
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res;
Response
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘

bitmapTransform

Introduzido em: v20.1.0 Altera até N bits em um bitmap, substituindo valores de bits específicos em from_array pelos correspondentes em to_array. Sintaxe
bitmapTransform(bitmap, from_array, to_array)
Argumentos Valor retornado Retorna um bitmap com os elementos transformados de acordo com o mapeamento fornecido AggregateFunction(groupBitmap, T) Exemplos Exemplo de uso
Query
SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5]), [2, 4], [20, 40])) AS res;
Response
┌─res───────────────┐
│ [1, 3, 5, 20, 40] │
└───────────────────┘

bitmapXor

Introduzido em: v20.1.0 Calcula a diferença simétrica (XOR) entre dois bitmaps. Sintaxe
bitmapXor(bitmap1, bitmap2)
Argumentos Valor retornado Retorna um bitmap contendo os bits definidos como 1 presentes em um ou outro bitmap de entrada, mas não em ambos AggregateFunction(groupBitmap, T) Exemplos Exemplo de uso
Query
SELECT bitmapToArray(bitmapXor(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
Response
┌─res──────────┐
│ [1, 2, 4, 5] │
└──────────────┘

bitmapXorCardinality

Introduzido em: v20.1.0 Retorna a cardinalidade do XOR (diferença simétrica) de dois bitmaps. Sintaxe
bitmapXorCardinality(bitmap1, bitmap2)
Argumentos Valor retornado Retorna o número de bits definidos na diferença simétrica entre os dois bitmaps UInt64 Exemplos Exemplo de uso
Query
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   4 │
└─────┘

subBitmap

Introduzido na versão: v21.9.0 Retorna um subconjunto do bitmap, a partir da posição offset. A cardinalidade máxima do bitmap retornado é cardinality_limit. Sintaxe
subBitmap(bitmap, offset, cardinality_limit)
Argumentos
  • bitmap — Objeto bitmap. AggregateFunction(groupBitmap, T). - offset — Número de bits definidos a ignorar desde o início (indexação começando em zero). UInt32 - cardinality_limit — Número máximo de bits definidos a incluir no subconjunto. UInt32
Valor retornado Retorna um bitmap contendo no máximo limit bits definidos, após ignorar offset bits definidos em ordem crescente AggregateFunction(groupBitmap, T) Exemplos Exemplo de uso
Query
SELECT bitmapToArray(subBitmap(bitmapBuild([1, 2, 3, 4, 5]), 2, 2)) AS res;
Response
┌─res────┐
│ [3, 4] │
└────────┘
Última modificação em 10 de junho de 2026