範例:Replacement 轉換

本範例說明使用下列轉換取代或擷取儲存格資料的不同用法:

  • set - 定義預先定義的資料欄所使用的值。請參閱 Set 轉換

    提示:使用 derive 轉換產生含有一組定義值的新資料欄。請參閱 Derive 轉換

  • replace - 將出現在資料欄值中的字串常值或模式取代為特定字串。請參閱 Replace 轉換
  • extract - 從資料欄擷取以模式為基礎的值,然後儲存在新的資料欄。請參閱 Extract 轉換

來源:

下列資料集含有行銷平台透過網站訪客所採取的動作而收集到的聯絡人資訊。您必須清理此資料,然後準備數據分析平台使用的資料。

LeadIdLastNameFirstNameTitlePhoneRequest
LE160301001JonesCharlesChief Technical Officer415-555-1212reg
LE160301002LyonsEdward 415-012-3456download whitepaper
LE160301003MartinMaryCEO510-555-5555delete account
LE160301004SmithTaliaEngineer510-123-4567free trial

轉換:

Title 資料欄:例如,您會先注意到缺少了部分資料。數據分析平台會將「#MISSING#」字串值辨識為遺漏值的指標。因此,您可以在 Title 資料欄中按一下該遺漏值的長條。然後,選取「取代」建議資訊卡。請注意,預設取代項目是空值,您可以按一下 [修改] 以更新此取代項目值:

set col: Title value: IF(ISMISSING([Title]),'#MISSING#',Title)

Request 資料欄:您在 Request 資料欄中發現應該清除 reg 項目。請新增下列轉換指令,以取代該值:

replace col:Request with:'Registration' on:`{start}reg{end}`

上述轉換指令使用 Cloud Dataprep 模式做為 on: 參數的運算式。這個運算式指出從儲存格值開頭開始比對 reg 字串常值,一直到儲存格值結尾,只比對完整的 reg 儲存格值。

在此示例中,這個轉換指令可以良好運作,但如果值是大寫字體 Reg 開頭的 R,會發生什麼事?指令可能會無法取代該值。為了改善這個轉換指令,您可以在 on 參數中使用下列 Cloud Dataprep 模式來修改轉換指令,以便擷取大小寫差異:

replace col:Request with:'Registration' on:`{start}{[R|r]}eg{end}`

將上述轉換指令新增至您的方案後,您會發現 Request 資料欄中的所有值均轉換為大寫字體標題或適當的大小寫:

set col:Request value:PROPER(Request)

現在,所有值均已轉換為大寫字體標題。

Phone 資料欄:您可能已經注意到 Phone 資料欄中的值有些問題。在美國,前置號碼 555 僅用於收集資訊,所以這些是無效的電話號碼。

在資料格線中,選取此資料欄的第一個 555 例項。但此動作卻會選取該模式的所有例項,包括您不想修改的例項。在此情況下,請繼續選取其他資料列中類似的 555 例項。在建議資訊卡中,按一下 Replace 轉換。

但請注意,預設的 Replace 轉換同時醒目顯示了某一例項中的第二個 555 模式,這對於未顯示在樣本中的其他電話號碼而言,可能會是個問題。您必須修改此轉換指令的選擇模式。在下面的 on: 參數中,Cloud Dataprep 模式已修改為只比對電話號碼格式中第二個區段所出現的 555 例項。

replace col: Phone on: `{start}%{3}-555-%*{end}` with: '#INVALID#' global: true

請注意,指令中新增了萬用字元架構 (%*)。您或許可以新增只精確比對最後四個字元的模式 (%{4}),但此比對模式無法擷取尾端可能附有分機號碼的電話號碼。上述的運算式則是可以辦到。

附註:上述轉換指令建立的值與電話號碼資料類型不符。但在本例中,這些不相符卻可以想成是使用 Cloud Dataprep 輸出的系統優點。

LeadId 資料欄:您可能已注意到待開發客戶 ID 資料欄 (LeadId) 含有一些嵌入資訊:日期值及該日期中的例項 ID。您可以使用下列步驟來拆分此資訊。第一個步驟會建立另一個含有此資訊的工作資料欄,以便保留原始的未修改資料欄:

derive type:single value:LeadId as:'LeadIdworking'

您現在可以去除這個資料欄,建立新的資料欄。首先,使用下列 replace 轉換指令移除前置的兩個字元,因為新資料欄不需要該資料:

replace col:LeadIdworking with:'' on:'LE'

請注意,日期資訊現在已整齊地嵌入工作資料欄的第一個字元。請使用下列指令,將這些值擷取到新資料欄:

extract col: LeadIdworking on: `{start}%{6}`

新的 LeadIdworking2 資料欄現在只包含日期資訊。清理這個資料欄需要重新格式化資料,將資料類型重設為日期時間類型,然後套用 dateformat 函式以按照您的需求格式化。這些步驟可以個別練習。

現在,我們只要重新命名資料欄就好:

rename col:LeadIdworking1 to:'LeadIdDate'

在第一個工作資料欄中,您現在可以使用下列指令移除日期資訊:

replace col: LeadIdworking on: `{start}%{6}` with: ''

您可以重新命名此資料欄,指出資料欄是每日 ID:

rename col:LeadIdworking to:'LeadIdDaily'

結果:

LeadIdLeadIdDailyLeadIdDateLastNameFirstNameTitlePhoneRequest
LE160301001001160301JonesCharlesChief Technical Officer#INVALID#Registration
LE160301002002160301LyonsEdward#MISSING#415-012-3456Download Whitepaper
LE160301003003160301MartinMaryCEO#INVALID#Delete Account
LE160301004004160301SmithTaliaEngineer510-123-4567Free Trial
本頁內容對您是否有任何幫助?請提供意見:

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

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