ARRAYSORT 函式

依照遞增或遞減順序,將指定資料欄中的陣列值、陣列常值或是會傳回陣列的函式排序。
  • 此函式會根據陣列的外層進行計算。如果是巢狀陣列,則內層元素的排序不會列入計算。

基本用法

陣列常值參照範例:

derive type:single value:ARRAYSORT([A,B,C,D],descending)

輸出:在新資料欄中產生下列陣列:[D,C,B,A]

資料欄參照範例:

derive type:single value:ARRAYSORT(myArrays,ascending) as:'myArrays_ascending'

輸出:產生新的 myArrays_ascending 資料欄,其中包含的陣列以遞增排序方式列在 myArrays 資料欄中。

語法

derive type:single value:ARRAYSORT(array_ref,order_enum)

引數是否必要?資料類型說明
array_ref字串陣列資料欄名稱、陣列常值或函式 (此函式會傳回要套用到函式的陣列)
order_enum字串 (列舉值)

順序定義為下列兩者其中之一:

  • ascending (預設)
  • descending

如要進一步瞭解語法標準,請參閱語言文件語法附註

array_ref

陣列資料欄名稱、陣列常值或會傳回您想排序的陣列值之陣列的函式。

  • 不支援多個資料欄和萬用字元。

使用須知:

是否必要?資料類型示例值
字串 (資料欄參照或函式) 或陣列常值myArray1

order_enum

字串常值表示參照陣列應使用的排序順序:

  • ascending - (預設) 有效資料類型的最低值會先列出。
  • descending - 空值/空白值會先排序,接著再排序不相符值。然後,對指定資料類型有效的陣列值會依遞減順序列出。
  • 如要進一步瞭解排序規則,請參閱排序順序一文。

使用須知:

是否必要? 資料類型範例值
字串 (列舉值)descending

範例

範例:學生測驗成績的變化

這個範例包含下列函式:

  • ARRAYLEN:傳回陣列中元素從 1 開始的索引值。請參閱 ARRAYLEN 函式
  • ARRAYELEMENTAT:根據從 0 開始的索引參數傳回陣列元素。請參閱 ARRAYELEMENTAT 函式
  • ARRAYSORT - 傳回按照遞增或遞減順序排序的陣列。請參閱 ARRAYSORT 函式一文。

來源:

以下是一些學生測驗成績。個別成績儲存在 Scores 資料欄。您想要:

  1. 標記出未參加四次測驗的學生。
  2. 計算每位學生的分數範圍。
LastNameFirstNameScores
AllenAmanda[79, 83,87,81]
BellBobby[85, 92, 94, 98]
CharlesCameron[88,81,85]
DudleyDanny[82,88,81,77]
EllisEvan[91,93,87,93]

轉換:

首先,您想標記出未參加所有四次測驗的學生:

derive type:single value:IF(ARRAYLEN(Scores) < 4,"incomplete","") as:'Error'

只有 Cameron Charles 被標記出來。

以下的轉換作業會由最高到最低分數排序陣列值:

set column: Scores value: ARRAYSORT(Scores, 'descending')

下列轉換指令會擷取每個學生測驗成績中的第一個 (最高分) 和最後一個 (最低分) 值 (如果有參加四次測驗的話):

derive type:single value:ARRAYELEMENTAT(Scores,0) as:'highestScore'

derive type:single value:ARRAYELEMENTAT(Scores,3) as:'lowestScore'

提示:如果 Error 資料欄包含空值,您也可以產生 Scores4 資料欄。如果 ARRAYELEMENTAT 函式的陣列中沒有任何值,就會傳回空值,在這個範例中是表示元素 (測驗成績) 數量不足。

您現在可以追蹤測驗成績的變化:

derive type:single value:SUBTRACT(highestScore,lowestScore) as:'Score_range'


結果:

LastNameFirstNameScoresErrorlowestScorehighestScoreScore_range
AllenAmanda[87,83,81,79] 79878
BellBobby[98,94,92,85] 859813
CharlesCameron[88,85,81]incomplete 88
DudleyDanny[88,82,81,77] 778811
EllisEvan[93,93,91,87] 87936

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Dataprep 說明文件
需要協助嗎?請前往我們的支援網頁