BSI
- O tipo de índice pode ser
UInt8,UInt16ouUInt32. Observação: Considerando o desempenho da implementação de 64 bits do Roaring Bitmap, o formato BSI não oferece suporte aUInt64/Int64. - O tipo de valor pode ser
Int8,Int16,Int32,Int64,UInt8,UInt16,UInt32,UInt64,Float32ouFloat64. Observação: O tipo de valor não é expandido automaticamente. Por exemplo, se você usarUInt8como tipo de valor, qualquer soma que exceda a capacidade deUInt8resultará em overflow, em vez de ser promovida para um tipo maior; da mesma forma, operações com inteiros produzirão resultados inteiros (por exemplo, a divisão não será convertida automaticamente em um resultado de ponto flutuante). Portanto, é importante planejar e definir o tipo de valor antecipadamente. Em cenários reais, tipos de ponto flutuante (Float32/Float64) são comumente usados. - Somente dois vetores com o mesmo tipo de índice e o mesmo tipo de valor podem realizar operações.
- O armazenamento subjacente usa Bit-Sliced Index, com bitmaps para armazenar índices. O Roaring Bitmap é usado como implementação específica de bitmap. Uma prática recomendada é concentrar os índices em alguns contêineres do Roaring Bitmap tanto quanto possível para maximizar a compactação e o desempenho da consulta.
- O mecanismo Bit-Sliced Index converte o valor em binário. Para tipos de ponto flutuante, a conversão usa representação de ponto fixo, o que pode levar à perda de precisão. A precisão pode ser ajustada personalizando o número de bits usados para a parte fracionária; o padrão é 24 bits, o que é suficiente para a maioria dos cenários. Você pode personalizar o número de bits inteiros e fracionários ao construir NumericIndexedVector usando a função de agregação groupNumericIndexedVector com
-State. - Há três casos para índices: valor diferente de zero, valor zero e inexistente. Em NumericIndexedVector, somente valores diferentes de zero e valores zero são armazenados. Além disso, em operações ponto a ponto entre dois NumericIndexedVectors, o valor de um índice inexistente será tratado como 0. Em cenários de divisão, o resultado é zero quando o divisor é zero.
Criar um objeto numericIndexedVector
groupNumericIndexedVector com -State.
Você pode adicionar o sufixo -if para aceitar uma condição adicional.
A função de agregação processará apenas as linhas que satisfizerem a condição.
A outra é construí-la a partir de um map usando numericIndexedVectorBuild.
A função groupNumericIndexedVectorState permite personalizar o número de bits inteiros e fracionários por meio de parâmetros, enquanto numericIndexedVectorBuild não permite isso.
groupNumericIndexedVector
Float64. Se o sufixo State for adicionado, retorna um objeto NumericIndexedVector.
Sintaxe
type: String, opcional. Especifica o formato de armazenamento. Atualmente, apenas'BSI'é compatível.integer_bit_num:UInt32, opcional. Válido no formato de armazenamento'BSI', este parâmetro indica o número de bits usados para a parte inteira. Quando o tipo do índice é um tipo inteiro, o valor padrão corresponde ao número de bits usados para armazenar o índice. Por exemplo, se o tipo do índice for UInt16, o valor padrão deinteger_bit_numserá 16. Para tipos de índice Float32 e Float64, o valor padrão de integer_bit_num é 40, portanto a parte inteira dos dados que pode ser representada fica no intervalo[-2^39, 2^39 - 1]. O intervalo válido é[0, 64].fraction_bit_num:UInt32, opcional. Válido no formato de armazenamento'BSI', este parâmetro indica o número de bits usados para a parte fracionária. Quando o tipo de valor é inteiro, o valor padrão é 0; quando o tipo de valor é Float32 ou Float64, o valor padrão é 24. O intervalo válido é[0, 24].- Há também a restrição de que o intervalo válido de integer_bit_num + fraction_bit_num é [0, 64].
col1: A coluna de índice. Tipos compatíveis:UInt8/UInt16/UInt32/Int8/Int16/Int32.col2: A coluna de valor. Tipos compatíveis:Int8/Int16/Int32/Int64/UInt8/UInt16/UInt32/UInt64/Float32/Float64.
Float64 que representa a soma de todos os valores.
Exemplo
Dados de teste:
A documentação abaixo é gerada a partir da tabela do sistema
system.functions.numericIndexedVectorAllValueSum
numericIndexedVector.
Sintaxe
Float64
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorBuild
map— Um mapeamento de índice para valor.Map
AggregateFunction
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorCardinality
UInt64
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorGetValue
v—numericIndexedVectori— O índice cujo valor deve ser recuperado.(U)Int*
(U)Int* ou Float*
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorPointwiseAdd
v1—numericIndexedVectorv2— Uma constante numérica ou um objetonumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorPointwiseDivide
v1—numericIndexedVectorv2— Uma constante numérica ou um objetonumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorPointwiseEqual
v1—numericIndexedVectorv2— Uma constante numérica ou um objetonumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemplos
Query
Response
numericIndexedVectorPointwiseGreater
v1—numericIndexedVectorv2— Uma constante numérica ou um objetonumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorPointwiseGreaterEqual
v1—numericIndexedVectorv2— Uma constante numérica ou um objetonumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector.
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorPointwiseLess
v1—numericIndexedVectorv2— Uma constante numérica ou um objetonumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorPointwiseLessEqual
v1—numericIndexedVectorv2— Uma constante numérica ou um objetonumericIndexedVector(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector.
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorPointwiseMultiply
v1—numericIndexedVectorv2— Uma constante numérica ou um objetonumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemplos
Query
Response
numericIndexedVectorPointwiseNotEqual
v1—numericIndexedVectorv2— Uma constante numérica ou um objeto numericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorPointwiseSubtract
v1—numericIndexedVectorv2— Uma constante numérica ou um objetonumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorShortDebugString
String
Exemplos
Exemplo de uso
Query
Response
numericIndexedVectorToMap
Map
Exemplos
Exemplo de uso
Query
Response