Extractkv 轉換

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

從來源資料欄擷取鍵/值組合並寫入新的資料欄。

即使資料的格式可以設為其他的資料類型,但來源資料欄必須是「字串」類型。產生的資料欄則屬於「物件」類型。

您的來源資料欄 (MyKeyValues) 會依下列方式設定格式:

key1=value1,key2=value2

基本用法

下列轉換指令會擷取鍵/值組合。key 參數包含與您要擷取的所有鍵相符的單一模式:

extractkv col: MyKeyValues key:`{alpha}+{digit}` valueafter: '=' delimiter: ','

輸出:包含在產生的資料欄中的資料會如同下方所示:

{"key1":"value1","key2":"value2"}

如果來源資料含有未在轉換指令中指定的其他鍵,那些鍵/值組合將不會出現在產生的資料欄內。

參數

extractkv col:column_ref delimiter:string_literal_pattern key:string_literal_pattern valueafter:string_literal_pattern [as:'new_column_name']

參數是否必要?資料類型說明
extractkv轉換轉換名稱
col字串來源資料欄名稱
delimiter字串字串文字或模式,用於標示鍵/值組合之間的分隔符
key字串標示待比對鍵的模式
valueafter字串字串文字或模式,其後會接鍵的值
as字串新產生的資料欄名稱

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

col

找出要套用轉換指令的資料欄 (只能指定一個資料欄)。

使用須知:

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

delimiter

指定用來定義鍵/值組合結尾的字元或模式。您可以使用字串常值、規則運算式或 Cloud Dataprep 模式來指定這個值。

在下列指令中:

{ key1=value1,key2=value2 }

分隔符號是逗號 (',')。最後的鍵/值組合不需要使用分隔符號。

提示:您可以使用 /\uHHHH/ 格式的規則運算式插入這項參數值的 Unicode 對應字元。舉例來說,/\u0013/ 代表 Unicode 字元 0013 (回車字元)。詳情請參閱系統支援的特殊規則運算式字元

使用須知:

是否必要?資料類型

字串 (常值、規則運算式或 Cloud Dataprep 模式)

指定透過 extractkv 轉換擷取來源資料欄的鍵所使用的模式。在下列資料中:

{ key1=value1,key2=value2 }

轉換指令中的鍵以下列參數和值表示:

key:`{alpha}+{digit}`

這個模式會比對所有以字母開頭並以數字結尾的鍵。如果來源資料含有其他鍵,這些鍵不會出現在擷取出的資料中。

使用須知:

是否必要?資料類型
代表個別待擷取鍵的單一模式。

valueafter

這個參數指定鍵/值組合的指定值前面的字元或模式。這個值可以是字串文字、規則運算式或 Cloud Dataprep 模式。

在下例中:

{ key1=value1,key2=value2 }

valueafter 字串是等號 ('=')。

使用須知:

是否必要?資料類型

字串 (常值、規則運算式或 Cloud Dataprep 模式)

as

系統即將產生的新資料欄名稱。如果未指定 as 參數,系統會使用預設名稱。

使用須知:

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

範例

範例 - 從汽車資料中擷取鍵值,並將巢狀欄位拆為個別的資料欄

本範例示範如何使用下列轉換,將物件中的巢狀資料拆分成個別的資料欄:

  • extractkv:從來源字串中移除鍵/值組合,請參閱 Extract 轉換
  • unnest:在獨立的資料列和資料欄中拆分巢狀資料,請參閱 Unnest 轉換

來源:

您有以下的二手車相關資訊。VIN 資料欄含有車輛 ID,而 Properties 資料欄則包含描述每部車輛特性的鍵/值組合。您想要將此資料拆分成不同的資料欄。

VINProperties
XX3 JT4522year=2004,make=Subaru,model=Impreza,color=green,mileage=125422,cost=3199
HT4 UJ9122year=2006,make=VW,model=Passat,color=silver,mileage=102941,cost=4599
KC2 WZ9231year=2009,make=GMC,model=Yukon,color=black,mileage=68213,cost=12899
LL8 UH4921year=2011,make=BMW,model=328i,color=brown,mileage=57212,cost=16999

轉換:

請新增下列轉換指令,以識別資料欄中所有開頭為字母字元的鍵值。

  • valueafter 字串標示對應值在鍵後的開始位置。
  • delimiter 字串表示每個鍵/值組合的結尾。

extractkv col:Properties key:`{alpha}+` valueafter:`=` delimiter:`,`

現在已建立上述值的物件,您可以使用 unnest 轉換拆分這個對應的資料。以下步驟指定了每個鍵,可以在結果中讓系統使用鍵的名稱做為各個資料欄的標題:

unnest col:extractkv_Properties keys:'year','make','model','color','mileage','cost'

結果:

刪除不必要的 Properties 資料欄後,您應該會看到下面這樣的資料集:

VINyearmakemodelcolormileagecost
XX3 JT45222004SubaruImprezagreen1254223199
HT4 UJ91222006VWPassatsilver1029414599
KC2 WZ92312009GMCYukonblack6821312899
LL8 UH49212011BMW328ibrown5721216999

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

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

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