Settype 轉換

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

設定一或多個指定資料欄的資料類型。系統會依據新資料類型驗證資料欄的資料,可能會造成資料欄剖析結果變更。

您可以將類型指定為字串文字,或是以逗號分隔的文字集。如要進一步瞭解有效的字串文字,請參閱有效的資料類型字串

提示:

提示:您可以使用 settype 轉換覆寫系統推測的資料欄資料類型,不過一旦新增轉換步驟,系統就會重新推測資料欄的資料類型,且可能會覆寫您指定的類型,因此請盡可能晚一點於方案中套用 setttype 轉換。

  • 將資料欄設為某一資料類型時,系統會依據新的類型驗證資料欄中的所有值,不相符值的數量可能會隨之改變。您可能需要執行一些清理作業。部分作業可能會讓資料自動重新驗證。
  • 透過資料欄的下拉式選單設定類型可能會比較輕鬆。使用 settype 轉換可將在資料欄下拉式選單中所選取的資料類型轉換成方案步驟。
  • 如果變更資料類型後發生資料大量不相符的問題,將類型變更或還原為字串可能會有所幫助。所有資料都可以被解讀為字串或字串值清單。先使用操控字串資料的轉換指令和函式清理不相符的資料,再將資料類型變更為您想使用的類型,是比較簡單的做法。
  • 與新資料類型不符的資料列值會在工作執行期間轉成空值。

基本用法

單一資料欄範例:

settype col: Score type: 'Integer'

輸出:Score 資料欄的資料類型變更為「整數」。

多資料欄範例:

settype col: Score,studentId type: 'Integer'

輸出:ScorestudentId 資料欄的資料類型變更為「整數」。

參數

settype col:col1,col2 type:'string_literal'

符記是否必要?資料類型說明
settype轉換轉換名稱
col字串要套用指定類型的資料欄清單 (以逗號分隔)。
type字串字串文字,用於標示要套用於資料欄的資料類型。請參閱有效的資料類型字串

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

col

標示要套用轉換指令的資料欄,您可以指定一或多個資料欄。

使用須知:

是否必要?資料類型
以逗號分隔的字串 (一或多個資料欄名稱)

type

定義要套用於轉換指令的資料類型。類型定義為字串文字。如需有效字串的清單,請參閱有效的資料類型字串

settype col: zips type:'Zipcode'

輸出:zips 資料欄的資料類型變更為「Zip Code」(郵遞區號) 資料類型。所有值均會經驗證為美國郵遞區號。

使用須知:

是否必要?資料類型
字串值

範例

範例 - 使用日期值進行簡單的 settype 轉換

來源:

下面是按日期列出的活動清單。請注意日期值的變化,其中包含了明顯無效的日期。以下為來源資料:

myDate, myAction
4/4/2016,Woke up at 6:30
4-4-2016,Got ready
9-9-9999,Drove kids to school
4-4-2016, Commuted to work

轉換:

將這筆資料匯入轉換頁面時,立即發生兩個問題:沒有資料欄標題及底端的空白資料列。以下兩個轉換指令可以修正問題:

header

delete row: ISMISSING([myDate])

至於無效的日期,您可以從前後的資料列推測出應為相同的日期。進行下列的變更便能修正日期問題:

replace col: myDate on: `9-9-9999` with: '4-4-2016' global: true

現在日期已整齊一致,您可以將資料欄的資料類型設為符合的日期時間格式:

settype col: myDate type: 'Datetime','mm-dd-yy','mm*dd*yyyy'

請注意上述指定日期時間類型的語法。除了關鍵字 Datetime 外,您還必須指定格式類型,以及後面的該格式變化類型。

提示:資料欄資料類型選取器會提供一組系統支援的日期時間格式和變化類型。當您選取需要的日期時間格式後,setttype 轉換就會加入您的方案中。

結果:

myDatemyAction
4/4/2016Woke up at 6:30
4-4-2016Got ready
4-4-2016Drove kids to school
4-4-2016Commuted to work

範例 - 使用 merge 與 settype 清理應視為其他資料類型的數值資料

本範例說明如何清理本質上被解譯為數字,但實際上應為是字串或結構化字串類型的資料 (例如性別)。本範例使用:

  • settype:定義一或多個資料欄的資料類型,請參閱 Settype 轉換

  • merge:合併兩個字串類型資料欄,請參閱 Merge 轉換

來源:

下列範例中的兩個資料欄分別含有客戶 ID 和郵遞區號資訊。將這筆資料載入轉換頁面時,由於所含的內容均為數字,系統會將資料解譯為數字類型。

只有四位數的 ZipCode 值實際上應為五位數,前面需要加上 0

CustIdZipCode
40201231234
201212194105
321201294101
13012122020

轉換:

CustId 資料欄:這個資料欄的類型必須重新設為字串值。您可以透過資料欄的下拉式選單將資料欄資料類型設定為「字串」,呈現出的轉換指令如下:

settype col:CustId type:'String'

雖然資料欄現在是「字串」類型,但日後進行轉換時,系統仍可能再次將資料欄推測為整數值。如要避免發生這類情形,您可以在字串前方加上標記,不過在執行轉換前應先移除此標記。

基本方法為先建立含有客戶 ID 標記 (C) 的新資料欄,然後將這個資料欄與現有的 CustId 資料欄合併在一起。如果客戶 ID 為數字值且可能與其他數值搞混時,在前面加上這類的指標會非常有幫助。此外,這個合併步驟也會強制系統將值解讀為字串值 (此類型更適合用於 ID)。

merge col:'C', CustId

您現在可以刪除 CustId 資料欄,並將新資料欄重新命名為 CustId

ZipCode 資料欄:這個資料欄必須轉換成有效的郵遞區號值。為方便使用,這個資料欄的類型應為「字串」:

settype col:ZipCode type:'Zipcode'

如果任一資料列中的值長度為四位數,則下列轉換指令會變更 ZipCode 資料欄中的值。新值為原始值前面加上數字 0

set col: ZipCode value: if(len($col) == 4, merge(['0',$col]), $col)

這個資料欄現在可重設為「郵遞區號」類型。

結果:

CustIdZipCode
C402012301234
C201212194105
C321201294101
C130121202020

請記得從 CustId 資料欄移除 C 標記。在 CustId 資料欄中選取 C 值,然後選擇 replace 轉換。您可能需要將清理完畢的資料重設為字串資料類型。

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

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

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