將欄位轉換為日期欄位

每種資料庫存儲日期欄位的方式都略有不同。Tableau 會盡力對日期欄位進行解讀,但有時匯入 Tableau 的欄位將會是文字字串或數位欄位。如果發生這種情況,我們可以透過幾個步驟來解決問題。

驗證日期欄位

日期欄位可能在「資料來源」頁面中
顯示為字串

 

或者,在「資料」窗格中顯示為字串

 

當日期被解讀為字串時,您在使用日期欄位時所能享受到的功能和便捷性(例如下鑽、使用日期計算以及在連續和離散度量之間切換)將蕩然無存。

如果日期解讀不正確,請按循序執行以下步驟:

  1. 變更欄位的資料類型

  2. 使用 DATEPARSE 函數建立計算

  3. 使用 DATE 函數建立計算

變更欄位的資料類型

解決日期欄位解讀問題的第一步是確保資料類型設定為 [日期] [日期和時間]

  1. 「資料來源」「資料」窗格中,按一下資料類型圖示,然後將資料類型變更為「日期」「日期和時間」

  2. 檢查檢視或 [資料來源] 窗格中的資料。如果看到許多 Null 值,請將資料類型恢復為 [字串] ,並繼續使用 DATEPARSE 函數建立計算來糾正問題。

    顯示在「資料來源」畫面中的 Null 值。

使用 DATEPARSE 函數建立計算

日期採用一系列近乎無限的格式存儲。某些日期欄位將年放在月之前,其他一些日期欄位用句點分隔日期的各個部分,還有一些則使用各種格式的組合。當 Tableau 無法解讀日期欄位時,原因可能是無法轉換特定格式。

DATEPARSE 函數使您能夠清晰地定義欄位的哪些部分對應於日期的哪些部分。本質上,您是在建立一個 Tableau 可用於將字串轉換為日期欄位的對應。這種對應稱為格式

附註:此函數可透過以下連接器獲得:非舊版 Excel 和文字檔連線、Amazon EMR Hadoop Hive、Cloudera Hadoop、Google 試算表、Hortonworks Hadoop Hive、MapR Hadoop Hive、MySQL、Oracle、PostgreSQL 以及 Tableau 資料擷取。有些格式可能並非適用於所有連線。

附註:Hive 變體不支援 DATEPARSE。僅支援 Denodo、Drill 和 Snowflake。

建立 DATEPARSE 計算

  1. 檢查日期欄位的當前格式。記下月、年、小時和天在欄位中的顯示位置。DATEPARSE 函數需要此資訊。

    A. 當月日期

    B. 月份

    C. 年份

    D. 小時、分鐘、秒、毫秒、期間

  2. 在 [維度] 窗格中以右鍵按一下日期欄位,並選取 [建立] > [計算欄位]

  3. 在對話方塊中,編寫 DATEPARSE 函數。DATEPARSE 函數包含兩個部分:格式字串字串是您希望轉換的欄位,其必須為字串資料型別。

    A. 格式

    B. 字串

    格式是 Tableau 用於將字串解讀為日期的指引。日期或時間字串的每個部分都有一個相符符號,如下表中所示。格式必須完全複製日期的顯示方式。舉例來說,如果在字串包含 2 位元數年份代碼( [97] )時使用單一年份代碼( [Y] ),則計算可能返回 null 值。

    附註:格式要完全複製顯示的字串的例外情況是,日期的長格式部分( [September] )可使用四個符號設定格式( [September" = "MMMM] )。

    格式必須包括所有空格、連字號和其他非字母數位記號才能正確解讀字串。

    日期欄位符號

    日期部分符號範例字串範例格式
    y97, 2017yy, y 或 yyyy
    「年中的週」中的年份Y1997Y
    時區Z, z-0800, PST-08:00, PSTZ, ZZZZ, zzz
    M9、09、Sep、SeptemberM、MM、MMM、MMMM
    年中的週 (1-52)w8, 27w、ww
    年中的季度QQ2,第二季度QQQ, QQQQ
    週中的天E週一,星期一EEE, EEEE
    月中的天d1、15d、dd
    年中的天 (1-365)D23、143D, DD, DDD
    期間(上午/下午標記)aAM、am、PMaa、aaaa
    小時 (1-12),小時 (0-23)h、H1, 10, 16h, hh, HH
    分鐘m8, 59m、mm
    分中的秒s5, 05s, ss
    小數秒S2, 23, 235, 2350S, SS, SSS, SSSS
    天中的毫秒A34532AAAAA

    有關日期符號的更完整清單,請參閱 [Unicode 國際化元件] 頁面的日期和時間格式設定概觀(連結在新視窗開啟)

    附註: 並非所有資料庫和檔案類型都支援某些日期格式。

  4. 依據 Tableau 中顯示的字串檢查您的格式。如果符號和格式設定正確無誤,請選取 [確定] 建立新計算欄位。計算欄位將充當檢視中的日期欄位。

Hyper 擷取

對於 .hyper 擷取資料來源,符號是由 Unicode 協會定義的。有關詳情,請轉到 擷取資料來源 DATEPARSE 函數的格式語法,檢視可與 .hyper 擷取中的 DATEPARSE 函數結合使用的欄位類型和符號子集。

地區設定注意事項

DATEPARSE 函數依賴於電腦設定指定的地區設定來進行解釋,然後顯示要轉換的字串。更具體地說,地區設定將影響特定格式是否可識別。這意味著如果地區設定不支援某種格式,那麼您可能會看到 Null 值或者不會返回值。例如,假設資料中有以下字串:

12Sep2016:9:8:8.6546

根據地區設定,DATEPARSE 函數為此字串返回的值也有所不同。在英語地區設定中,您將獲取一個特定值,但對於日文地區設定,您將不會獲取任何值。在這種情況下,不返回值的原因是日文地區設定無法識別 [Sep] 。

日期和時間值

英語地區設定日文地區設定
#9/12/2016 9:08:09 AM#-

如同所有日期一樣,在您使用了 DATEPARSE 函數將字串轉換為日期時間類型後,預設情況下 Tableau 將以您的地區設定的預設格式顯示日期時間值。如果地區設定發生變化,則 DATEPARSE 函數的結果可能會以不同的格式顯示新的日期時間值。

附註: 由於 Jet 限制的緣故,在根據 Access 資料來源建立的擷取中,DATEPARSE 函數無法正確識別您的電腦設定指定的地區設定資訊。若要解決此問題,請考慮將 Access 資料匯出到 Excel 中。

使用 DATE 函數建立計算

如果 DATEPARSE 函數不適用於您正在處理的資料,或者您要轉換的欄位是數位資料類型,則可以改用 DATE 函數。

DATE 函數會將數位、字串或日期運算式轉換為日期類型。建立一個使用 DATE 函數的計算時,Tableau 會在 Tableau 資料來源中建立一個新欄位,該欄位允許您與作為日期的日期資料進行交互。若要使用 DATE 函數利用數位、字串或日期運算式成功組建日期值,Tableau 需要能夠將字串的元件解釋為日期部分。識別日期的元件後,Tableau 會使用電腦地區設定確定日期的預設格式。

例如,假設您正在使用的表包含一個稱為 [原始日期] 的日期列。  [原始日期] 列是字串類型。

原始日期
03Jan2017
05Jan2017
07Mar2017
19Mar2017
30Apr2017

在此情況下,您可以建立一個稱為 [新日期] 的計算欄位,該欄位使用 DATE 函數中的運算式將 [原始日期] 欄位中的字串值轉換為日期值。

對於此範例,日期運算式由用於確定日元件的 LEFT 函數、用於確定月元件的 MID 函數以及用於確定年元件的 RIGHT 函數組成。

DATE (LEFT([Original Date], 2) + "/" + MID([Original Date],3,3) + "/" + RIGHT([Original Date],4))

[新日期] 計算會組建以下列:

新日期

2017/1/3
2017/1/5
2017/3/7
2017/3/19
2017/4/30

在此範例中,新日期值基於英語地區設定和預設格式。

另請參閱

自訂日期格式(連結在新視窗開啟)

使用 ISO-8601 週和年份設定日期格式(連結在新視窗開啟)

日期函式(連結在新視窗開啟)

所有函數(按類別):日期(連結在新視窗開啟)

STR() 函數忽略預設日期和數位格式設定(連結在新視窗開啟)(Tableau 知識庫)

感謝您的意見反應!已成功提交您的意見回饋。謝謝!