Derive 轉換

注意:轉換屬於基礎程式語言的一部分,使用者無法直接存取。本篇文章的內容僅供參考。

產生新資料欄,其中的值為 value 運算式的輸出內容。運算式可依據 group 參數的指定值進行計算。您可視需要為輸出資料欄命名。

基本用法

字串文字範例:

derive type: single value: 'passed' as:'status'

輸出:產生叫做 status 的新資料欄,其中的每個資料列都含有 passed 這個值。

資料欄參照範例:

derive type: single value:productName as:'orig_productName'

輸出:產生名稱為 orig_productName 的新資料欄,其中含有 productName 中的所有值,可有效做為來源資料欄的備份。

函式參照範例:

derive type: single value:SQRT(POW(a,2) + POW(b,2)) as:'c'

輸出:產生名稱為 c 的新資料欄,其中包含將儲存於 ab 中的值套用畢氏定理後所得出的結果。若要進一步瞭解這個範例,請參閱 POW 函式

窗型函式範例:

您可以在 derive 轉換中使用窗型函式:

derive type: multiple col: avgRolling value: ROLLINGAVERAGE(POS_Sales, 7, 0) group: saleDate order: saleDate

輸出:計算 avgRolling 資料欄的值,做為前七天 POS_Sales 值的滾動平均,並按 saleDate 資料欄分組及排序。詳情請參閱窗型函式

參數

derive type: single|multiple value:(expression) [order: order_col] [group: group_col] [as:'new_column_name']

符記是否必要?資料類型說明
derive轉換轉換名稱
type字串公式類型:single (單一資料列) 或 multiple (多個資料列)
value字串運算式,產生要儲存在新資料欄中的值
order字串在套用 value 運算式前,用來排序資料集的資料欄或資料欄名稱
group字串如果您使用匯總或窗型函式,則可以指定 group 運算式來識別要套用 value 運算式的記錄子集。
as字串新產生的資料欄名稱

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

type

轉換中公式的類型:

說明
single公式計算只牽涉單一資料列的值。
multiple公式計算牽涉多個資料列的輸入內容。

使用須知:

是否必要?資料類型
字串 (singlemultiple)

value

標示轉換指令要套用的運算式。value 參數可以是下列其中一種類型:

  • 評估結果為布林值的測試述詞 (value: myAge == '30' 會產出 truefalse 值),或
  • 算數運算式 ( value: abs(pow(myCol,3)) )。

轉換類型會決定預期的 value 運算式類型。每種類型的運算式均可包含下列組合:

  • 常值: value: 'Hello, world'
  • 資料欄參照: value: amountOwed * 10
  • 函式: value: left(myString, 4)

  • 組合: value: abs(pow(myCol,3))

此平台會重新推測任何產生值的類型。

使用須知:

是否必要?資料類型
字串 (文字、資料欄參照、函式呼叫或組合)

order

這個參數會在套用指定函式前,指定用來排序資料集的資料欄。在排序鍵組合中,您可以新增多個以逗號分隔的資料欄。

附註:order 參數必須明確指定資料順序,否則產生的結果可能會隨著工作執行而改變。

附註:如果含有此參數,則資料集會先按 group 值分組,接著才依照 order 資料欄中的值排序。

附註:執行轉換前不需要對 order 資料欄進行排序。

提示:若要反向排序,請在資料欄名稱前加上連字號 (-MyDate)。

使用須知:

是否必要?資料類型
字串 (資料欄名稱)

group

識別為了套用轉換指令而做為資料集分組依據的資料欄。

ProdId 資料欄含有三個值:P001P002P003,您可以新增下列轉換指令:

derive type: single value:SUM(Sales) group:ProdId as:'SalesByProd'

上述轉換指令會產生 SalesByProd 資料欄,其中包含 Sales 值的總和,並依據三個產品 ID 進行分組。

如果 value 參數含有匯總或窗型函式,您可以套用 group 參數以指定要套用 value 計算的記錄子集。

附註:如使用 group 參數執行轉換,則會在資料網格中產生非確定性的重新排序。

您可以使用以逗號分隔的資料欄參照,來指定一或多個資料欄做為分組依據。

使用須知:

是否必要?資料類型
字串 (資料欄名稱)

as

系統即將產生的新資料欄名稱。如果沒有指定 as 參數,則使用預設名稱。

derive type: single value:(colX * colY) as:'areaXY'

輸出:產生新資料欄,其中含有 colXcolY 資料欄值的乘積。新資料欄被明確命名為 areaXY

使用須知:

是否必要?資料類型
字串 (資料欄名稱)

範例

範例 - 基本 Derive 範例

對下列資料集使用 derive 轉換以執行一些簡單的統計分析。

來源:

StudentIdTestNumberTestScore
S001178
S001285
S001381
S002184
S002292
S002377
S003183
S003288
S003385

轉換:

首先,您可以計算所有測驗的總平均分數。

derive type: single value:AVERAGE(Score) as:'avgScore'

由於並未設定格式,因此輸出值會很長。您可以編輯上述轉換指令來建立巢狀的 value 陳述式,並使用 NUMFORMAT 函式來設定適當的格式:

derive type: single value:NUMFORMAT(AVERAGE(Score),'##.00') as:'avgScore'

您可能也想知道每個學生的表現,以及確認哪些測驗為學生的最大挑戰:

derive type: single value: NUMFORMAT(AVERAGE(Score),'##.00') group: StudentId as: 'avgScorebyStudentId'

derive type: single value:NUMFORMAT(AVERAGE(Score),'##.00') group:TestNumber as:'avgScoreByTest'

若要計算每個學生的總分,請新增下列轉換指令。因為每個個別的測驗分數都是整數,所以不需要設定任何捨入格式。

derive type: single value:SUM(Score) group:StudentId as:'totalScoreByStudentId'

結果:

StudentIdTestNumberTestScoreavgScoreavgScorebyStudentIdScoreByTesttotalScoreByStudentId
S00117883.6781.3381.67244
S00128583.6781.3388.33244
S00138183.6781.3381.00244
S00218483.6784.3381.67253
S00229283.6784.3388.33253
S00237783.6784.3381.00253
S00318383.6785.3381.67256
S00328883.6785.3388.33256
S00338583.6785.3381.00256

範例 - Rounding 函式

以下範例會示範如何搭配使用 rounding 函式。這些函式作用如下:

  • FLOOR:不大於輸入值的最大整數。請參閱 FLOOR 函式
  • CEILING:不小於輸入值的最小整數。請參閱 CEILING 函式
  • ROUND:與輸入值最接近的整數。請參閱 ROUND 函式
  • MOD:input1 除以 input2 後的餘數整數。請參閱數字運算子

來源:

rowNumX
1-2.5
2-1.2
30
41
51.5
62.5
73.9
84
94.1
1011

轉換:

derive type: single value: FLOOR (X) as: 'floorX'

derive type: single value: CEILING (X) as: 'ceilingX'

derive type: single value: ROUND (X) as: 'roundX'

derive type: single value: (X % 2) as: 'modX'


結果:

rowNumXmodXroundXceilingXfloorX
1-2.5 -2-2-3
2-1.2 -1-1-2
300000
411111
51.5 221
62.5 332
73.9 443
840444
94.1 454
10111111111

範例 - 其他範例

在語言說明文件中,還有許多使用 derive 轉換的其他範例。

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

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

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