範例 - Extractlist 轉換

來源:

下列資料集包含支援小組的各個成員在六個月內為個別客戶處理的支援電子郵件數量。在此範例中,假設您想瞭解為每位客戶處理的電子郵件總數。

不過,由於沒有任何項目可表示支援小組成員是否已回覆客戶的電子郵件,因此資料參差不齊,導致您無法使用 unnest 轉換。

custIdstartDateendDatesupportEmailCount
C0017/15/201512/31/2015["Max":"2","Ted":"0","Sally":"12","Jack":"6","Sue":"4"]
C0027/15/201512/31/2015["Sally":"4","Sue":"3"]
C0037/15/201512/31/2015["Ted":"12","Sally":"2"]
C0047/15/201512/31/2015["Jack":"7","Sue":"4","Ted":"5"]

如果資料是從 CSV 檔案匯入,您可能需要進行簡單的 replace 轉換作業來清理資料,這樣資料才會如上述範例所示。

轉換:

請使用下列轉換,只從 supportEmailCount 陣列擷取數字值:

extractlist col:supportEmailCount on:`{digit}+`

您現在應有一個包含參差陣列的 extractlist_supportEmailCount 資料欄。您可以使用下列轉換指令,將這些資料轉換成以逗號分隔的值清單:

replace col: extractlist_supportEmailCount on: `[` with: '' global: true

replace col: extractlist_supportEmailCount on: `]` with: '' global: true

replace col: extractlist_supportEmailCount on: `"` with: '' global: true

將資料欄轉換成字串資料類型。

您現在可以將資料欄分成不同的資料欄,分別包含經修改來源中的個別值。limit 參數指定的是要建立的分割次數,因此會產生 5 個新資料欄 (此為來源陣列的項目數量上限)。

split col:extractlist_supportEmailCount on:',' limit:4

您可能需要將各個產生的資料欄類型設為「整數」。如果您嘗試使用 derive 轉換計算所有產生的資料欄總和,系統只會傳回第一列的值,因為缺少的資料列包含空值。

在包含空值的資料欄中,選取資料直方圖中缺少的值長條。接著選取「Replace」(取代) 建議資訊卡,然後修改轉換指令,以 0 取代空值,如下所示:

set col: extractlist_supportEmailCount3 value: '0' row: ISMISSING([extractlist_supportEmailCount3])

針對任何其他包含空值的資料欄重複執行這個步驟。

您現在可以使用下列指令,針對產生的資料欄計算當中值的總和:

derive type:single value:(extractlist_supportEmailCount1 + extractlist_supportEmailCount2 + extractlist_supportEmailCount3 + extractlist_supportEmailCount4 + extractlist_supportEmailCount5)

結果:

將產生的資料欄重新命名為 totalSupportEmails,並將用來建立此資料欄的資料欄捨棄後,您的資料集應如下所示:

custIdstartDateendDatesupportEmailCounttotalSupportEmails
C0017/15/201512/31/2015["Max":"2","Ted":"0","Sally":"12","Jack":"6","Sue":"4"]24
C0027/15/201512/31/2015["Sally":"4","Sue":"3"]7
C0037/15/201512/31/2015["Ted":"12","Sally":"2"]14
C0047/15/201512/31/2015["Jack":"7","Sue":"4","Ted":"5"]16
本頁內容對您是否有任何幫助?請提供意見:

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

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