Set 轉換

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

將一或多個指定資料欄中的值替換成指定值,指定值可以是文字或運算式。運算式可以使用條件函式篩選資料列組。

set 轉換用於替換整個儲存格的值。若要使用文字或模式替換部分儲存格的值,請使用 replace 轉換。詳情請參閱 Replace 轉換

基本用法

文字示例:

set col: Country value: 'USA'

輸出:Country 資料欄中所有資料列的值都設定為 USA

多個資料欄的文字示例:

set col: SSN,Phone value: '##REDACTED###'

輸出:SSNPhone 資料欄中所有資料列的值都設定為 ##REDACTED##

運算式示例:

set col: isAmerica value: IF(Country == 'USA', true', 'false')

輸出:如果 Country 資料欄的值是 USA,則 isAmerica 的值會被設定為 true

預留位置示例:

如果您要在多個資料欄套用相同的函式,則適合使用預留位置值取代資料欄名稱。例如:

set col:score1,score2 value:IF ($col == 0, AVERAGE($col), $col)

輸出:在上述轉換指令中,如果資料欄的值為 0,則 score1score2 的值會被設定為資料欄值的平均值。提醒您,資料欄中的所有資料列都會套用平均值計算,並非只限篩選出的資料列。

窗型函式範例:

您可以在 set 轉換中使用窗型函式:

set col: avgSales value: ROLLINGAVERAGE(POS_Sales, 7, 0) group: saleDate order: saleDate

輸出:計算 avgSales 資料欄的值,做為 POS_Sales 前七天的累計平均值,並依據 saleDate 資料欄分組及排序。詳情請參閱窗型函式

參數

set col:col1,[col2] value:(expression) [group: group_col]

符記是否必要?資料類型說明
set轉換轉換指令的名稱
col1字串資料欄名稱
col2字串資料欄名稱
value字串運算式,產生要儲存在資料欄中的值
group字串如果您是使用匯總或窗型函式,可以指定 group 運算式來標示要套用 value 運算式的記錄子集。

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

col1、col2

標示要套用轉換指令的資料欄及其他選用的資料欄。

set col: MyCol value: 'myNewString'

輸出:MyCol 資料欄的值設定為 myNewString

使用須知:

是否必要?資料類型
字串 (資料欄名稱)

value

標示轉換指令要套用的運算式。value 參數可以是下列其中一種類型:

  • 評估結果為布林值的測試述詞 (value: myAge == '30' 會產出 truefalse 值),或
  • 算數運算式 ( value: abs(pow(myCol,3)) )。

轉換類型會決定預期的 value 運算式類型。每種類型的運算式均可包含下列組合:

  • 常值: value: 'Hello, world'
  • 資料欄參照: value: amountOwed * 10
  • 函式: value: left(myString, 4)

  • 組合: value: abs(pow(myCol,3))

此平台會重新推測任何產生值的類型。

使用須知:

是否必要?資料類型
字串 (文字、資料欄名稱或運算式)

group

標示為了套用轉換指令而做為資料集分組依據的資料欄。

如果 value 參數含有匯總或窗型函式,您可以套用 group 參數以指定要套用 value 計算的記錄子集。

您可以使用以逗號分隔的資料欄參照,指定一或多個資料欄做為分組依據。

使用須知:

是否必要?資料類型
字串 (資料欄名稱)

示例

示例:使用 replace、set 及 extract 清除行銷聯絡人資料

此示例說明下列轉換指令取代或擷取儲存格資料的不同用法:

  • 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 資料欄中按一下該遺漏值的長條。然後,選取「取代」建議資訊卡。請注意,預設取代項目是空值,您可以按一下 [Edit] 以更新此取代項目值:

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

示例 - 使用 $col 預留位置

本示例說明您如何使用下列的條件計算函式來分析氣象資料:

  • AVERAGEIF - 符合指定條件且依群組區分的一組值的平均值,請參閱 AVERAGEIF 函式
  • MINIF - 符合指定條件且依群組區分的一組值的最小值。請參閱 MINIF 函式
  • MAXIF - 符合指定條件且依群組區分的一組值的最大值。請參閱 MAXIF 函式
  • VARIF - 符合指定條件且依群組區分的一組值的變異數。請參閱 VARIF 函式
  • STDEVIF - 符合指定條件且依群組區分的一組值的標準差。請參閱 STDEVIF 函式

來源:

以下是部分氣象資料示例:

datecityraintempwind
1/23/17Valleyville0.0012.86.7
1/23/17Center Town0.319.45.3
1/23/17Magic Mountain0.000.07.3
1/24/17Valleyville0.2517.23.3
1/24/17Center Town0.541.17.6
1/24/17Magic Mountain0.325.08.8
1/25/17Valleyville0.023.36.8
1/25/17Center Town0.833.35.1
1/25/17Magic Mountain0.59-1.76.4
1/26/17Valleyville1.0815.04.2
1/26/17Center Town0.966.17.6
1/26/17Magic Mountain0.77-3.93.0
1/27/17Valleyville1.007.22.8
1/27/17Center Town1.3220.00.2
1/27/17Magic Mountain0.775.65.2
1/28/17Valleyville0.12-6.15.1
1/28/17Center Town0.145.04.9
1/28/17Magic Mountain1.501.10.4
1/29/17Valleyville0.3613.37.3
1/29/17Center Town0.756.19.0
1/29/17Magic Mountain0.603.36.0


轉換:

下列指令會計算各城市雨天的平均溫度:

derive type:single value:AVERAGEIF(temp, rain > 0) group:city as:'avgTempWRain'

下列指令會計算各城市零度以下日子的最大風速:

derive type:single value:MAXIF(wind,temp < 0) group:city as:'maxWindSubZero'

此步驟會計算各城市風速低於每小時 5 英里時的最低氣溫:

derive type:single value:MINIF(temp,wind<5) group:city as:'minTempWind5'

此步驟計算各城市雨天的溫度變異數:

derive type:single value:VARIF(temp,rain >0) group:city as:'varTempWRain'

下列指令會計算 Center Town 的雨量標準差:

derive type:single value:STDEVIF(rain,city=='Center Town') as:'stDevRainCT'

您可以使用下列轉換指令,設定產生的輸出結果的格式。請注意多資料欄轉換的 $col 預留位置值:

set col:stDevRainCenterTown,maxWindSubZero value:numformat($col,'##.##')

由於下列指令使用的資料在小數點以後只有一個有效數字,請分開設定其格式:

set col:varTempWRain,avgTempWRain,minTempWind5 value:numformat($col,'##.#')

結果:

日期cityraintempwindavgTempWRainmaxWindSubZerominTempWind5varTempWRainstDevRainCT
1/23/17Valleyville0.0012.86.78.35.17.263.80.37
1/23/17Center Town0.319.45.37.3 532.60.37
1/23/17Magic Mountain0.000.07.31.66.43-3.9120.37
1/24/17Valleyville0.2517.23.38.35.17.263.80.37
1/24/17Center Town0.541.17.67.3 532.60.37
1/24/17Magic Mountain0.325.08.81.66.43-3.9120.37
1/25/17Valleyville0.023.36.88.35.17.263.80.37
1/25/17Center Town0.833.35.17.3 532.60.37
1/25/17Magic Mountain0.59-1.76.41.66.43-3.9120.37
1/26/17Valleyville1.0815.04.28.35.17.263.80.37
1/26/17Center Town0.966.17.67.3 532.60.37
1/26/17Magic Mountain0.77-3.93.01.66.43-3.9120.37
1/27/17Valleyville1.007.22.88.35.17.263.80.37
1/27/17Center Town1.3220.00.27.3 532.60.37
1/27/17Magic Mountain0.775.65.21.66.43-3.9120.37
1/28/17Valleyville0.12-6.15.18.35.17.263.80.37
1/28/17Center Town0.145.04.97.3 532.60.37
1/28/17Magic Mountain1.501.10.41.66.43-3.9120.37
1/29/17Valleyville0.3613.37.38.35.17.263.80.37
1/29/17Center Town0.756.19.07.3 532.60.37
1/29/17Magic Mountain0.603.36.01.66.43-3.9120.37

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

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

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