groupArrayInsertAt
導入バージョン: v1.1.0
指定した位置に値を配列へ挿入します。
1 つのクエリで複数の値が同じ位置に挿入される場合、この関数は次のように動作します。
- クエリが単一スレッドで実行される場合は、挿入された値のうち最初のものが使用されます。
- クエリが複数スレッドで実行される場合、結果の値は挿入された値のいずれかになりますが、どれになるかは不定です。
構文
groupArrayInsertAt(default_x, size)([x, pos])パラメータ
default_x— 省略可。空の位置を埋めるためのデフォルト値。Anysize— 省略可。結果の配列の長さ。このパラメータを使用する場合は、デフォルト値default_xを指定する必要があります。UInt32
引数
戻り値
値が挿入された配列を返します。Array
例
パラメータを使用しない基本的な使い方
SELECT groupArrayInsertAt(toString(number), number * 2) FROM numbers(5);┌─groupArrayInsertAt(toString(number), multiply(number, 2))─┐
│ ['0','','1','','2','','3','','4'] │
└───────────────────────────────────────────────────────────┘デフォルト値パラメータを使用する場合
SELECT groupArrayInsertAt('-')(toString(number), number * 2) FROM numbers(5);┌─groupArrayInsertAt('-')(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2','-','3','-','4'] │
└────────────────────────────────────────────────────────────────┘デフォルト値およびサイズパラメータを使用する場合
SELECT groupArrayInsertAt('-', 5)(toString(number), number * 2) FROM numbers(5);┌─groupArrayInsertAt('-', 5)(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2'] │
└───────────────────────────────────────────────────────────────────┘同一位置へのマルチスレッド挿入
SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;┌─groupArrayInsertAt(number, 0)─┐
│ [0] │
└───────────────────────────────┘