CASE 函式

CASE 函式可讓您對單一陳述式中的一組運算式執行多個條件測試。若測試運算式得出的結果值為 true,即會產生對應輸出。輸出可以是常值或運算式。

若要進一步瞭解 IF 函式,請參閱 IF 函式

基本用法

範例:

derive type:single value:CASE([ Qty <= 10, 'low_qty', Qty >=100, 'high_qty', 'med_qty']) as:'Qty_Eval'

輸出:產生新的 Qty_Eval 資料欄,其中每個資料列均含有依據 Qty 資料欄求值運算所得出的文字字串:

語法

在下列說明中,如果 testX 運算式得出的值為 true,則 resultX 值為輸出。

  • 系統會按照測試運算式的列出順序求取出運算式的結果。
  • 文字運算式和結果會形成陣列中的配對值。
  • 您必須加入一或多個測試運算式。
  • 每個測試必須含有一個結果運算式。結果運算式可以是常值或運算式,但該運算式得出的值必須是支援的資料類型。
  • 如果測試運算式含有加引號的值,則系統會將運算式得出的值寫入測試尚未配對的所有值 (else 運算式)。
CASE([test1, 'result1',test2, 'result2', testn, 'resultn','result_else'])
引數是否必要?資料類型說明
test1、test2、testn運算式用來求取值的運算式,必須解析為 truefalse
result1、result2、result2、result_else字串如果對應的測試運算式得出的值為 true,用於寫入的加引號字串

這些運算式可以是常數 (字串、整數或任何其他支援的常值) 或精細的邏輯元素,雖然測試運算式得出的值只能是布林值。

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

test1、test2、testn

這些參數包含用於求取值的運算式。這個運算式必須解析為布林值 (truefalse)。

附註:測試運算式所遵循的語法與 IF 函式的語法相同。例如,您必須使用雙引號來比較值 (status == 'Ok')。

使用須知:

是否必要?資料類型示例值
評估為 truefalse 的運算式(OrderAge > 90)

result1、result2、result2、result_else

如果對應的測試運算式得出的值為 true,系統會寫入這個值作為結果。

這些運算式可以是任何資料類型的常值,或得出值為任何資料類型常值的運算式。

使用須知:

是否必要?資料類型示例值
常值或運算式

請參閱以下範例。

範例

範例 - 基本用法

下列資料代表一週內收到的訂單。系統會依據下列規則將折扣套用至訂單:

  • 標準折扣為 5%。
  • 如果訂單的單位數低於 10,折扣減少 5%。
  • 如果訂單的單位數超過 20,折扣增加 5%。
  • 週五特別折扣比標準折扣多 2%。
OrdDateCustIdQtyStd_Disc
5/8/17C00140.05
5/9/17C002110.05
5/10/17C00340.05
5/11/17C001250.05
5/12/17C002190.05


轉換:

為了確定星期幾,您可以使用下列轉換指令:

derive type:single value:WEEKDAY(Date)

您可以在下列轉換指令中建構折扣規則,此指令會產生 Disc 資料欄:

derive type:single value:CASE([Qty<10, Std_Disc - 0.05, Qty>=20, Std_Disc + 0.05, weekday_Date == 5, Std_Disc + 0.02, Std_Disc]) as:'Disc'

結果:

OrdDateCustIdQtyStd_DiscDisc
5/8/17C00140.050
5/9/17C002110.050.05
5/10/17C00340.050
5/11/17C001250.050.1
5/12/17C002190.050.07

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

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

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