举个栗子!Tableau 技巧(165):快速计算工作日
來(lái)自銀行用戶的需求:我們的業(yè)務(wù)數(shù)據(jù)源表多、量大(超過(guò) 10 萬(wàn)行),并且常常需要分析工作日數(shù)據(jù)。這種情況,Tableau 能快速實(shí)現(xiàn)嗎?
其實(shí),在實(shí)際分析場(chǎng)景中,對(duì)于工作日的數(shù)據(jù)呈現(xiàn),是普遍需求。尤其在中國(guó),各種節(jié)日小長(zhǎng)假的周末調(diào)休,給工作日數(shù)據(jù)分析帶來(lái)了更多的難度。
圖片來(lái)自網(wǎng)絡(luò)
那么,如何在 Tableau 中快速計(jì)算工作日呢?今天的栗子,將帶來(lái)三種不同場(chǎng)景的方法,一睹為快吧~
本期《舉個(gè)栗子》,我們要給大家分享的 Tableau 技巧是:快速計(jì)算工作日。
為方便學(xué)習(xí),栗子使用 Tableau 自帶的“示例-超市”數(shù)據(jù)源。掌握栗子方法后,數(shù)據(jù)粉可嘗試使用自己的數(shù)據(jù)源。
---------------------------------------------->>
具體步驟如下:
場(chǎng)景一
計(jì)算兩個(gè)日期間的工作日數(shù)
此方法僅適用于:兩個(gè)日期之間沒(méi)有法定節(jié)日的情況,如果兩個(gè)日期之間有法定節(jié)日并涉及調(diào)休,請(qǐng)了解場(chǎng)景三的方法。
1、創(chuàng)建計(jì)算字段
打開(kāi) Tableau Desktop,連接“示例-超市”數(shù)據(jù)源,新建工作表。
然后,創(chuàng)建計(jì)算字段:右鍵單擊“數(shù)據(jù)”窗格空白處,在下拉菜單中選擇:創(chuàng)建計(jì)算字段。
? 計(jì)算字段:訂單日期(轉(zhuǎn)工作日),鍵入函數(shù)
IF DATEPART(‘weekday’, [訂單日期]) = 1
THEN DATEADD(‘day’, 1, [訂單日期])
ELSEIF DATEPART(‘weekday’, [訂單日期]) = 7
THEN DATEADD(‘day’, 2, [訂單日期])
ELSE [訂單日期]
END
? 創(chuàng)建字段【發(fā)貨日期(轉(zhuǎn)工作日),鍵入函數(shù)
IF DATEPART(‘weekday’, [發(fā)貨日期]) = 1
THEN DATEADD(‘day’, -2, [發(fā)貨日期])
ELSEIF DATEPART(‘weekday’, [發(fā)貨日期]) = 7
THEN DATEADD(‘day’, -1, [發(fā)貨日期])
ELSE [發(fā)貨日期]
END
Tips:為何要特別對(duì)待等于 1 或 7 的情況呢?因?yàn)?1 或 7 在該計(jì)算中,對(duì)應(yīng)的是周日和周六(一周的第一天是周日),當(dāng)碰到這種情況,就需要往前推 2 天或往后推 1 天。
? 創(chuàng)建字段:從下單到發(fā)貨的工作日數(shù),鍵入函數(shù)
MIN(DATEDIFF(‘day’, [訂單日期(轉(zhuǎn)工作日)], [發(fā)貨日期(轉(zhuǎn)工作日)])+ 1- 2 * DATEDIFF(‘week’, [訂單日期(轉(zhuǎn)工作日)], [發(fā)貨日期(轉(zhuǎn)工作日)]))
2、創(chuàng)建視圖
將維度“訂單ID”拖放至行,再將維度“訂單日期”和“發(fā)貨日期”也拖放至行,設(shè)置為:精確日期和離散。
將計(jì)算字段“從下單到發(fā)貨的工作日數(shù)”拖放至“標(biāo)記”卡的文本中(有必要的話,可以篩選一下數(shù)據(jù))。
場(chǎng)景二
計(jì)算每個(gè)月的工作日數(shù)
1、創(chuàng)建計(jì)算字段
打開(kāi) Tableau Desktop,連接“示例-超市”數(shù)據(jù)源,新建工作表。
然后,創(chuàng)建計(jì)算字段:右鍵單擊“數(shù)據(jù)”窗格空白處,在下拉菜單中選擇:創(chuàng)建計(jì)算字段。
? 計(jì)算字段:每月第一天,鍵入函數(shù)
DATETRUNC(‘month’, [訂單日期])
? 計(jì)算字段:每月最后一天,鍵入函數(shù)
DATEADD(‘day’, -1, DATEADD(‘month’, 1, DATETRUNC(‘month’, [訂單日期])))
在上述的兩個(gè)字段的基礎(chǔ)上,再創(chuàng)建2個(gè)字段:
? 計(jì)算字段:每月第一天(轉(zhuǎn)工作日),鍵入函數(shù)
IF DATEPART(‘weekday’, [每月第一天]) = 1
THEN DATEADD(‘day’, 1, [每月第一天])
ELSEIF DATEPART(‘weekday’, [每月第一天]) = 7
THEN DATEADD(‘day’, 2, [每月第一天])
ELSE [每月第一天]
END
? 計(jì)算字段:每月最后一天(轉(zhuǎn)工作日),鍵入函數(shù)
IF DATEPART(‘weekday’, [每月最后一天]) = 1
THEN DATEADD(‘day’, -2, [每月最后一天])
ELSEIF DATEPART(‘weekday’, [每月最后一天]) = 7
THEN DATEADD(‘day’, -1, [每月最后一天])
ELSE [每月最后一天]
END
? 計(jì)算字段:每月工作日數(shù),鍵入函數(shù)
MIN(DATEDIFF(‘day’, [每月第一天(轉(zhuǎn)工作日)], [每月最后一天(轉(zhuǎn)工作日)])
+1
- 2 * DATEDIFF(‘week’, [每月第一天(轉(zhuǎn)工作日)], [每月最后一天(轉(zhuǎn)工作日)])
)
2、創(chuàng)建視圖
將維度“訂單日期”拖放至行,右鍵單擊該膠囊,設(shè)置為“年月”模式和離散。再將計(jì)算字段“每月第一天”和“每月最后一天”拖放至行,也設(shè)置為“年月”模式和離散。
將計(jì)算字段“每月工作日數(shù)”拖放至列,并拖放至“標(biāo)記”卡的文本中。
場(chǎng)景三
計(jì)算兩個(gè)日期間的工作日數(shù)(排除節(jié)日)
此方法適用于:兩個(gè)日期之間有法定節(jié)日的情況,如果兩個(gè)日期之間沒(méi)有法定節(jié)日,請(qǐng)了解場(chǎng)景二的方法。
1、準(zhǔn)備及聯(lián)接數(shù)據(jù)
示例的場(chǎng)景說(shuō)明:2018 年 10 月國(guó)慶 7 天小長(zhǎng)假,這 7 天中必然包含周六和周日。
提前準(zhǔn)備一份不含周末的節(jié)日數(shù)據(jù):節(jié)假日(2018年10月)。因?yàn)?2018 年 10 月國(guó)慶節(jié)日假期中的 6 日和 7 日是周六和周日,所以這份數(shù)據(jù)源不要包含這兩天。
打開(kāi) Tableau Desktop,連接“示例-超市”和“節(jié)假日(2018年10月)”數(shù)據(jù)源。打開(kāi)聯(lián)接數(shù)據(jù)源,將增加的新的數(shù)據(jù)源“sheet1”拖放至右側(cè),選擇“左側(cè)”聯(lián)接,并添加聯(lián)接子句,如圖所示。
2、創(chuàng)建計(jì)算字段
接著,右鍵單擊“數(shù)據(jù)”窗格空白處,在下拉菜單中選擇:創(chuàng)建計(jì)算字段。
? 計(jì)算字段:訂單日期(轉(zhuǎn)工作日),鍵入函數(shù)
IF DATEPART(‘weekday’, [訂單日期]) = 1
THEN DATEADD(‘day’, 1, [訂單日期])
ELSEIF DATEPART(‘weekday’, [訂單日期]) = 7
THEN DATEADD(‘day’, 2, [訂單日期])
ELSE [訂單日期]
END
? 計(jì)算字段:發(fā)貨日期(轉(zhuǎn)工作日),鍵入函數(shù)
IF DATEPART(‘weekday’, [發(fā)貨日期]) = 1
THEN DATEADD(‘day’, -2, [發(fā)貨日期])
ELSEIF DATEPART(‘weekday’, [發(fā)貨日期]) = 7
THEN DATEADD(‘day’, -1, [發(fā)貨日期])
ELSE [發(fā)貨日期]
END
? 計(jì)算字段:從下單到發(fā)貨的工作日數(shù)(剔除節(jié)假日),鍵入函數(shù)
MIN(DATEDIFF(‘day’, [訂單日期(轉(zhuǎn)工作日)], [發(fā)貨日期(轉(zhuǎn)工作日)])+ 1- 2 * DATEDIFF(‘week’, [訂單日期(轉(zhuǎn)工作日)], [發(fā)貨日期(轉(zhuǎn)工作日)])) - COUNTD([節(jié)假日])
3、創(chuàng)建視圖
將維度“訂單ID”拖放至行,再將維度“訂單日期”和“發(fā)貨日期”也拖放至行,并設(shè)置為:精確日期和離散。
將計(jì)算字段“從下單到發(fā)貨的工作日數(shù)(剔除節(jié)假日)”拖放至“標(biāo)記”卡中的文本中。將維度“訂單日期”拖放至“篩選器”卡,篩選到到2018年10月(因?yàn)橹粶?zhǔn)備了 2018 年 10 月的節(jié)日數(shù)據(jù))。
補(bǔ)充說(shuō)明
中國(guó)特有的“調(diào)休”方式,會(huì)將周末挪到節(jié)日前后一并休假。這種情況,可采用場(chǎng)景三中的類(lèi)似計(jì)算方法,區(qū)別在于:
新增加的數(shù)據(jù)源,需要把所有的節(jié)日假日放入其中。用作假期調(diào)休的周末,因?yàn)橐习?#xff0c;所以不需要放入數(shù)據(jù)源中;
計(jì)算字段不需要?jiǎng)?chuàng)建場(chǎng)景二中的兩個(gè)轉(zhuǎn)工作日的字段,計(jì)算字段“從下單到發(fā)貨的工作日數(shù)(剔除節(jié)假日)”可直接用原本的兩個(gè)字段。
今天的 Tableau 技巧,你 Get 到了嗎?趕快試試看吧!
文章部分信息來(lái)源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)告知
總結(jié)
以上是生活随笔為你收集整理的举个栗子!Tableau 技巧(165):快速计算工作日的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 章泽天加入微软实习 网友:提升程序员整体
- 下一篇: 腊八节的传说计算机导论,老潍县地区春节习