標籤:

Tableau Calc | 函數從時間說起

這篇來聊聊計算欄位,將會按照如下結構開展

  1. 計算欄位
  2. 函數分類
  3. 時間函數介紹

  4. Why日期欄位很重要

  5. 遇到錯誤的日期咋辦

  6. dateparse函數介紹

開始吧!

你說 tableau的核心是什麼?

有人說,好看

有人說,不用編程

我覺得,計算欄位算一個重要功能。

計算欄位

計算欄位的官方解釋是:

如果基礎數據未包括回答問題所需的所有欄位,您可以在 Tableau 中創建新欄位,然後將其保存為數據源的一部分

組成計算欄位的基本單位是函數

對了 ,Excel也有個功能叫函數,功能很強大 ↓

但是tableau脫胎於Excel的函數功能,但又遠超於它的效果。

有個栗子就是

如果你有了數據A和數據B,不用在原數據中使用求和去計算A+B的結果

「如何應對Excel的格式」文章中說過(我是時光隧道)

因為在tableau中可以使用求和的計算欄位很容易的實現。

對於Excel的函數有詳細的分類:

同樣,tableau也有它自己的分類:

v10 版本的tableau有8種類別的函數,分別是:

  1. 數字字元串

  2. 日期

  3. 類型轉換

  4. 邏輯

  5. 聚合

  6. 用戶

  7. 表計算

路要一步步走,今天從日期這個最常用的函數開始

日期函數有14個函數,按照我個人理解可以分類如下:

  1. 製作日期:makedate 輸出 組合了日期和時間的

  2. 查看時間:now 今天帶時間,today 今天,不帶時間

  3. 日期的運算:dateadd 疊加,datediff 比較不同,max,min

  4. 日期輸出日期:datetrunc 截斷

  5. 字元串轉換為日期:dateparse 字元換轉換時間

  6. 日期輸出字元串:datename 輸出字元串

  7. 日期輸出整數:datepart 輸出整數,month 輸出整數,day 輸出整數,year 輸出整數

dateparse()

今天來說說 dateparse()

我們使用日期函數,往往是因為原始數據的日期格式問題,需要處理。

日常工作,有時候會遇到如下這些請況「」

201301

2015-05-16_17-26-30

20040503T093008+08

客觀情況是,不是所有計算機都能看懂這種格式。

Tableau識別不了,是因為上邊這些例子的日期數據不屬於國際標準,對於這種私有格式很難兼容。

國際標準

那麼什麼是國際標準?生活中應該都見過這些吧

d.M.yy

d/M/yy

ddMMMyyyy:H:m:s:SSSSSS

h:m

yy:MM

yyMd

yy-MM-dd h:m:s

yyyyMdHm

比如 Excel:

沒錯,我相信你在玩Excel的時候,在設置單元格格式時肯定見過這個

那麼這些類似通配符的MMM、yyyy等等,就是時間格式,它有國際標準,有興趣可以看看國際標準(傳送門:Unicode LDML: Dates)

這個東西是怎麼來的?看下面

日期有這幾個層級

對應的英文是:

年 year

月 month

日 day

時 hour

分 minute

秒 second

縮寫是:

年 y

月 m ←

日 d

時 h

分 m ←

秒 s

發現問題了吧,月(m)和秒(m)有重複性衝突

解決辦法是,使用大小寫進行區分:

年 y

月 M

日 d

時 h

分 m

秒 s

這個問題ok了。

下一個問題是,小時的層級上,有24小時和12小時的區別,怎麼辦?

還是用大小寫區分,如下這樣就ok了:

年 y

月 M

日 d

24時 H

12時 h

分 m

秒 s

所以,上表就是構成日期格式的基礎,記住常用的就好了。

為什麼時間格式這麼重要

使用 Tableau 創建的許多可視化項將涉及使用日期和時間欄位。利用 Tableau,您可以確定一段時間內數據的趨勢,或者預測您的數據在將來會進入何處。

對於關係數據源,日期和時間會自動放置在「數據」窗格的「維度」區域中,並由日期或日期時間圖標標識。例如,下面顯示了一個 Excel 數據源的「Order Date」和「Ship Date」維度。

將關係日期放在功能區中時,將自動修改欄位名稱以反映默認日期級別。Tableau 將默認日期級別定義為存在多個實例的級別。例如,如果日期欄位包含多年,則默認級別為年。但是,如果日期欄位只包含一年的數據,但包含多個月,則默認級別為月。

如果不想讓 Tableau 自動選擇日期級別,而是想使日期維度成為連續欄位,則可以在「數據」窗格中右鍵單擊(在 Mac 上按住 Control 單擊)該欄位,然後選擇「轉換為連續」。然後該維度在「數據」窗格中變為綠色;現在當您在視圖中使用該維度時,它將是連續維度。通過在「數據」窗格中該欄位的上下文菜單中選擇「轉換為離散」,可輕鬆地恢復為離散欄位。也可以在視圖中的某個欄位位於某個功能區中時將其轉換為連續欄位,方法是在其上下文菜單中選擇「連續」,右鍵單擊(在 Mac 上按住 Control 單擊)欄位時將可看到該菜單。功能區中的該欄位就會變為綠色,但「數據」窗格中的該欄位仍為離散欄位。

如何處理不合規的日期欄位

標準清楚了,重要性也知道了,該怎麼用日期函數處理呢?

繞了一圈,終於回到了我們的函數 dateparse

Tableau 8.1版本開始有了dateparse,我們不用再花更多的時間去寫很長的計算公式,去重新格式化日期欄位。

如下,這種格式是我們經常見到的日期格式,年份和月份的組合

作為對比,我們先看看常規的方法:

常規方法

我們需要通過left、right函數找到相關的字元串

然後在通過製作日期函數生成日期欄位

使用left函數取出左邊4為,作為Year

使用right函數取出右邊2位,作為Month

使用datetrunk將Year和Month組成日期

dateparse方法

使用通配符設定與原數據匹配模板,一次性生成日期欄位

現在我們只需要寫一個簡單的格式,就可以匹配這個日期

通過前面的講解,y代表年份,M代表月份

創建交叉表,檢查數據:

完成!

隨後會增加很多日期相關的計算和應用。

更新記錄:

2016-12-12 發布

<未完待續>

Peace!


推薦閱讀:

Tableau | Dashboard Design 1
Tableau | IS AND IS NOT
Tableau參數 | Top 5 & Bottom 5
Tableau 設計 | 創建分組條形圖
如何在Tableau中做出如Google那樣的視圖?

TAG:TABLEAU |