Tableau版本 : 2020.3

這次的目的是要將Tableau無法自動判讀成日期的欄位

手動轉成日期格式

官方的參考文件

https://help.tableau.com/current/pro/desktop/zh-tw/data_dateparse.htm

字串格式 > 日期格式

以下是目前有的資料 ( 有日期與時間的資料 )

1.png

採用官方文件中最後一個方法 使用 DATE 函數建立計算

首先"建立導出欄位"

2.png

輸入公式

3.png

這邊可以先看一下官方文件的說明

官方文件

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

原始日期

03Jan2017

05Jan2017

07Mar2017 19

Mar2017 30

Apr2017

在此情況下,您可以建立一個稱為 [新日期] 的計算欄位,該欄位使用 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

官方文件的案例是轉換純日期函數

這邊我再加上了日期+時間

DATETIME(

LEFT([day],4) + "/" + MID([day],5,2) + "/" + RIGHT([day],2)     #處理日期的部分

+' '+LEFT([time],2)+':'+MID([time],3,2)+':'+RIGHT([time],2)     #處理時間

)

這裡解析一下

可以分成兩部分看

一、DATETIME() 括號裡面主要是字串的重組

將日期時間的資料取出來,重組成Tableau讀得懂、能夠自動轉換成時間格式的字串表示方式

二、最後再用DATETIME()將字串轉成時間格式

以下是說明

LEFT / MID / RIGHT 函數

  • LEFT ( [ 欄位 ] , N ) : 從所選取的欄位字串最邊第一個字取到第N個字
  • RIGHT ( [ 欄位 ] , N ) : 從所選取的欄位字串最邊第一個字取到第N個字
  • MID ( [ 欄位 ] , M , N ) : 從所選取的欄位字串左邊數過來第M個字開始取N個字

以本次資料的第一筆資料為例

4.png

LEFT([day],4) : 從'20210114'字串最左邊起取4個字,也就是'2021'

MID([day],5,2 : 從'20210114'字串第5個字('0')起取2個字,也就是'01'

RIGHT([day],2 : 從'20210114'字串最右邊起取2個字,也就是'14'

中間再用'/'串起來,所以最終的結果就是2021/01/14

時間的部分也是相同的道理,從time欄位取出資料再重組

以time的第一筆資料為例,取完資料再用":"重組後,結果就會是 01:05:36

以上都只是還在字串的操作

 

因為我們將原本的資料轉換成Tableau讀得懂的時間形式

最後套上DATETIME()函數就能把字串轉成時間格式了

為了好理解,我將字串的結果放進DATETIME()後的結果一併列出來

5.png

最後一個欄位就達成這次的目標

P.S 還有一個要注意的點是

日期和時間的中間要用空格('')隔開,不然會無法轉成日期格式

創作者介紹
創作者 柴柴愛寫字 的頭像

柴柴愛寫字

柴 發表在 痞客邦 留言(0) 人氣( 847 )