設定日期格式

TRIFACTA® INC. 可使用各種格式,將日期時間值匯入至 Cloud Dataprep。以下以同一日期為範例,顯示數種可接受的格式:

myDate
Mar-14-2018
03/14/2018
2018-Mar-03
3/14/18
03/14/2018 00:00:00
March 14, 2018

本節會介紹用於將日期值標準化以及設定其格式的工具和方法。

建議方法

為日期值資料欄設定格式時,您可以嘗試按下列順序將值標準化。

方法 1:在「Column Details」(資料欄詳細資料) 面板中選取模式

在「Column Details」(資料欄詳細資料) 面板中,您可以查看各種符合您日期資料欄值的模式,並選取想要套用的項目,以便將值標準化。

步驟:

  1. 在日期資料欄的資料欄選單中,選取 [Column Details] (資料欄詳細資料)。
  2. 在「Column Details」(資料欄詳細資料) 面板中,點選 [Patterns] (模式) 分頁標籤。
  3. 在「Patterns」(模式) 分頁中,您可以查看各種模式,其中描述了資料欄裡出現的所有值。請選取需要修正的項目。
  4. 在右側面板中,選取「Convert」(轉換) 資訊卡。

    提示:如果系統沒有顯示「Convert」(轉換) 資訊卡,您可以嘗試產生新的隨機樣本;範例模式在樣本中會分佈得較為平均。

    圖:在「Patterns」(模式) 分頁中選取「Convert」(轉換) 資訊卡

  5. 按一下 [Add] (新增)。
  6. 「Patterns」(模式) 分頁中顯示的模式數量會減少。您可以繼續選取模式,以便為值進行標準化。
  7. 重覆執行上述步驟,直到面板中只剩下一個模式。如要進一步瞭解日期時間模式,請參閱使用模式執行標準化

方法 2:根據日期格式修改模式

在部分情形下,您可能無法單靠選取模式讓系統產生足夠的日期值標準化建議項目。第二種方法是在資料欄中輸入不相符的值。

提示:如果資料欄中所有值皆為有效的日期時間值,但各自採用不同的日期格式,就可以使用這項技巧;但如果有任何值不屬於任何日期格式的有效值,則您必須先使用選項 3 透過模式修正語法錯誤,詳情請參閱下方說明。

在這種情況下,請先將資料欄的資料類型設為「Datetime」(日期時間),再使用 DATEFORMAT 函式比對想要變更的值的格式。在先前表格的值旁邊,您會看到對應的日期格式符記:

myDateDATEFORMAT 值
Mar-14-2018MMM-dd-yyyy
03/14/2018MM/dd/yyyy
2018-Mar-03yyyy-MMM-dd
3/14/18M/d/yy
03/14/2018 00:00:00MM/dd/yyyy HH:mm:ss
March 14, 2018MMMM dd, yyyy

為了清楚示範,我們先假設您的 myDate 資料欄所含的值為 MM/dd/yyyyM/d/yy 格式,而您想要統一使用 MMMM dd, yyyy 的標準格式。

步驟:

  1. myDate 資料欄頂端的「Data Type」(資料類型) 選單中,選取 [Date/Time] (日期/時間)
  2. 在對話方塊中,選取您想要修正的日期格式:

    圖:日期/時間格式選取工具

    如要進一步瞭解支援的日期時間格式,請參閱日期時間資料類型

  3. 按一下 [Save] (儲存)
  4. 現在您必須將這個格式的值修改為您的目標格式:MMMM dd, yyyy。請按一下資料欄中的綠色長條,比對目前有效日期時間格式的值,然後點選 [Set suggestion] (設定建議),再按一下 [Modify] (修改)

  5. 轉換指令製作工具中有預先定義的轉換指令,可根據資料欄中的值是否為目前指定資料類型及格式的有效值,來對值進行設定。請將 NULL() 項目替換為 DATEFORMAT 函式,以便將這些值變更為適當的格式:

    轉換名稱 Edit with formula
    參數:資料欄 myDate
    參數:公式 ifvalid($col, ['Datetime','yy','yyyy'], dateformat($col, 'MMMM dd, yyyy'))
  6. 點選 [Add] (新增) 後,所有符合 MM/dd/yyyy 格式的值都會轉換為 MMMM dd, yyyy 格式。

  7. 重覆執行上述步驟:
    1. 將資料欄的日期時間格式設為 M/d/yyyy
    2. 選取資料欄資料品質長條圖中的綠色長條。
    3. 選取 [Set suggestion] (設定建議) 並加以修改。
    4. 針對轉換指令中的值,請插入下列函式:

      ifvalid($col, ['Datetime','M/d/yyyy'], dateformat(myDate, 'MMMM dd, yyyy'))
    5. 將轉換指令加入您的方案。
  8. 為其他不相符的格式重覆執行步驟 7。
  9. 您最後可能需要手動進行一些修復作業,請參閱下方說明。

方法 3:根據範例轉換

只要針對系統列出的來源值提供範例輸出值,即可重新設定日期格式。如要重新設定日期值資料欄格式,您可以提供個別值的輸出範例,接著 Cloud Dataprep by TRIFACTA INC. 便可依據模式,替相似格式的值執行格式轉換。詳情請參閱 TBE 總覽

方法 4:手動修復

步驟解說:

  1. 您為日期時間值選取特定格式後,系統就會將資料欄中並非採用此格式的資料列視為不相符。請按一下資料欄頂端的紅色長條。
  2. 在畫面底部的狀態列中,按一下 [Show only affected rows] (僅顯示受影響的資料列)。
  3. 現在系統只會顯示不符合您指定日期時間格式的資料列。
  4. 選取其中一個值。舉例來說,如果您有幾個值僅含四位數年份值 (YYYY),請選取其中一個項目,然後再選取「Replace」(取代) 資訊卡,並按一下 [Edit] (編輯)
  5. 您的轉換指令應該會如下所示:

    轉換名稱 Replace text or patterns
    參數:資料欄 UpdateTime
    參數:尋找 `{start}{digit}{4}{end}`
    參數:替換值 ''
  6. 您可以修改搜尋項目並替換模式,以擷取並重新寫回年份值:
    1. 在「尋找」值部分,用括號括住連續擷取四個數字的模式。為相符的模式加上括號,就代表將該子模式視為「擷取群組」,可在任何替換值中進行參照。
    2. 擷取群組應該會如下所示:

      ({digit}{4})
    3. 在「替換值」的部分,您必須根據為資料欄所選的格式 (MM/DD/YYYY) 插入月份和日的值,後面再加上擷取群組的參照。

    4. 您可以使用 $1$2$3 等參照在替換值中參照相符模式的擷取群組。這些符記分別指「尋找」值中的第一、第二和第三個擷取群組。
    5. 替換值應該會如下所示:

      01/01/$1
    6. 完成的轉換指令應該會如下所示:

      轉換名稱 Replace text or patterns
      參數:資料欄 UpdateTime
      參數:尋找 `{start}({digit}{4}){end}`
      參數:替換值 01/01/$1
  7. 按一下 [Add] (新增)。
  8. 您可以針對其餘不相符的值重覆執行上述步驟。

自訂日期時間格式

您可以使用 DATEFORMAT 函式建立自訂的日期時間格式,例如下列轉換指令可使 lastDate 函式的格式改成 yyyy:MM:dd

轉換名稱 Edit with formula
參數:資料欄 lastDate
參數:公式 DATEFORMAT(lastDate, 'yyyy:MM:dd')

如要進一步瞭解可以使用哪些代碼自訂日期時間格式,請參閱日期時間資料類型

將地區性差異正規化

下列日期值皆對應至相同的日期,但根據世界不同地區而採用不同的格式:

日期值地區
03/14/2018美國
14/03/2018歐盟
2014-03-14中國

在上方的範例中,美國及歐盟地區的值所使用的分隔符號是一樣的,因此系統會較難剖析這些值。

提示:如果您的資料集中包含世界不同地區的日期值,請另外尋找或建立一個單獨資料欄,用於辨認適用地區。

假設上述日期在您的資料集中呈現為以下值:

contractDateregion
03/14/2018USA
14/03/2018EU
2014-03-14CHN

在這種情況下,請嘗試使用下列一般化解決方式。您可以使用條件轉換指令,根據 region 資料欄中的值從 contractDate 資料欄中擷取天、月份和年份的值。

附註:這項解決方案會假設特定地區 (例如 USA) 中的所有日期值都採用相同的格式,因此您應該先執行這些格式設定動作。

步驟:

  1. 首先,您必須根據儲存格資料值的分隔符號分割資料欄。請注意,下列轉換指令是使用 Cloud Dataprep 模式 {delim} 來尋找儲存格資料值中的分隔符號;分隔符號不是連字號就是斜線。

    轉換名稱 Split by delimiter
    參數:資料欄 contractDate
    參數:選項 by Delimiter
    參數:分隔符號 `{delim}`
  2. 建立下列三個條件轉換指令,以根據「Region」(地區) 資料欄中的值擷取天、月份、年份的值。以下是用於取得年份值的轉換指令:

    轉換名稱 conditions
    參數:條件類型 Case on single column
    參數:要評估的資料欄 Region
    參數:案例 1 'EU'
    參數:值 1 contractDate3
    參數:案例 2 'USA'
    參數:值 2 contractDate3
    參數:案例 3 'CHN'
    參數:值 1 contractDate1
  3. 月份:

    轉換名稱 conditions
    參數:條件類型 Case on single column
    參數:要評估的資料欄 Region
    參數:案例 1 'EU'
    參數:值 1 contractDate2
    參數:案例 2 'USA'
    參數:值 2 contractDate1
    參數:案例 3 'CHN'
    參數:值 1 contractDate2
  4. 天:

    轉換名稱 conditions
    參數:條件類型 Case on single column
    參數:要評估的資料欄 Region
    參數:案例 1 'EU'
    參數:值 1 contractDate1
    參數:案例 2 'USA'
    參數:值 2 contractDate2
    參數:案例 3 'CHN'
    參數:值 1 contractDate3
  5. 接著就可以將這三個資料欄結合:

    轉換名稱 Merge columns
    參數:資料欄 day, month, year
    參數:分隔符 '/'
    參數:新資料欄名稱 newDate
  6. 現在已經成功產生新的日期資料欄,不過您可能需要將其重新設定為想要使用的格式。
  7. 刪除在此程序中建立的資料欄。
本頁內容對您是否有任何幫助?請提供意見:

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

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