將內容提供給目標系統之前,您可能會遇到必須修正的資料結構或資料格式問題。您可以使用本節所述的方法,來找出資料內容或資料類型設定的問題。
尋找不相符值
當 Cloud Dataprep by TRIFACTA® 評估資料集樣本時,會依據預期值來解釋資料欄中的值。依據資料欄的指定資料類型和內部模式比對,值可分成有效、不相符或遺漏等三種類別。這些值的類別會在每個資料欄的頂端以細長條表示。
- 不相符值為其資料類型似乎與資料欄指定類型不同的任何值。例如,如果
San Francisco
值出現在郵遞區號類型的資料欄中,系統會將它標示為不相符值。
在資料品質長條圖中,不相符值會以紅色標示:
提示:值經過系統檢查的類型會顯示在資料品質長條圖的左上方。下列範例顯示的資料類型是 ZIP
,代表美國郵遞區號資料。
圖:不相符的值以紅色表示
提示:開始根據不相符的值對資料執行轉換之前,請檢查這些資料欄的資料類型,確保資料類型都正確無誤。詳情請參閱支援的資料類型。
提示:在「轉換器」頁面中,按一下資料欄資料品質長條圖中的不相符值,即可查看相關計數、在資料格線的資料列中將這些值醒目顯示,並觸發一組建議供您檢視。
產生不相符值的原因很多:
- 在來源系統中輸入錯誤的值。
- 來源系統可能會在輸出時發生錯誤,特別在使用自訂結構來產生匯出資料時。
- 不正確的使用資料欄分隔符號,可能會導致欄位在個別資料列中發生偏移。
- 某組資料列的資料結構可能有問題。
- 資料欄的指定資料類型有誤。
提示:清理無效資料時,應從大問題著手,再處理小問題。如果資料欄值被分類為不相符值的比例較高,表示該資料的問題可能較大。請在受影響的資料列中,驗證其他資料欄值是否也屬於不相符值。首先應檢查和修正這些資料列,修正後,其他資料列中的其他不相符值可能也會隨之修正。
修正不相符值的方法
當您發現資料集裡有不相符的資料時,可以採用下列基本的修正方法:
變更資料類型。如果不相符的資料列數比例很高,您可能需要變更資料類型才能取得更好的比對結果。
以常數值取代不相符值。 只有在確定該值應為單一且一致的值時,這個方法才適用。選取資料欄中不相符的值,然後選取其中一個醒目顯示的不相符值。使用
replace
轉換,將不相符值變更為正確值。提示:若要修正獨立發生的不相符值問題,最簡單的方式是在資料格線中將不相符值醒目顯示。畫面上會顯示一組新的建議。您可以選取
replace
建議,然後將它修改為包含取代值。使用其他資料欄的值來設定值。您可以使用
set
轉換,以其他資料欄的對應值來取代不相符值,藉以修正不相符問題。使用函式。 將函式與
set
轉換搭配使用來取代不相符值,藉以修正資料。- 刪除資料列。 選取不相符值並使用
delete
轉換以移除有問題的資料列。 - 暫時隱藏資料欄。 如果您要將焦點放在其他內容上,您可以從顯示畫面中移除該資料欄。從資料欄下拉式選單中選取 [隱藏]。請注意,隱藏的資料欄還是會出現在任何產生的輸出中。
- 刪除資料欄。 如果資料欄資料非必要或無法使用,您可以從資料集捨棄整個資料欄。從資料欄下拉式選單中選取 [Delete] (刪除)。
提示:請儘早刪除非必要的資料欄。資料愈少,應用程式的運作就愈容易,工作執行效能也會愈高。
注意:您可能需要在資料集裡多次檢查並修正不相符資料的問題。例如,當您拆分巢狀資料時,可能會發現還有其他不相符的值。同樣地,聯結和查詢也可以找出資料類型設定不相符的問題。
轉換代碼中的不相符值
您可以在轉換中使用參照來識別不相符的資料,如下所示:
轉換名稱 | Edit column with formula |
---|---|
參數:資料欄 | postal_code |
參數:公式 | IF(ISMISMATCHED(postal_code, ['Zipcode']),'00000',postal_code) |
請注意,括住值的單引號很重要,因為有這個符號,系統才會將此值識別為常數。
提示:在上述指令範例中,請注意 Zipcode
值標識用來比對資料欄值的資料類型。在此案例中,為了讓資料更明確,您可以依據資料類型 Integer
來識別資料欄中不相符的值,因為所有的美國郵遞區號都是正整數。若要進一步瞭解如何在步驟中明確參照資料類型,請參閱有效的資料類型字串。
修剪資料
提示:若要刪除資料欄中的空格,請使用下列轉換指令:
轉換名稱 | Edit column with formula |
---|---|
參數:資料欄 | column1 |
參數:公式 | TRIM($col) |
這個步驟可能會增加遺漏值 (只含有空格字元的值) 的數量,以及相符值 (在英數值之前和之後含有空格的值) 的例項數量。
使用其他資料欄來設定值
您可以使用其他資料欄的值來取代目前資料欄中的不相符值。以之前的範例來說,不相符的郵遞區號會替換成父系實體中郵遞區號資料欄 (parent_postal_code
) 所含的對應值:
轉換名稱 | Edit column with formula |
---|---|
參數:資料欄 | parent_postal_code |
參數:公式 | IF(ISMISMATCHED(postal_code, ['Zipcode']),'00000',postal_code) |
使用函式來修正不相符的值
在轉換中,您可以插入預先定義的函式來取代不相符的資料值。在以下範例中,函式會計算 score
資料欄中所有值的平均值,以所得的結果值來替換該資料欄中的不相符值:
轉換名稱 | Edit column with formula |
---|---|
參數:資料欄 | score |
參數:公式 | IF(ISMISMATCHED(score, ['Decimal']),AVERAGE(score),score) |
提示:您也可以使用 IFMISMATCHED
函式來測試是否有不相符值。但是和上述建構的不同之處在於,當值符合列出的資料類型時,IFMISMATCHED
不支援 else 子句。詳情請參閱 IFMISMATCHED 函式。
無效資料類型設定
提示:作為字串資料類型的資料最容易管理,尤其是日期資料。Cloud Dataprep by TRIFACTA 有許多函式可供您部署,來管理字串。資料經過適當格式化之後,您可以將該資料變更成適當的資料類型。若立即變更資料類型,可能會在重新格式化和擴增資料時遇到一些問題。請將這個步驟留到最後執行。
若是資料欄的不相符值比例偏高,則指定給資料欄的資料類型可能有誤。在以下範例中,含有降雨量 (以英吋為單位) 資料的資料欄被誤設為布林資料類型:
圖:設定錯誤的資料欄資料類型
若要變更資料欄的資料類型,請在資料欄的頂端點選類型 ID,然後選取新的類型。在此案例中,您可以選取 Decimal
。
注意:變更類型後,請再次檢查資料品質長條圖。如果還是有不相符值,請檢查這些值以瞭解是否可以將這些不相符值的來源分類。
如前一範例所示,降雨量資料欄含有設為 T
的值,這可能是 true
的縮寫。當資料類型設為 Decimal
時,系統就會立即將這些值標示為不相符的資料。若要修正此問題,您可以使用 set
轉換,將所有 T
值替換成 1.0
。
在資料欄中選取一個 T
例項,然後按一下設定建議資訊卡。按一下 [修改]。在轉換指令的 value
中,輸入 1.0
。轉換指令應如下所示:
轉換名稱 | Edit column with formula |
---|---|
參數:資料欄 | PrecipitationIn |
參數:公式 | IFMATCHES([PrecipitationIn], `{start}{bool}{end}`),'1.0',PrecipitationIn) |
提示:如果可以的話,請檢查並參照來源系統產生的可用資料集結構定義。如果來源系統中的資料類型也有錯誤,則應同時在來源系統中修正此問題,如此日後從該系統匯出的資料才會顯示正確的類型。