sumMapWithOverflow
key 配列で指定されたキーに従って、value 配列の値を集計します。結果として 2 つの配列からなるタプルを返します。1 つ目はソートされたキーの配列、2 つ目は対応するキーごとに合計された値の配列です。
この関数は sumMap 関数と異なり、オーバーフローを許容する形で加算を行います。すなわち、集計結果のデータ型は引数のデータ型と同じになります。
構文
sumMapWithOverflow(key <Array>, value <Array>)Array 型。sumMapWithOverflow(Tuple(key <Array>, value <Array>))Tuple 型。
引数
キー配列と値配列のタプルを渡すことは、キー配列と値配列をそれぞれ個別に渡すことと同等です。
注記
合計対象となる各行において、key と value の要素数は同じでなければなりません。
返される値
- 2 つの配列からなるタプルを返します。1 つ目はソートされたキーの配列、2 つ目は対応するキーごとに合計された値の配列です。
例
まず sum_map というテーブルを作成し、いくつかデータを挿入します。キーと値の配列は、それぞれ Nested 型の statusMap というカラムとして個別に保存し、さらに両者をまとめて tuple 型の statusMapTuple というカラムとしても保存して、この関数で前述した 2 種類の構文の使い方を示します。
クエリ:
sumMap、配列型の構文を使った sumMapWithOverflow、および toTypeName 関数を用いてテーブルをクエリすると、
sumMapWithOverflow 関数では、合計された値の配列のデータ型が引数の型と同じく UInt8 であることが分かります(つまり、オーバーフローを許容したまま加算が行われています)。一方、sumMap では合計された値の配列のデータ型が UInt8 から UInt64 に変更され、オーバーフローが発生しないようになっています。
Query:
同様に、タプル構文を使っても同じ結果が得られます。
結果:
関連項目