に最終更新
ARRAY_SHUFFLE
説明
配列内の要素の順序をランダムにシャッフルします。要素とその個数は維持されます。入力配列またはシードが NULL の場合は NULL を返します。SHUFFLE はこの関数の別名です。
動作の変更 (4.1.5)
Doris 4.1 系列の 4.1.5 以降では、seed は定数である必要があります。負の値を含む任意の BIGINT 値を受け付け、64 ビットすべてを使用します。定数配列も行ごとに個別にシャッフルされるため、同じシードでも以前のバージョンとは異なる結果になる場合があります。それ以前の 4.1 バージョンでは、各バッチの最初の行のシードのみを使用し、負のシードおよび 4294967295 を超えるシードを受け付けず、定数配列についてはすべての行で同じ順序になっていました。
構文
ARRAY_SHUFFLE(<arr> [, <seed>])
パラメータ
| パラメータ | 説明 |
|---|---|
<arr> | シャッフルする ARRAY。 |
<seed> | 省略可能な定数 BIGINT 乱数シード。定数式も使用できます。省略すると、バッチごとに新しい乱数シードが使用されます。 |
戻り値
入力と同じ型の配列を返します。要素の順序はランダムに並べ替えられますが、要素数と要素の型は維持されます。配列またはシードが NULL の場合は NULL を返し、入力配列が空の場合は空の配列を返します。
行はバッチ単位で処理されます。シードを指定すると、各バッチはそのシードから乱数列を開始し、バッチ内の行はその乱数列を順番に使用します。そのため、行の並べ替え結果はバッチの境界によって変わる場合があります。シードを指定しても、同じ配列が常に同じ順序に並べ替えられるとは限りません。定数配列も行ごとに個別にシャッフルされます。
例
シャッフルした配列をソートすると、要素が維持されていることを確認できます。負のシードと定数式はどちらも使用できます。
SELECT ARRAY_SORT(ARRAY_SHUFFLE([1, 2, 3, 4], -1)),
ARRAY_SORT(ARRAY_SHUFFLE([1, 2, 3, 4], 1 + 1));
[1, 2, 3, 4] [1, 2, 3, 4]
NULL と空の配列の場合:
SELECT ARRAY_SHUFFLE(CAST(NULL AS ARRAY<INT>), 1),
ARRAY_SHUFFLE([1, 2, 3], NULL), ARRAY_SHUFFLE([], 1);
NULL NULL []
列をシードとして使用すると、次の文言を含むエラーが報告されます。
SELECT ARRAY_SHUFFLE([1, 2, 3], number) FROM numbers("number" = "2");
The seed of array_shuffle must be a constant