sumMapWithOverflow
key 配列で指定されたキーに従って value 配列を合計します。ソート済みのキーと、それぞれのキーに対応する合計値からなる 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:
同等に、タプル構文を使っても同じ結果が得られます。
結果:
関連項目