BSI
- 索引型として使用できるのは、
UInt8、UInt16、UInt32のいずれかです。注: Roaring Bitmap の 64 ビット実装の性能を考慮し、BSI フォーマットはUInt64/Int64をサポートしていません。 - 値型として使用できるのは、
Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64、Float32、Float64のいずれかです。注: 値型は自動的には拡張されません。たとえば、値型としてUInt8を使用した場合、UInt8の容量を超える合計値は上位の型に昇格されるのではなく、オーバーフローになります。同様に、整数に対する演算は整数として結果が返されます (たとえば、除算しても自動的に浮動小数点の結果には変換されません) 。そのため、値型は事前によく計画して設計することが重要です。実運用では、浮動小数点型 (Float32/Float64) が一般的によく使われます。 - 演算を実行できるのは、索引型と値型が同じ 2 つのベクトルだけです。
- 下位ストレージには Bit-Sliced Index が使われ、索引はビットマップに格納されます。ビットマップの具体的な実装には Roaring Bitmap が使用されます。圧縮率とクエリ性能を最大化するベストプラクティスは、索引をできるだけ少数の Roaring Bitmap コンテナーに集中させることです。
- Bit-Sliced Index の仕組みでは、値はバイナリに変換されます。浮動小数点型では、この変換に固定小数点表現が使われるため、精度が失われる可能性があります。精度は小数部に使用するビット数をカスタマイズすることで調整でき、既定値は 24 ビットです。これはほとんどのケースで十分です。NumericIndexedVector の構築時には、
-Stateを付けた集約関数 groupNumericIndexedVector を使用して、整数部と小数部のビット数をカスタマイズできます。 - 索引には、非ゼロ値、ゼロ値、存在しない値の 3 つのケースがあります。NumericIndexedVector では、非ゼロ値とゼロ値のみが格納されます。また、2 つの NumericIndexedVector 間で要素ごとの演算を行う場合、存在しない索引の値は 0 として扱われます。除算では、除数が 0 の場合の結果は 0 になります。
numericIndexedVector オブジェクトを作成する
groupNumericIndexedVector に -State を付けて使用する方法です。
追加の条件を受け付けるために、接尾辞 -if を追加できます。
この集約関数は、その条件を満たす行のみを処理します。
もう 1 つは、numericIndexedVectorBuild を使用して map から構築する方法です。
groupNumericIndexedVectorState 関数では、パラメータによって整数部と小数部のビット数をカスタマイズできますが、numericIndexedVectorBuild ではできません。
groupNumericIndexedVector
Float64 型で返します。接尾辞 State を付けると、NumericIndexedVector オブジェクトを返します。
構文
type: String、任意。ストレージフォーマットを指定します。現在サポートされているのは'BSI'のみです。integer_bit_num:UInt32、任意。'BSI'ストレージフォーマットで有効です。このパラメータは整数部に使用するビット数を示します。索引の型が整数型の場合、デフォルト値はその索引の格納に使用されるビット数に対応します。たとえば、索引の型が UInt16 の場合、デフォルトのinteger_bit_numは 16 です。索引型が Float32 または Float64 の場合、integer_bit_num のデフォルト値は 40 なので、表現可能なデータの整数部の範囲は[-2^39, 2^39 - 1]です。有効範囲は[0, 64]です。fraction_bit_num:UInt32、任意。'BSI'ストレージフォーマットで有効です。このパラメータは小数部に使用するビット数を示します。値の型が整数の場合、デフォルト値は 0 です。値の型が Float32 または Float64 の場合、デフォルト値は 24 です。有効範囲は[0, 24]です。- さらに、integer_bit_num + fraction_bit_num の有効範囲も
[0, 64]である必要があります。 col1: 索引カラム。サポートされる型:UInt8/UInt16/UInt32/Int8/Int16/Int32。col2: 値カラム。サポートされる型:Int8/Int16/Int32/Int64/UInt8/UInt16/UInt32/UInt64/Float32/Float64。
Float64 値。
例
テストデータ:
以下のドキュメントは、システムテーブル
system.functions から生成されています。numericIndexedVectorAllValueSum
Float64
例
使用例
Query
Response
numericIndexedVectorBuild
map— 索引から値へのマッピングです。Map
AggregateFunction
例
使用例
Query
Response
numericIndexedVectorCardinality
UInt64
例
使用例
Query
Response
numericIndexedVectorGetValue
v—numericIndexedVectori— 取得する値の索引です。(U)Int*
(U)Int* または Float*
例
使用例
Query
Response
numericIndexedVectorPointwiseAdd
v1—numericIndexedVectorv2— 数値定数、または numericIndexedVector オブジェクト。(U)Int*またはFloat*またはnumericIndexedVector
numericIndexedVector
例
使用例
Query
Response
numericIndexedVectorPointwiseDivide
v1—numericIndexedVectorv2— 数値定数またはnumericIndexedVectorオブジェクト。(U)Int*またはFloat*またはnumericIndexedVector
numericIndexedVector オブジェクトを返します。numericIndexedVector
例
使用例
Query
Response
numericIndexedVectorPointwiseEqual
v1—numericIndexedVectorv2— 数値定数、またはnumericIndexedVectorオブジェクト。(U)Int*またはFloat*またはnumericIndexedVector
numericIndexedVector オブジェクトを返します。numericIndexedVector
例
Query
Response
numericIndexedVectorPointwiseGreater
v1—numericIndexedVectorv2— 数値定数またはnumericIndexedVectorオブジェクト。(U)Int*、Float*、またはnumericIndexedVector
numericIndexedVector オブジェクトを返します。numericIndexedVector
例
使用例
Query
Response
numericIndexedVectorPointwiseGreaterEqual
v1—numericIndexedVectorv2— 数値定数またはnumericIndexedVectorオブジェクト。(U)Int*またはFloat*またはnumericIndexedVector
numericIndexedVector オブジェクトを返します。numericIndexedVector
例
使用例
Query
Response
numericIndexedVectorPointwiseLess
v1—numericIndexedVectorv2— 数値定数またはnumericIndexedVectorオブジェクト。(U)Int*またはFloat*またはnumericIndexedVector
numericIndexedVector オブジェクトを返します。numericIndexedVector
例
使用例
Query
Response
numericIndexedVectorPointwiseLessEqual
v1—numericIndexedVectorv2— 数値定数、または(U)Int*、Float*、numericIndexedVector型のnumericIndexedVectorオブジェクト
numericIndexedVector オブジェクトを返します。 numericIndexedVector
例
使用例
Query
Response
numericIndexedVectorPointwiseMultiply
v1—numericIndexedVectorv2— 数値定数またはnumericIndexedVectorオブジェクト。(U)Int*またはFloat*またはnumericIndexedVector
numericIndexedVector オブジェクトを返します。numericIndexedVector
例
Query
Response
numericIndexedVectorPointwiseNotEqual
v1—numericIndexedVectorv2— 数値定数、または numericIndexedVector オブジェクト。(U)Int*、Float*、またはnumericIndexedVector
numericIndexedVector
例
使用例
Query
Response
numericIndexedVectorPointwiseSubtract
v1—numericIndexedVectorv2— 数値定数、または numericIndexedVector オブジェクト。(U)Int*、Float*、またはnumericIndexedVector
numericIndexedVector
例
使用例
Query
Response
numericIndexedVectorShortDebugString
String
例
使用例
Query
Response
numericIndexedVectorToMap
Map
例
使用例
Query
Response