BSI
- El tipo de índice puede ser
UInt8,UInt16oUInt32. Nota: Dado el rendimiento de la implementación de 64 bits de Roaring Bitmap, el formato BSI no admiteUInt64/Int64. - El tipo de valor puede ser
Int8,Int16,Int32,Int64,UInt8,UInt16,UInt32,UInt64,Float32oFloat64. Nota: El tipo de valor no se amplía automáticamente. Por ejemplo, si usaUInt8como tipo de valor, cualquier suma que supere la capacidad deUInt8provocará un desbordamiento en lugar de promocionarse a un tipo superior; del mismo modo, las operaciones con enteros producirán resultados enteros (por ejemplo, la división no se convertirá automáticamente en un resultado de coma flotante). Por lo tanto, es importante planificar y definir el tipo de valor de antemano. En escenarios reales, se suelen usar tipos de coma flotante (Float32/Float64). - Solo pueden realizar operaciones dos vectores con el mismo tipo de índice y el mismo tipo de valor.
- El almacenamiento subyacente usa Bit-Sliced Index, y el bitmap almacena los índices. Roaring Bitmap se utiliza como implementación concreta del bitmap. Una práctica recomendada es concentrar el índice en varios contenedores de Roaring Bitmap tanto como sea posible para maximizar la compresión y el rendimiento de las consultas.
- El mecanismo Bit-Sliced Index convierte el valor a binario. En los tipos de coma flotante, la conversión usa una representación de punto fijo, lo que puede provocar pérdida de precisión. La precisión puede ajustarse personalizando el número de bits usados para la parte fraccionaria; el valor predeterminado es de 24 bits, lo cual es suficiente para la mayoría de los escenarios. Puede personalizar el número de bits enteros y fraccionarios al construir NumericIndexedVector con la función de agregación groupNumericIndexedVector usando
-State. - Hay tres casos para los índices: valor distinto de cero, valor cero e inexistente. En NumericIndexedVector, solo se almacenan los valores distintos de cero y los valores cero. Además, en las operaciones elemento a elemento entre dos NumericIndexedVectors, el valor de un índice inexistente se tratará como 0. En el caso de la división, el resultado es cero cuando el divisor es cero.
Crear un objeto numericIndexedVector
groupNumericIndexedVector con -State.
Puede añadir el sufijo -if para que acepte una condición adicional.
La función de agregado solo procesará las filas que cumplan la condición.
La otra es construirlo a partir de un mapa con numericIndexedVectorBuild.
La función groupNumericIndexedVectorState permite personalizar el número de bits enteros y fraccionarios mediante parámetros, mientras que numericIndexedVectorBuild no lo permite.
groupNumericIndexedVector
Float64. Si se añade el sufijo State, devuelve un objeto NumericIndexedVector.
Sintaxis
type: String, opcional. Especifica el formato de almacenamiento. Actualmente, solo se admite'BSI'.integer_bit_num:UInt32, opcional. Válido con el formato de almacenamiento'BSI', este parámetro indica la cantidad de bits usados para la parte entera. Cuando el tipo de índice es un tipo entero, el valor predeterminado corresponde a la cantidad de bits usada para almacenar el índice. Por ejemplo, si el tipo de índice es UInt16, el valor predeterminado deinteger_bit_numes 16. Para los tipos de índice Float32 y Float64, el valor predeterminado de integer_bit_num es 40, por lo que la parte entera de los datos que puede representarse está en el rango[-2^39, 2^39 - 1]. El rango permitido es[0, 64].fraction_bit_num:UInt32, opcional. Válido con el formato de almacenamiento'BSI', este parámetro indica la cantidad de bits usados para la parte fraccionaria. Cuando el tipo del valor es entero, el valor predeterminado es 0; cuando el tipo del valor es Float32 o Float64, el valor predeterminado es 24. El rango válido es[0, 24].- También existe la restricción de que el rango válido de integer_bit_num + fraction_bit_num es [0, 64].
col1: La columna de índice. Tipos compatibles:UInt8/UInt16/UInt32/Int8/Int16/Int32.col2: La columna de valores. Tipos compatibles:Int8/Int16/Int32/Int64/UInt8/UInt16/UInt32/UInt64/Float32/Float64.
Float64 que representa la suma de todos los valores.
Ejemplo
Datos de prueba:
La documentación que figura a continuación se genera a partir de la tabla del sistema
system.functions.numericIndexedVectorAllValueSum
Float64
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorBuild
map— Una asociación entre índice y valor.Map
AggregateFunction
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorCardinality
UInt64
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorGetValue
numericIndexedVector.
Sintaxis
v—numericIndexedVectori— El índice del valor que se va a recuperar.(U)Int*
(U)Int* o Float*
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorPointwiseAdd
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector.(U)Int*oFloat*onumericIndexedVector
numericIndexedVector. numericIndexedVector
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorPointwiseDivide
numericIndexedVector y otro numericIndexedVector o una constante numérica.
Sintaxis
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector.(U)Int*oFloat*onumericIndexedVector
numericIndexedVector. numericIndexedVector
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorPointwiseEqual
numericIndexedVector y otro numericIndexedVector, o una constante numérica.
El resultado es un numericIndexedVector que contiene los índices en los que los valores son iguales, con todos los valores correspondientes establecidos en 1.
Sintaxis
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector.(U)Int*oFloat*onumericIndexedVector
numericIndexedVector.
Ejemplos
Query
Response
numericIndexedVectorPointwiseGreater
numericIndexedVector y otro numericIndexedVector o una constante numérica.
El resultado es un numericIndexedVector que contiene los índices en los que el valor del primer vector es mayor que el del segundo, con todos los valores correspondientes establecidos en 1.
Sintaxis
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector.(U)Int*oFloat*onumericIndexedVector
numericIndexedVector.
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorPointwiseGreaterEqual
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector.(U)Int*oFloat*onumericIndexedVector
numericIndexedVector.
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorPointwiseLess
numericIndexedVector y otro numericIndexedVector o una constante numérica.
El resultado es un numericIndexedVector que contiene los índices en los que el valor del primer vector es menor que el del segundo, con todos los valores correspondientes establecidos en 1.
Sintaxis
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector.(U)Int*oFloat*onumericIndexedVector
numericIndexedVector. numericIndexedVector
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorPointwiseLessEqual
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector(U)Int*oFloat*onumericIndexedVector
numericIndexedVector.
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorPointwiseMultiply
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector.(U)Int*oFloat*onumericIndexedVector
numericIndexedVector. numericIndexedVector
Ejemplos
Query
Response
numericIndexedVectorPointwiseNotEqual
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector.(U)Int*oFloat*onumericIndexedVector
numericIndexedVector. numericIndexedVector
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorPointwiseSubtract
numericIndexedVector y otro numericIndexedVector o una constante numérica.
Sintaxis
v1—numericIndexedVectorv2— Una constante numérica o un objetonumericIndexedVector.(U)Int*oFloat*onumericIndexedVector
numericIndexedVector. numericIndexedVector
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorShortDebugString
String
Ejemplos
Ejemplo de uso
Query
Response
numericIndexedVectorToMap
Map
Ejemplos
Ejemplo de uso
Query
Response