BSI
- Le type d’index peut être
UInt8,UInt16ouUInt32. Remarque : compte tenu des performances de l’implémentation 64 bits de Roaring Bitmap, le format BSI ne prend pas en chargeUInt64/Int64. - Le type de valeur peut être
Int8,Int16,Int32,Int64,UInt8,UInt16,UInt32,UInt64,Float32ouFloat64. Remarque : le type de valeur ne s’élargit pas automatiquement. Par exemple, si vous utilisezUInt8comme type de valeur, toute somme dépassant la capacité deUInt8entraînera un dépassement de capacité au lieu d’être promue vers un type supérieur ; de même, les opérations sur des entiers produiront des résultats entiers (par exemple, une division ne sera pas automatiquement convertie en résultat à virgule flottante). Il est donc important de planifier et de définir le type de valeur à l’avance. Dans des scénarios réels, les types à virgule flottante (Float32/Float64) sont couramment utilisés. - Seuls deux vecteurs ayant le même type d’index et le même type de valeur peuvent effectuer des opérations.
- Le stockage sous-jacent utilise Bit-Sliced Index, les bitmaps servant à stocker les index. Roaring Bitmap est utilisé comme implémentation spécifique des bitmaps. Une bonne pratique consiste à concentrer autant que possible les index dans plusieurs conteneurs Roaring Bitmap afin de maximiser la compression et les performances des requêtes.
- Le mécanisme Bit-Sliced Index convertit la valeur en binaire. Pour les types à virgule flottante, la conversion utilise une représentation en virgule fixe, ce qui peut entraîner une perte de précision. La précision peut être ajustée en personnalisant le nombre de bits utilisés pour la partie fractionnaire ; la valeur par défaut est de 24 bits, ce qui est suffisant pour la plupart des scénarios. Vous pouvez personnaliser le nombre de bits entiers et de bits fractionnaires lors de la construction de NumericIndexedVector à l’aide de la fonction d’agrégation groupNumericIndexedVector avec
-State. - Il existe trois cas pour les index : valeur non nulle, valeur nulle et inexistante. Dans NumericIndexedVector, seules les valeurs non nulles et nulles sont stockées. De plus, dans les opérations point par point entre deux NumericIndexedVectors, la valeur d’un index inexistant est traitée comme 0. Dans le cas d’une division, le résultat est zéro lorsque le diviseur est zéro.
Créer un objet numericIndexedVector
groupNumericIndexedVector avec -State.
Vous pouvez ajouter le suffixe -if pour prendre en charge une condition supplémentaire.
La fonction d’agrégation ne traitera que les lignes qui satisfont à la condition.
La seconde consiste à le construire à partir d’un map à l’aide de numericIndexedVectorBuild.
La fonction groupNumericIndexedVectorState permet de personnaliser, via des paramètres, le nombre de bits de la partie entière et de la partie fractionnaire, contrairement à numericIndexedVectorBuild.
groupNumericIndexedVector
Float64. Si le suffixe State est ajouté, la fonction renvoie un objet NumericIndexedVector.
Syntaxe
type: String, facultatif. Spécifie le format de stockage. Actuellement, seul'BSI'est pris en charge.integer_bit_num:UInt32, facultatif. Applicable avec le format de stockage'BSI', ce paramètre indique le nombre de bits utilisés pour la partie entière. Lorsque le type d’index est un type entier, la valeur par défaut correspond au nombre de bits utilisés pour stocker l’index. Par exemple, si le type d’index est UInt16, la valeur par défaut deinteger_bit_numest 16. Pour les types d’index Float32 et Float64, la valeur par défaut de integer_bit_num est 40, de sorte que la partie entière des données représentables se situe dans l’intervalle[-2^39, 2^39 - 1]. L’intervalle autorisé est[0, 64].fraction_bit_num:UInt32, facultatif. Applicable avec le format de stockage'BSI', ce paramètre indique le nombre de bits utilisés pour la partie fractionnaire. Lorsque le type de valeur est un entier, la valeur par défaut est 0 ; lorsqu’il est de type Float32 ou Float64, la valeur par défaut est 24. L’intervalle valide est[0, 24].- Il existe également une contrainte selon laquelle l’intervalle valide de integer_bit_num + fraction_bit_num est
[0, 64]. col1: La colonne d’index. Types pris en charge :UInt8/UInt16/UInt32/Int8/Int16/Int32.col2: La colonne de valeur. Types pris en charge :Int8/Int16/Int32/Int64/UInt8/UInt16/UInt32/UInt64/Float32/Float64.
Float64 représentant la somme de toutes les valeurs.
Exemple
Données de test :
La documentation ci-dessous est générée à partir de la table système
system.functions.numericIndexedVectorAllValueSum
Float64
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorBuild
map— Une correspondance entre l’index et la valeur.Map
AggregateFunction
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorCardinality
UInt64
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorGetValue
v—numericIndexedVectori— L’index dont la valeur doit être récupérée.(U)Int*
(U)Int* ou Float*
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorPointwiseAdd
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector.
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorPointwiseDivide
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector.
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorPointwiseEqual
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector.
Exemples
Query
Response
numericIndexedVectorPointwiseGreater
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorPointwiseGreaterEqual
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector.
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorPointwiseLess
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorPointwiseLessEqual
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorPointwiseMultiply
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector.
Exemples
Query
Response
numericIndexedVectorPointwiseNotEqual
numericIndexedVector et un autre numericIndexedVector ou une constante numérique.
Le résultat est un numericIndexedVector contenant les indices pour lesquels les valeurs sont différentes, toutes les valeurs correspondantes étant définies sur 1.
Syntaxe
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorPointwiseSubtract
v1—numericIndexedVectorv2— Une constante numérique ou un objetnumericIndexedVector.(U)Int*ouFloat*ounumericIndexedVector
numericIndexedVector. numericIndexedVector
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorShortDebugString
String
Exemples
Exemple d’utilisation
Query
Response
numericIndexedVectorToMap
Map contenant des paires index-valeur.
Exemples
Exemple d’utilisation
Query
Response