メインコンテンツへスキップ
メインコンテンツへスキップ

groupArrayInsertAt

配列の指定された位置に値を挿入します。

構文

groupArrayInsertAt(default_x, size)(x, pos)

1つのクエリ内で同じ位置に複数の値が挿入される場合、この関数は次のように動作します。

  • クエリが単一スレッドで実行される場合、挿入された値のうち最初のものが使用されます。
  • クエリが複数スレッドで実行される場合、結果となる値は、挿入された値のうちどれになるかは未定義です。

引数

  • x — 挿入される値。 であり、サポートされているデータ型 のいずれかになります。
  • pos — 要素 x を挿入する位置。配列内のインデックス番号は 0 から始まります。UInt32
  • default_x — 空の位置を埋めるためのデフォルト値。省略可能なパラメータ。 であり、パラメータ x に対して構成されたデータ型になります。default_x が定義されていない場合は、デフォルト値 が使用されます。
  • size — 結果の配列の長さ。省略可能なパラメータ。このパラメータを使用する場合は、デフォルト値 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;

このクエリを実行すると、[0,9] の範囲のランダムな整数が得られます。例えば次のような結果になります。

┌─groupArrayInsertAt(number, 0)─┐
│ [7]                           │
└───────────────────────────────┘