擷取值

您可以從一資料欄值中擷取一或多個值,將資料化為有意義且離散的資訊。本節說明如何擷取資料欄中的資料,可用的方法會因資料類型而異。

擷取和拆分的比較

擷取和拆分轉換有不同的作用:

  • 拆分轉換會根據該來源資料欄中一或多個值所標示的資料拆分位置,將單一資料欄分成一或多個不同的資料欄。這些分隔符號可由應用程式決定,或由使用者在定義轉換時指定。
  • 擷取轉換會比對來源資料欄中的常值或模式值,並將其儲存在獨立的資料欄中。

    附註:擷取轉換不會對來源資料欄造成影響。

擷取方法

在「Transformer」(轉換器) 頁面中,您可以使用下列方法來擷取值:

方法說明
選取在資料格線中選取部分值,系統隨即會列出各種資料處理建議。當您選取部分值時,擷取選項通常在建議清單頂端。
使用資料欄選單在資料欄右側的選單中,選取 [Extract] (擷取) 和子選單項目來開始設定轉換。請參閱資料欄選單
使用「Transformer」(轉換器) 工具列在資料格線頂端的「Transformer」(轉換器) 工具列中,按一下「擷取」圖示來開始設定擷取轉換。請參閱轉換器工具列
使用「Search」(搜尋) 面板在「Search」(搜尋) 面板中,輸入 extract 來從頭開始建構轉換。請參閱搜尋面板

擷取文字或模式

擷取的主要用途是從一欄值中移除常值或模式值。假設您的資料集包含一欄 LinkedIn 更新資訊。您可以使用下列任一方法從這些值中擷取關鍵字。

擷取單一值

以下轉換範例會從 msg_LinkedIn 資料欄中擷取 #bigdata 這個字詞:

extractpatterns type: custom col: msg_LinkedIn on: '#bigdata' limit: 1

轉換名稱 Extract text or pattern
參數:要從中擷取內容的資料欄 msg_LinkedIn
參數:選項 Custom text or pattern
參數:要擷取的文字 '#bigdata'
參數:要擷取的比對結果數量 1

附註:

  • option 參數會指出要比對的模式是由使用者指定的自訂模式。
  • Number of matches to extract 參數的預設值為 1,表示轉換作業最多會從各個儲存格中擷取一個值。這個值可設為 1 至 50 之間的數字。

限制比對

在擷取轉換中,您可以指定要在哪些常值或模式之前或之後尋找比對項目。這個方法可用來移除各個儲存格值的部分內容,避免系統誤將其比對為所需的常值或模式。

以下範例會忽略區碼,並擷取電話號碼的第二個三位數元素:

轉換名稱 Extract text or pattern
參數:要從中擷取內容的資料欄 phone_num
參數:選項 Custom text or pattern
參數:要擷取的文字 `{digit}`
參數:要擷取的比對結果數量 1
參數:忽略位於兩個引號之間的比對項目 `{start}{digit}{3}\-`

擷取單一模式

您也可以使用 Cloud Dataprep 模式或規則運算式執行模式擷取作業。

  • 規則運算式是用來描述字元模式以進行比對的標準方法。規則運算式相當強大,但可能會難以使用。
  • Cloud Dataprep 模式是用來描述模式的專屬方法,比使用規則運算式簡單許多。
  • 若要進一步瞭解這兩種模式,請參閱文字比對

以下範例會擷取 msg_LinkedIn 資料欄中所有開頭為 # 的字詞:

extractpatterns type: custom col: msg_LinkedIn on: `\#{alphanum-underscore}+` limit: 50

轉換名稱 Extract text or pattern
參數:要從中擷取內容的資料欄 msg_LinkedIn
參數:選項 Custom text or pattern
參數:要擷取的文字 `\#{alphanum-underscore}+`
參數:要擷取的比對結果數量 50

附註:

  • Text to extract 參數已變更:

    元素說明

    兩個反引號 (`)

    表示介於兩個反引號之間的運算式是 Cloud Dataprep 模式。

    \#斜線表示接在後面的字元只應解讀為一個字元,而不應解讀為模式中的特殊字元。
    {alphanum-underscore}

    這個 Cloud Dataprep 模式元素是用來表示單一英數字元或底線字元。

    +在上述字元後方加上加號,即表示模式可針對一段長度一致或不等的英數字元或底線字元進行比對。
  • Number of matches to extract 參數最多可擷取 50 個主題標記。

進階選項

選項說明
要擷取的模式數量

將這個值設為您想擷取的模式總數。

附註:這個值會決定擷取作業產生的資料欄數量。如果沒有可用的值,系統會在對應資料欄中寫入空白值。

預設值為 1

忽略大小寫根據預設,模式比對會區分大小寫。勾選這個核取方塊即可在比對時忽略大小寫。
忽略位於兩個引號之間的比對項目您可以在此輸入模式,以說明不應包含在比對結果中的模式。這個選項很實用,舉例來說,如果您有多個文字例項,但想忽略第一個例項,這個選項就能派上用場。

擷取多個值

在模式運算式中,您可以使用垂直的直立線字元 (|) 定義多個要尋找的模式。以下範例會擷取 myDate 資料欄中結尾為 78 的任何值:

轉換名稱 Extract text or pattern
參數:要從中擷取內容的資料欄 myDate
參數:要擷取的文字 `{any}+7|{any}+8`
參數:擷取結束範圍 `{end}`

Cloud Dataprep 模式和規則運算式中都可使用垂直的直立線。

擷取第一組或最後一組字元

您可以將資料欄中第一組或最後一組字元擷取至新資料欄。在以下範例中,系統會將 ProductName 資料欄中前五個字元擷取至新的產品 ID 資料欄:

轉換名稱 Extract by positions
參數:要從中擷取內容的資料欄 ProductName
參數:選項 First characters
參數:要擷取的字元數量 5

您可以將選項值變更為 Last characters,從資料欄值的右邊開始擷取。

擷取並移除

如果您需要移除已擷取的字元,可以使用以下轉換。在這個範例中,系統會將前一個轉換擷取的前五個字元移除:

轉換名稱 Edit column with formula
參數:資料欄 ProductName
參數:公式 RIGHT(ProductName, LEN(ProductName)-5)

依位置擷取

您可以擷取一組資料欄值裡介於指定索引位置之間的值。在以下範例中,系統會將資料欄裡介於第五和第十個字元之間的文字擷取至新資料欄。

提示:如果比對區域前後的內容不一致且無法使用模式來描述,這個擷取方法就能派上用場。如果區域前後的內容一致,請使用擷取文字或模式轉換。

轉換名稱 Extract by positions
參數:要從中擷取內容的資料欄 ProductName
參數:選項 Between two positions
參數:起始位置 5
參數:結束位置 10

依資料類型擷取

您可以擷取特定資料類型,或根據資料錯誤來比對指定資料類型。

擷取日期值

您可以使用函式擷取日期時間資料欄中的值。以下範例會擷取 myDate 資料欄中的年份值:

轉換名稱 New formula
參數:公式類型 Single row formula
參數:公式 YEAR(myDate)
參數:新資料欄名稱 myYear

以下函式可用來擷取日期時間資料欄中的值 (前提是已設定格式的日期中有該值):

您也可以使用 DATEFORMAT 函式重新設定整個日期時間資料欄的格式。以下範例會重新設定資料欄的格式,讓其只顯示兩位數年份:

轉換名稱 Edit column with formula
參數:資料欄 myDate
參數:公式 DATEFORMAT(myDate, "yy")

擷取數字值

您可以從文字值中擷取數字值。在以下範例中,系統會從 address 資料欄擷取第一個數字,相當於擷取地址中的門牌號碼:

轉換名稱 Extract patterns
參數:要從中擷取內容的資料欄 address
參數:選項 Numbers
參數:要擷取的比對結果數量 1

這個新資料欄如果有空白值,可能表示地址的格式有問題。

提示:如果您將要針對 2 資料欄擷取的模式數量設為 address,則可能會擷取出公寓或套房 (戶或室) 的資訊。

擷取物件值

如果您的資料包含多組陣列,您可以將陣列元素擷取至每個鍵的資料欄,並將值寫入各個鍵資料欄。

假設您餐廳資料集的 restFeatures 資料欄包含一組餐廳的特性,並採用以下 JSON 格式:

{
  "Credit": "Y",
  "Accessible": "Y",
  "Restrooms": "Y",
  "EatIn": "Y",
  "ToGo": "N",
  "AlcoholBeer": "Y",
  "AlcoholHard": "N",
  "TotalTables": "10",
  "TotalTableSeats": "36",
  "Counter": "Y",
  "CounterSeats": "8"
}

您可以使用以下轉換,將 TotalTableSeatsCounterSeats 的值擷取至獨立的資料欄:

轉換名稱 Unnest Objects into columns
參數:資料欄 restFeatures
參數:元素路徑 - 1 TotalTableSeats
參數:元素路徑 - 2 CounterSeats
參數:包括原始資料欄名稱 Selected

執行上述轉換後,您可以對 TotalTableSeatsCounterSeats 資料欄執行簡單的加總,以判斷餐廳的座位總數。

擷取陣列值

在某些情況下,資料可能會包含重複鍵/值組合的陣列,其中每個鍵/值組合都在不同的行。假設您有名為 Events 的資料欄,其中包含與同一資料列所述音樂家相關的日期和時間資訊。Events 資料欄看起來可能如下:

[{"Date":"2018-06-15","Time":"19:00"},{"Date":"2018-06-17","Time":"19:00"},{"Date":"2018-06-19","Time":"20:00"},{"Date":"2018-06-20","Time":"20:00"}]

以下轉換會為 Events 資料欄的每個項目分別建立不同的資料列,並在新資料列的其他欄位中填入原始資料列的資料:

附註:這種轉換可能會大幅增加資料集的大小。

轉換名稱 Expand arrays into rows
參數:資料欄 Events

擷取網址元素

網址元素

您可以使用函式擷取有效網址的特定元素。以下轉換會從 myURL 資料欄提取網域值:

轉換名稱 New formula
參數:公式類型 Single row formula
參數:公式 DOMAIN(myURL)
參數:新資料欄名稱 myDomain

在某些情況下,這個函式可能不會傳回值。舉例來說,如果網址沒有子網域部分,SUBDOMAIN 函式會傳回空白值。

以下函式可用於擷取一組網址中的值:

查詢參數

您可以擷取網址中的查詢參數值。以下範例會從 storeURL 欄位值中擷取 store_id 值:

轉換名稱 Extract patterns
參數:要從中擷取內容的資料欄 storeURL
參數:選項 HTTP Query strings
參數:要擷取的欄位 store_id
本頁內容對您是否有任何幫助?請提供意見:

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

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