分割資料欄

對許多方案來說,第一步都是將單個資料欄分割為多個資料欄。本節說明可用於將單個資料欄分割為一或多個資料欄的各種方法,這些方法會根據字元/模式比對或資料欄中值的位置來進行分割。

根據分隔符號進行分割

資料最初匯入 Cloud Dataprep by TRIFACTA® INC. 時,每個資料列中的資料會以單一分隔符號分割。在以下範例中,您可以看到 Tab 鍵就是一個明確的分隔符號。

<IMSI^MSIDN^IMEI>	DATETTIME/TIMEZONE OFFSET/DURATION	MSWCNT:BASCNT^BASTRA	CALL_TYPE/CORRESP_IDN/DISCONNECT REASON
<310170097665881^13011330554^011808005351311>	2014-12-12T00:06:13/-5/1.55	MSC001:BSC002^BTS783	MOT/00000000000:11
<310170097665881^13011330554^011808005351311>	2014-12-12T02:27:26/-5/0.00	MSC001:BSC002^BTS783	SMS/00000000000:
<310-170-097665881^13011330554^011808005351311>	2014-12-12T03:24:20/-5/0	MSC001:BSC001^BTS783	SMS/00000000000:

但是,當資料匯入後,資料網格中的資料會以下列結構呈現:

column2column3column4column5

<IMSI^MSIDN^IMEI>

DATETTIME/TIMEZONE OFFSET/DURATION

MSWCNT:BASCNT^BASTRA

CALL_TYPE/CORRESP_IDN:DISCONNECT REASON

<310170097665881^13011330554^011808005351311>

2014-12-12T00:06:13/-5/1.55

MSC001:BSC002^BTS783

MOT/00000000000:11

<310170097665881^13011330554^011808005351311>

2014-12-12T02:27:26/-5/0.00

MSC001:BSC002^BTS783

SMS/00000000000:

<310-170-097665881^13011330554^011808005351311>

2014-12-12T03:24:20/-5/0

MSC001:BSC001^BTS783

SMS/00000000000:

附註:

  • 初次匯入資料時,全部資料都會包含在一個名為 column1 的資料欄中。應用程式會自動根據 Tab 字元來分割資料欄,並將原有的 column1 移除。

    提示:根據預設,此種自動分割不會出現在您的方案中。對於大多數格式的資料,一系列的初始步驟會自動套用至資料集。您可以檢視並修改這些步驟,但前提是您必須在匯入期間取消選取 [Detect Structure]。請參閱初始剖析步驟一文。

  • 由於應用程式無法為每個資料欄決定明確的標頭,因此會使用通用的名稱做為標頭。所以,在為資料套用標頭前,您必須先將每個資料欄中的資料進行分割。
  • 每個資料欄中的分隔符號各不相同。
    • column2 使用插入記號做為分隔符號,column3 使用正斜線做為分隔符號。
    • column4 和 column5 使用多種不同的分隔符號。
  • 資料很稀疏。請注意,在 column5 中,第二列末尾包含值 11,而其他兩個資料列則不含這個值。

根據單個分隔符號進行分割

對於 column2,您可以將該資料欄根據插入記號分割成單獨的資料欄。

轉換名稱 Split by delimiter
參數:資料欄 column2
參數:選項 By delimiter
參數:分隔符號 '^'
參數:要建立的資料欄數 2

附註:要建立的資料欄數反映了要產生的新資料欄總數。

結果:

以下為 column2 中的資料如何轉換:

column1column6column7

<IMSI

MSIDN

IMEI>

<310170097665881

13011330554

011808005351311>

<310170097665881

13011330554

011808005351311>

<310-170-097665881

13011330554

011808005351311>
  • 由於 column1 之前未做為名稱使用,因此重新顯示在此處。column6 和 column7 是下一個可用的通用資料欄名稱。
  • column1 和 column7 需要進行一些清理工作,以移除這些資料欄值的開頭和結尾符號。如有需要,您也可以在對原始的 column2 進行分割前,先完成這個清理工作。

對於 column3,假設您想要將 DATETIME 和 TIMEZONE OFFSET 值留在相同的資料欄中,請繼續使用正斜線來區分這兩個值。DURATION 值會被分割成單獨的資料欄:

轉換名稱 Split by delimiter
參數:資料欄 column2
參數:選項 By delimiter
參數:分隔符號 '/'
參數:之後開始分割 `/(-{digit}|{digit})`
  • 上面使用的是 Cloud Dataprep 模式,為比對模式的簡化版規則運算式。
    • 在本例中,運算式如下所示:

      `/(-{digit}|{digit})`
    • 就「之後開始分割」的值而言,上方的運算式表示應用程式只有在資料欄值中偵測到上述模式時,才能開始針對分隔符號 (正斜線) 尋找相符項目。
    • 在本例中,此模式描述的是在正斜線之後的值,此值可能是負數或正數,並且與資料欄中的 TIMEZONE OFFSET 值的模式相符。
    • 要進一步瞭解如何使用 Cloud Dataprep 模式,請參閱文字比對一文。
  • 由於您要將該資料欄分割成兩個資料欄,因此無需指定要建立的新資料欄數目。預設值為 1

根據多個分隔符號分割資料欄

分割 column3 之後,資料會類似如下:

column3

DATETTIME/TIMEZONE OFFSET

2014-12-12T00:06:13/-5

2014-12-12T02:27:26/-5

2014-12-12T03:24:20/-5

假設您想要將此日期時間資料依照年、月、日、小時、分鐘、秒和偏差分割成不同的資料欄。您可以採用以下做法:

轉換名稱 Split by delimiter
參數:資料欄 column2
參數:選項 By multiple delimiters
參數:分隔符號 1 '-'
參數:分隔符號 2 '-'
參數:分隔符號 3 'T'
參數:分隔符號 4 ':'
參數:分隔符號 5 ':'
參數:分隔符號 6 '/'
  • 在單獨的資料列中輸入每個分隔符號。
  • 分隔符號會依照所列的順序進行處理。

在分隔符號之間分割資料欄

假設對於 column4,您想要在分割資料欄的同時將中間部分移除。您可以使用前述的轉換方式,然後再刪除中間的資料欄。您也可以使用下方的轉換方式,將用於區分欄位間分隔符的起始和結尾分隔符號標記出來,以有效地移除中間資料欄:

轉換名稱 Split by delimiter
參數:資料欄 column4
參數:選項 By two delimiters
參數:起始分隔符號 ':'
參數:包含為分割的一部分 Selected
參數:結尾分隔符號 '^'
參數:包含為分割的一部分 Selected
  • 資料欄之間的分隔符是正斜線之間的所有內容。此內容會從資料集中移除。
  • 兩個選取的選項將正斜線包含為分隔符的一部分,並將它們從資料集中移除。

根據位置進行分隔

您還可以根據資料欄值中的數字位置來進行資料欄分割。這些分割選項對於長度一致的高規律性資料非常有用。

假設您有下列用三個維度 (x、y 和 z) 表示的座標資訊。請注意,這些資料非常有規律性,小於 1000 的值都有前導零。

column1
POSXPOSYPOSZ
000100040001
012405210555
100220046554
202056789011
379274329832

根據位置分割資料欄

以上的資料可以根據資料欄值中的位置進行分割:

轉換名稱 Split by character position
參數:資料欄 column1
參數:選項 By positions
參數:位置 1 4
參數:位置 2 8

結果:

column2column3column4
POSXPOSYPOSZ
000100040001
012405210555
100220046554
202056789011
379274329832

在位置之間分割資料欄

假設您想要在分割以上來源資料的同時將中間資料欄移除:

轉換名稱 Split by character position
參數:資料欄 column1
參數:選項 Between two positions
參數:位置 1 4
參數:位置 2 8

結果:

column2column3
POSXPOSZ
00010001
01240555
10026554
20209011
37929832

按固定間隔分割資料欄

由於分割可以固定的間隔執行,上述轉換方式還可以進一步簡化:

轉換名稱 Split by character position
參數:資料欄 column1
參數:選項 At regular interval
參數:間隔 4
參數:要分割的次數 2

結果:

結果會與第一個範例相同。

編碼問題

如果您嘗試根據資料集中出現的非 ASCII 字元分割資料欄,轉換可能會失敗。

在這類情況下,您應該變更套用於資料集的編碼。

步驟:

  1. 在「Import Data」頁面中,選取要匯入的資料集。
  2. 當資料集資訊卡出現在右資料欄中時,點選 [Edit Settings] 連結。
  3. 從下拉式選單中選取更適當的編碼,將其套用至檔案。
  4. 匯入資料和疊加。
  5. 嘗試對資料集進行分割轉換。

分割資料列

匯入資料集時,應用程式會嘗試根據任何可用的行尾分隔符號,將資料分割成單獨的資料列。此種轉換會自動執行,不包括在您的初始步驟中。

如果資料的格式不一致,資料列可能無法正確分割。若是如此,您可以停用資料列的自動分割功能。

步驟:

  1. 在「Import Data」頁面中,選取要匯入的資料集。
  2. 當資料集資訊卡出現在右資料欄中時,點選 [Edit Settings] 連結。
  3. 取消選取 [Detect Structure] 核取方塊。
  4. 匯入資料和疊加。

用於偵測結構的步驟會列為方案的前幾個步驟,您可視需要修改。詳情請參閱初始剖析步驟一文。

詳情請參閱「Import Data Page」(匯入資料) 頁面

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

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

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