Tuple Functions
tuple
複数のカラムをグループ化することを許可する関数です。 カラム C1, C2, ... の型が T1, T2, ... であれば、名前がユニークで引用符なし識別子として扱える場合には、これらのカラムを含む名前付き Tuple(C1 T1, C2 T2, ...) 型のタプルを返します。そうでない場合は、Tuple(T1, T2, ...) が返されます。関数の実行にはコストがかかりません。 タプルは通常、IN 演算子の引数としての中間値や、ラムダ関数の形式パラメータリストを作成するために使用されます。タプルはテーブルに書き込むことはできません。
この関数は演算子 (x, y, ...)
を実装しています。
構文
tupleElement
タプルからカラムを取得することを許可する関数です。
第二引数が数値 index
の場合、カラムインデックスを表します(1から始まります)。第二引数が文字列 name
の場合、それは要素の名前を表します。さらに、第三のオプション引数を提供することができ、インデックスが範囲外であるか、名前に対する要素が存在しない場合には、例外をスローする代わりにデフォルト値が返されます。第二および第三の引数は、定数である必要があります。関数の実行にはコストがかかりません。
この関数はオペレーター x.index
と x.name
を実装します。
構文
untuple
呼び出し位置での tuple 要素の構文置換を実行します。
結果カラムの名前は実装に依存し、変更される可能性があります。untuple
後に特定のカラム名を仮定しないでください。
構文
クエリの結果としてカラムをスキップするには、EXCEPT
式を使用できます。
引数
x
—tuple
関数、カラム、または要素のタプル。 Tuple。
返される値
- なし。
例
入力テーブル:
Tuple
型のカラムを untuple
関数のパラメータとして使用する例:
クエリ:
結果:
EXCEPT
式を使用する例:
クエリ:
結果:
参照
tupleHammingDistance
同じサイズの二つのタプル間の ハミング距離 を返します。
構文
引数
タプルは同じ型の要素を持つ必要があります。
返される値
- ハミング距離。
結果の型は 算術関数 と同様に、入力タプル内の要素数に基づいて計算されます。
例
クエリ:
結果:
MinHash 関数と組み合わせて、部分重複する文字列を検出するために使用できます:
結果:
tupleToNameValuePairs
名前付きタプルを (name, value) ペアの配列に変換します。Tuple(a T, b T, ..., c T)
は Array(Tuple(String, T), ...)
を返し、Strings
はタプルの名前付きフィールドを表し、T
はそれらの名前に関連付けられた値です。タプル内のすべての値は同じ型である必要があります。
構文
引数
tuple
— 名前付きタプル。 Tuple で、任意の型の値を持ちます。
返される値
例
クエリ:
結果:
この関数を使用してカラムを行に変換することができます:
結果:
単純なタプルを関数に渡すと、ClickHouse は値のインデックスをその名前として使用します:
結果:
tupleNames
タプルをカラム名の配列に変換します。Tuple(a T, b T, ...)
の形式のタプルに対して、タプルの名前付きカラムを表す文字列の配列を返します。タプルの要素に明示的な名前がない場合、それらのインデックスがカラム名として使用されます。
構文
引数
tuple
— 名前付きタプル。 Tuple で、任意の型の値を持ちます。
返される値
- 文字列の配列。
例
クエリ:
結果:
単純なタプルを関数に渡すと、ClickHouse はカラムのインデックスをその名前として使用します:
結果:
tuplePlus
同じサイズの二つのタプルの対応する値の合計を計算します。
構文
エイリアス: vectorSum
.
引数
返される値
- 合計を持つタプル。 Tuple。
例
クエリ:
結果:
tupleMinus
同じサイズの二つのタプルの対応する値の引き算を計算します。
構文
エイリアス: vectorDifference
.
引数
返される値
- 引き算の結果を持つタプル。 Tuple。
例
クエリ:
結果:
tupleMultiply
同じサイズの二つのタプルの対応する値の掛け算を計算します。
構文
引数
返される値
- 掛け算の結果を持つタプル。 Tuple。
例
クエリ:
結果:
tupleDivide
同じサイズの二つのタプルの対応する値の割り算を計算します。 ゼロでの割り算は inf
を返します。
構文
引数
返される値
- 割り算の結果を持つタプル。 Tuple。
例
クエリ:
結果:
tupleNegate
タプルの値の否定を計算します。
構文
引数
tuple
— Tuple。
返される値
- 否定の結果を持つタプル。 Tuple。
例
クエリ:
結果:
tupleMultiplyByNumber
すべての値を数値で掛け算したタプルを返します。
構文
引数
返される値
- 掛け算した値を持つタプル。 Tuple。
例
クエリ:
結果:
tupleDivideByNumber
すべての値を数値で割ったタプルを返します。 ゼロでの割り算は inf
を返します。
構文
引数
返される値
- 割り算した値を持つタプル。 Tuple。
例
クエリ:
結果:
tupleConcat
引数として渡されたタプルを結合します。
引数
tuples
– Tuple 型の任意の数の引数。
例
tupleIntDiv
分子のタプルと分母のタプルの整数除算を行い、商のタプルを返します。
構文
パラメータ
返される値
tuple_num
とtuple_div
の商のタプル。 Tuple の整数値。
実装の詳細
tuple_num
またはtuple_div
が非整数値を含む場合、各非整数分子または除数を最も近い整数に丸めて計算されます。- ゼロでの割り算にはエラーが発生します。
例
クエリ:
結果:
クエリ:
結果:
tupleIntDivOrZero
tupleIntDiv のように、分子のタプルと分母のタプルの整数除算を行い、商のタプルを返します。ゼロの除数に対してエラーをスローするのではなく、商を 0 として返します。
構文
返される値
tuple_num
とtuple_div
の商のタプル。 Tuple の整数値。- 除数が 0 の場合は商を 0 として返します。
実装の詳細
tuple_num
またはtuple_div
が非整数値を含む場合、tupleIntDiv
と同様に各非整数分子または除数を最も近い整数に丸めて計算されます。
例
クエリ:
結果:
tupleIntDivByNumber
分子のタプルを指定された除数で割り算を行い、商のタプルを返します。
構文
パラメータ
返される値
tuple_num
とdiv
の商のタプル。 Tuple の整数値。
実装の詳細
tuple_num
またはdiv
が非整数値を含む場合、各非整数分子または除数を最も近い整数に丸めて計算されます。- ゼロでの割り算にはエラーが発生します。
例
クエリ:
結果:
クエリ:
結果:
tupleIntDivOrZeroByNumber
tupleIntDivByNumber のように、分子のタプルを指定された除数で割り算を行い、商のタプルを返します。ゼロの除数に対してエラーをスローするのではなく、商を 0 として返します。
構文
パラメータ
返される値
tuple_num
とdiv
の商のタプル。 Tuple の整数値。- 除数が 0 の場合は商を 0 として返します。
実装の詳細
tuple_num
またはdiv
が非整数値を含む場合、tupleIntDivByNumber と同様に各非整数分子または除数を最も近い整数に丸めて計算されます。
例
クエリ:
結果:
クエリ:
結果:
tupleModulo
二つのタプルの剰余演算の結果のタプルを返します。
構文
パラメータ
返される値
tuple_num
とtuple_mod
の商の剰余のタプル。 Tuple の非ゼロ整数値。- ゼロでの除算に対してエラーが発生します。
例
クエリ:
結果:
tupleModuloByNumber
タプルの剰余演算の結果を指定された除数で返します。
構文
パラメータ
返される値
tuple_num
とdiv
の剰余のタプル。 Tuple の非ゼロ整数値。- ゼロでの除算に対してエラーが発生します。
例
クエリ:
結果:
flattenTuple
ネストされた名前付き input
タプルからフラットな output
タプルを返します。 output
タプルの要素は元の input
タプルからのパスです。 例えば: Tuple(a Int, Tuple(b Int, c Int)) -> Tuple(a Int, b Int, c Int)
。 flattenTuple
は、型 Object
のすべてのパスを個別のカラムとして選択するために使用できます。
構文
パラメータ
input
: フラット化するネストされた名前付きタプル。 Tuple。
返される値
- 元の
input
からのパスを持つoutput
タプル。 Tuple。
例
クエリ:
結果:
Distance functions
すべてのサポートされている関数は distance functions documentation に記載されています。