範例 - IF 資料類型驗證函式

本節提供的簡易範例示範如何使用 IF* 函式進行資料類型驗證。這類函式包含下列項目:

  • IFNULL:如果輸入運算式或輸入值為空值,則此函式會傳回指定值。請參閱 IFNULL 函式
  • IFMISSING:如果輸入值或運算式為遺漏值,則傳回指定值。請參閱 IFMISSING 函式
  • IFMISMATCHED:如果輸入值或運算式與資料欄的資料類型不相符,則傳回指定值。請參閱 IFMISMATCHED 函式
  • IFVALID:如果輸入值或運算式對資料欄的資料類型有效,則傳回指定值。請參閱 IFVALID 函式

來源:

以下簡易資料表依照客戶 ID 列出郵遞區號:

custIdcustZip
C00198123
C00294105
C00312415
C00412451-2234
C00512441-298
C006
C007
C0081242
C0091104


轉換:

將上述資料匯入轉換頁面時,您會注意到下列事項:

  • custZip 資料欄的格式設為整數類型。
  • custZip 資料欄有兩個遺漏值以及兩個不相符值。

首先測試 custZip 資料欄中的有效值,您可以使用 IFVALID 函式驗證任何資料類型:

derive type:single value:IFVALID(custZip, 'Zipcode', 'ok') as:'status'

修正四位數郵遞區號:status 資料欄中,前四列例項的狀態為 ok。您會發現底部的兩個資料列含有四位數代碼。

由於 custZip 值原先是以整數類型匯入,因此系統會刪除任何前置的 0 值。在這種情況下,您可以重新加回前置的零。在重新加回前置的零之前,請先將 zip 的資料類型變更為字串,並插入下列指令:

derive type:single value:IF(LEN(custZip)==4,'0','') as:'FourDigitZip'

derive type:single value: merge([FourDigitZip,custZip]) as:'custZip2'

set col:zip value:custZip2

drop col:FourDigitZip,custZip2

現在,當您點選最後一個方案步驟時,應會看見 status 多了兩個顯示為 Ok 的資料列。

針對具有三位數延伸碼的郵遞區號,只要移除延伸的部分即可變成有效值。請按一下倒數第二個步驟,系統會在資料網格中將該值醒目顯示。請按一下「Replace」(取代) 建議資訊卡,選取使用下列字串作為比對模式的選項:

'-{digit}{3}{end}'

上述字串意指完全刪除郵遞區號中的三位數延伸碼。您可以針對任何兩位數或一位數的延伸碼執行相同的作業,不過本範例中並沒有這類資料。

遺漏值與空值:現在,您需瞭解如何處理遺漏值和空值。IFMISSING 會測試是否有遺漏值和空值,而 IFNULL 只會測試是否有空值。空值可能表示該資料列的資料格式錯誤,而在這個範例中,您想要刪除空值,並針對遺漏值寫入 missing 狀態。

請在方案中最後一行的上方按一下,插入下列指令:

set col:custZip value:IFNULL(custZip, 'xxxxx')

set col:custZip value:IFMISSING(custZip, '00000')

現在,當您按一下方案中的最後一行時,就只會列出狀態不是 ok 的空值。您可以使用以下指令移除這個資料列及所有情況類似的資料列:

delete row:(status == 'xxxxx')


結果:

custIdcustZipstatus
C00198123ok
C00294105ok
C00312415ok
C00412451-2234ok
C00512441-298ok
C00600000ok
C0081242ok
C0091104ok

請重複執行上述步驟做為練習,從使用 IFMISMATCHED 函式判斷 status 資料欄中的值開始:

derive type:single value:IFMISMATCHED(custZip, 'Zipcode', 'mismatched') as:'status'

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

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

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