在此範例中,目標系統對名字和姓氏欄位的最大長度設有限制。您可以使用下列轉換指令,依據長度限制來評估和截斷字串。
測試字串長度
當 first_name
欄位長度超過 32 個字元時,您可以使用下列指令撰寫 TOO LONG
訊息:
轉換名稱 | Edit column with formula |
---|---|
參數:資料欄 | String_test |
參數:公式 | IF(LEN(first_name) > 32, 'TOO LONG',String_test) |
截斷字串
上述測試可讓您評估長度太長的個別字串,以查看這些字串是否有錯誤或有其他方式可以縮短長度。對於您無法輕易解決這些問題的大型資料集,您只需選擇滿 32 個字元就截斷字串長度:
轉換名稱 | Edit column with formula |
---|---|
參數:資料欄 | * |
參數:公式 | LEFT($col,32) |
在上述指令中,您可以使用萬用字元來比對資料集中的所有資料欄。系統已將替換值定義為來源資料欄 ($col
) 中的前 32 個字元。依據 LEFT
函式的定義,長度不超過 32 個字元的資料欄不受影響。
提示:如果您要截斷的欄位是作為資料集的索引鍵,您應在套用截斷作業後驗證索引鍵是否依然含有不重複的值。例如,如果 first_name
與 last_name
的組合是資料集中不重複的 ID,您應驗證含有這些 ID 的資料欄所含的值是否不重複。
特殊字串長度
在某些情況下,您可能想要限制文字字串的長度。在此範例中,資料集含有一個郵遞區號值資料欄,其中部分值是郵遞區號加 4 位數代碼格式。來源資料可能如下所示:
zip_code |
---|
94104 |
94104-2218 |
94105 |
為確保一致性,您可能想要限制資料欄僅使用郵遞區號的前五個數字。
步驟:
- 從其中一個九位數的郵遞區號中選取前五個數字。
- 在建議資訊卡中,選取「Extract」資訊卡。
選取下列變式:
轉換名稱 Extract text or pattern
參數:要從中擷取內容的資料欄 zipcode
參數:選項 Custom text or pattern
參數:要擷取的文字 `{zip}`
參數:之後開始擷取 `{start}`
- 按一下 [Add] (新增)。
上述解決方案參照兩個 Cloud Dataprep 模式以識別儲存格值的元素。詳情請參閱文字配對。
如需使用更普遍的作法,您可以使用下列部分字串函式來限制資料長度。如果值的長度短於指定字串長度,則該值保持不變。
注意:視資料欄的資料類型而定,縮短值長度的轉換可能會產生不相符的值或遺漏值。您應驗證沒有新的遺漏或不相符的值產生。
使用最右邊的值
使用下列轉換指令,可將字串縮短成任何值的最右邊 6 個字元:
轉換名稱 | Edit column with formula |
---|---|
參數:資料欄 | prodID |
參數:公式 | RIGHT(prodID, 6) |
子字串值
SUBSTRING
函式可讓您指定使用字串字元的特定子集。您可以指定值中第一個字元的索引,以及要併入的後續字元數。例如,將此函式套用到 countries
資料欄中的 United States of America
值時,下列轉換指令會將新值設為 States
。
轉換名稱 | Edit column with formula |
---|---|
參數:資料欄 | countries |
參數:公式 | SUBSTRING(countries, 7, 6) |
請注意,索引值從 0 開始;若要從值的開頭擷取,請將上述指令中的 7
取代為 0
。
其他字串函式
Wrangle 支援其他可用來轉換字串值的函式。請參閱字串函式。