ARRAYELEMENTAT 函式

針對指定資料欄中的陣列元素、陣列常值,或會傳回陣列的函式計算從 0 開始的索引值。
  • 這個函式會根據陣列的外層來計算。如果是巢狀陣列,則內層元素的數量不會列入計算。
  • 如果資料列含有遺漏陣列,則傳回的值為 0。如果資料列含有不被系統判定為陣列的值,則會傳回空值。

基本用法

陣列常值參照範例:

derive type:single value:ARRAYELEMENTAT([A,B,C,D],2)

輸出:傳回陣列中的第三個值,即 C

資料欄參照範例:

derive type:single value:ARRAYELEMENTAT(myArrays,9) as:'10th_myArrays'

輸出:產生新的 10th_myArrays 資料欄,其中包含 myArrays 資料欄中所列陣列的第十個元素。

陣列函式範例:

derive type:single value:ARRAYELEMENTAT(CONCAT([colA,colB]),3) as:'strArrayElementAtIndex'

輸出:產生新的 strArrayElementAtIndex 資料欄,其中包含串聯陣列的第四個元素。

語法

derive type:single value:ARRAYELEMENTAT(array_ref,int_index_ref)

引數是否必要?資料類型說明
array_ref字串陣列資料欄名稱、陣列常值或函式 (此函式會傳回要套用到函式的陣列)
int_index_ref整數 (非負整數)待傳回陣列元素的索引值

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

array_ref

陣列資料欄名稱、陣列常值或會傳回陣列的函式 (傳回的陣列中包含您想傳回的元素)。

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

使用須知:

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

int_index_ref

非負整數值,代表待傳回陣列元素的索引值。

  • 這個值必須是非負數的整數。如果值為 0,則會傳回陣列的第一個元素。
  • 如果這個值大於字串長度,則會傳回空值。
  • 不支援整數資料類型的資料欄參照。

使用須知:

是否必要? 資料類型範例值
整數 (非負整數)5

範例

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

這個範例包含下列函式:

  • 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 說明文件
需要協助嗎?請前往我們的支援網頁