範例 - 根據不同的分隔符號類型進行分割

這個範例說明了您可以如何使用下列類型的分隔符號,將單一欄位中的資料分割為多個資料欄:

  • 單一模式分隔符號:將一個模式套用至來源資料欄一或多次,藉此定義輸出資料欄中的分隔符號。
  • 多模式分隔符號:多模式分隔符號的格式可以是明確的字串、字元索引位置或寬度固定的資料欄,這類分隔符號可用來分割資料欄。

若要進一步瞭解這些方法,請參閱 Split 轉換

來源:

在本範例中,您的 CSV 資料集含有一組伺服器的狀態訊息。伺服器的相關資料和時間戳記則存放在 CSV 的單一資料值中。

Server|Date Time,Status
admin.examplecom|2016-03-05 07:04:00,down
webapp.examplecom|2016-03-05 07:04:00,ok
admin.examplecom|2016-03-05 07:04:30,rebooting
webapp.examplecom|2016-03-05 07:04:00,ok
admin.examplecom|2016-03-05 07:05:00,ok
webapp.examplecom|2016-03-05 07:05:00,ok

轉換:

資料初次載入「轉換器」頁面時,系統會使用下列兩個轉換指令來分割 CSV 資料:

splitrows col: column1 on: '\r'

split col: column1 on: ',' quote: '\"'

首先可能需要新增 header

header

此時,您的資料應如下所示:

Server_Date_TimeStatus
admin.example.com|2016-03-05 07:04:00down
webapp.example.com|2016-03-05 07:04:00ok
admin.example.com|2016-03-05 07:04:30rebooting
webapp.example.com|2016-03-05 07:04:30ok
admin.example.com|2016-03-05 07:05:00ok
webapp.example.com|2016-03-05 07:05:00ok

第一個資料欄含有三組不同的資料:伺服器名稱、日期和時間。請注意,這些資料欄之間的分隔符號均不相同,因此您應該使用多模式分隔符號來區隔資料:

split col:Server_Date_Time delimiters:'|',' '

新增上述指令時,您應該會看到三個不同的資料欄且各含有不同的資訊欄位。請注意,系統已自動捨棄來源資料欄。

附註:資料欄名稱不得含有 | 值,因此無法使用來源資料欄名稱做為產生的資料欄要套用的資料欄名稱依據。在這種情況下,請務必使用 rename 轉換指令據此更新系統產生的資料欄。

如果您認為應當將時間戳記資料欄分為年、月、日三欄,由於這個欄位的資料欄分隔符號均為連字號 (-),因此在使用 split 轉換指令時,可以搭配單一模式分隔符號:

split col:date on:`-` limit:2

結果:

在您為系統產生的資料欄變更名稱之後,資料集應該會如下所示。請注意,系統已自動捨棄來源時間戳記資料欄。

serveryearmonthdaytimeStatus
admin.example.com2016030507:04:00down
webapp.example.com2016030507:04:00ok
admin.example.com2016030507:04:30rebooting
webapp.example.com2016030507:04:30ok
admin.example.com2016030507:05:00ok
webapp.example.com2016030507:05:00ok
本頁內容對您是否有任何幫助?請提供意見:

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

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