將欄位轉換為日期欄位
每種資料庫存儲日期欄位的方式都略有不同。Tableau 會盡力對日期欄位進行解讀,但有時匯入 Tableau 的欄位將會是文字字串或數位欄位。如果發生這種情況,我們可以透過幾個步驟來解決問題。
驗證日期欄位
日期欄位可能在「資料來源」頁面中
| 或者,在「資料」窗格中顯示為字串
|
當日期被解讀為字串時,您在使用日期欄位時所能享受到的功能和便捷性(例如下鑽、使用日期計算以及在連續和離散度量之間切換)將蕩然無存。
如果日期解讀不正確,請按循序執行以下步驟:
變更欄位的資料類型
解決日期欄位解讀問題的第一步是確保資料類型設定為 [日期] 或 [日期和時間] 。
在「資料來源」或「資料」窗格中,按一下資料類型圖示,然後將資料類型變更為「日期」或「日期和時間」
檢查檢視或 [資料來源] 窗格中的資料。如果看到許多 Null 值,請將資料類型恢復為 [字串] ,並繼續使用 DATEPARSE 函數建立計算來糾正問題。
使用 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 計算
檢查日期欄位的當前格式。記下月、年、小時和天在欄位中的顯示位置。DATEPARSE 函數需要此資訊。
A. 當月日期
B. 月份
C. 年份
D. 小時、分鐘、秒、毫秒、期間
在 [維度] 窗格中以右鍵按一下日期欄位,並選取 [建立] > [計算欄位] 。
在對話方塊中,編寫 DATEPARSE 函數。DATEPARSE 函數包含兩個部分:格式和字串。字串是您希望轉換的欄位,其必須為字串資料型別。
A. 格式
B. 字串
格式是 Tableau 用於將字串解讀為日期的指引。日期或時間字串的每個部分都有一個相符符號,如下表中所示。格式必須完全複製日期的顯示方式。舉例來說,如果在字串包含 2 位元數年份代碼( [97] )時使用單一年份代碼( [Y] ),則計算可能返回 null 值。
附註:格式要完全複製顯示的字串的例外情況是,日期的長格式部分( [September] )可使用四個符號設定格式( [September" = "MMMM] )。
格式必須包括所有空格、連字號和其他非字母數位記號才能正確解讀字串。
日期欄位符號
日期部分 符號 範例字串 範例格式 年 y 97, 2017 yy, y 或 yyyy 「年中的週」中的年份 Y 1997 Y 時區 Z, z -0800, PST-08:00, PST Z, ZZZZ, zzz 月 M 9、09、Sep、September M、MM、MMM、MMMM 年中的週 (1-52) w 8, 27 w、ww 年中的季度 Q Q2,第二季度 QQQ, QQQQ 週中的天 E 週一,星期一 EEE, EEEE 月中的天 d 1、15 d、dd 年中的天 (1-365) D 23、143 D, DD, DDD 期間(上午/下午標記) a AM、am、PM aa、aaaa 小時 (1-12),小時 (0-23) h、H 1, 10, 16 h, hh, HH 分鐘 m 8, 59 m、mm 分中的秒 s 5, 05 s, ss 小數秒 S 2, 23, 235, 2350 S, SS, SSS, SSSS 天中的毫秒 A 34532 AAAAA 有關日期符號的更完整清單,請參閱 [Unicode 國際化元件] 頁面的日期和時間格式設定概觀(連結在新視窗開啟)。
附註: 並非所有資料庫和檔案類型都支援某些日期格式。
依據 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 知識庫)