メインコンテンツまでスキップ

ARRAY_SORTBY

機能

keys配列の順序に従ってvalues配列をソートします。

  • 例えば、keys[3, 0, 2]values[5, 7, 8]の場合、ソート後にkeys[0, 2, 3]になり、対応するvalues[7, 8, 5]になります。

構文

  • ARRAY_SORTBY(values, keys)
  • ARRAY_SORTBY(lambda, values)
  • ARRAY_SORTBY(lambda, values)ARRAY_SORTBY(values, ARRAY_MAP(lambda, values))と等価です

パラメータ

  • values: ARRAY<T>、ソートする値配列。Tは数値、boolean、文字列、datetime、IPなどをサポートします。多次元配列もサポートされますが、すべての配列要素(どれだけ深くネストされていても)はサポートされる型である必要があります。
  • keys: ARRAY<T>valuesと同じ長さのキー配列。Tは数値、boolean、文字列、datetime、IPなどをサポートします。多次元配列もサポートされますが、すべての配列要素(どれだけ深くネストされていても)はサポートされる型である必要があります。
  • lambda: ソートに使用されるkeys配列を生成するためにvaluesに適用されるlambda式。

戻り値

  • valuesと同じ型のARRAY<T>を返します。
  • 任意の行でvalueskeysの要素数が異なる場合はエラーがスローされます。

使用上の注意

  • 安定性: valueskeysの昇順で並び替えられます。等しいキー間の相対順序は未定義です。
  • 高階呼び出しでは、keysは最初にARRAY_MAPによって計算され、その後valueskeysによってソートされます。

  • 基本: keysの昇順でvaluesをソートします。

    • ARRAY_SORTBY([10,20,30], [3,1,2]) -> [20,30,10]
    • ARRAY_SORTBY(['a','b','c'], [2,2,1]) -> ['c','a','b']
  • 高階: lambdaによってkeysを計算してからソートします。

    • ARRAY_SORTBY(x -> x + 1, [3,1,2]) -> [1,2,3]keys[4,2,3]
    • ARRAY_SORTBY(x -> x*2 <= 2, [1,2,3]) -> [1,2,3]keys[true,false,false]
  • keysまたはvaluesNULLの場合、valuesをそのまま返します。

    • array_sortby([10,20,30], NULL) -> [10, 20, 30]
    • array_sortby(NULL, [2,3]) -> NULL
  • 多次元配列のソート: キーのソートルールは内部要素の型に従います。

    • ARRAY_SORTBY(x -> x[1], [[1,2],[0,1]]) -> [[0, 1], [1, 2]]