日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

举个栗子!Tableau 技巧(165):快速计算工作日

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 举个栗子!Tableau 技巧(165):快速计算工作日 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


來自銀行用戶的需求:我們的業務數據源表多、量大(超過 10 萬行),并且常常需要分析工作日數據。這種情況,Tableau 能快速實現嗎?

其實,在實際分析場景中,對于工作日的數據呈現,是普遍需求。尤其在中國,各種節日小長假的周末調休,給工作日數據分析帶來了更多的難度。

圖片來自網絡

那么,如何在 Tableau 中快速計算工作日呢?今天的栗子,將帶來三種不同場景的方法,一睹為快吧~

本期《舉個栗子》,我們要給大家分享的 Tableau 技巧是:快速計算工作日。

為方便學習,栗子使用 Tableau 自帶的“示例-超市”數據源。掌握栗子方法后,數據粉可嘗試使用自己的數據源。

---------------------------------------------->>
具體步驟如下:

場景一

計算兩個日期間的工作日數

此方法僅適用于:兩個日期之間沒有法定節日的情況,如果兩個日期之間有法定節日并涉及調休,請了解場景三的方法。

1、創建計算字段

打開 Tableau Desktop,連接“示例-超市”數據源,新建工作表。

然后,創建計算字段:右鍵單擊“數據”窗格空白處,在下拉菜單中選擇:創建計算字段。

? 計算字段:訂單日期(轉工作日),鍵入函數
IF DATEPART(‘weekday’, [訂單日期]) = 1
THEN DATEADD(‘day’, 1, [訂單日期])
ELSEIF DATEPART(‘weekday’, [訂單日期]) = 7
THEN DATEADD(‘day’, 2, [訂單日期])
ELSE [訂單日期]
END

? 創建字段【發貨日期(轉工作日),鍵入函數
IF DATEPART(‘weekday’, [發貨日期]) = 1
THEN DATEADD(‘day’, -2, [發貨日期])
ELSEIF DATEPART(‘weekday’, [發貨日期]) = 7
THEN DATEADD(‘day’, -1, [發貨日期])
ELSE [發貨日期]
END

Tips:為何要特別對待等于 1 或 7 的情況呢?因為 1 或 7 在該計算中,對應的是周日和周六(一周的第一天是周日),當碰到這種情況,就需要往前推 2 天或往后推 1 天。

? 創建字段:從下單到發貨的工作日數,鍵入函數
MIN(DATEDIFF(‘day’, [訂單日期(轉工作日)], [發貨日期(轉工作日)])+ 1- 2 * DATEDIFF(‘week’, [訂單日期(轉工作日)], [發貨日期(轉工作日)]))

2、創建視圖

將維度“訂單ID”拖放至行,再將維度“訂單日期”和“發貨日期”也拖放至行,設置為:精確日期和離散。

將計算字段“從下單到發貨的工作日數”拖放至“標記”卡的文本中(有必要的話,可以篩選一下數據)。

場景二

計算每個月的工作日數

1、創建計算字段

打開 Tableau Desktop,連接“示例-超市”數據源,新建工作表。

然后,創建計算字段:右鍵單擊“數據”窗格空白處,在下拉菜單中選擇:創建計算字段。

? 計算字段:每月第一天,鍵入函數
DATETRUNC(‘month’, [訂單日期])

? 計算字段:每月最后一天,鍵入函數
DATEADD(‘day’, -1, DATEADD(‘month’, 1, DATETRUNC(‘month’, [訂單日期])))

在上述的兩個字段的基礎上,再創建2個字段:

? 計算字段:每月第一天(轉工作日),鍵入函數
IF DATEPART(‘weekday’, [每月第一天]) = 1
THEN DATEADD(‘day’, 1, [每月第一天])
ELSEIF DATEPART(‘weekday’, [每月第一天]) = 7
THEN DATEADD(‘day’, 2, [每月第一天])
ELSE [每月第一天]
END

? 計算字段:每月最后一天(轉工作日),鍵入函數
IF DATEPART(‘weekday’, [每月最后一天]) = 1
THEN DATEADD(‘day’, -2, [每月最后一天])
ELSEIF DATEPART(‘weekday’, [每月最后一天]) = 7
THEN DATEADD(‘day’, -1, [每月最后一天])
ELSE [每月最后一天]
END

? 計算字段:每月工作日數,鍵入函數
MIN(DATEDIFF(‘day’, [每月第一天(轉工作日)], [每月最后一天(轉工作日)])
+1

  • 2 * DATEDIFF(‘week’, [每月第一天(轉工作日)], [每月最后一天(轉工作日)])
    )

2、創建視圖

將維度“訂單日期”拖放至行,右鍵單擊該膠囊,設置為“年月”模式和離散。再將計算字段“每月第一天”和“每月最后一天”拖放至行,也設置為“年月”模式和離散。

將計算字段“每月工作日數”拖放至列,并拖放至“標記”卡的文本中。

場景三

計算兩個日期間的工作日數(排除節日)

此方法適用于:兩個日期之間有法定節日的情況,如果兩個日期之間沒有法定節日,請了解場景二的方法。

1、準備及聯接數據

示例的場景說明:2018 年 10 月國慶 7 天小長假,這 7 天中必然包含周六和周日。

提前準備一份不含周末的節日數據:節假日(2018年10月)。因為 2018 年 10 月國慶節日假期中的 6 日和 7 日是周六和周日,所以這份數據源不要包含這兩天。

打開 Tableau Desktop,連接“示例-超市”和“節假日(2018年10月)”數據源。打開聯接數據源,將增加的新的數據源“sheet1”拖放至右側,選擇“左側”聯接,并添加聯接子句,如圖所示。

2、創建計算字段

接著,右鍵單擊“數據”窗格空白處,在下拉菜單中選擇:創建計算字段。

? 計算字段:訂單日期(轉工作日),鍵入函數
IF DATEPART(‘weekday’, [訂單日期]) = 1
THEN DATEADD(‘day’, 1, [訂單日期])
ELSEIF DATEPART(‘weekday’, [訂單日期]) = 7
THEN DATEADD(‘day’, 2, [訂單日期])
ELSE [訂單日期]
END

? 計算字段:發貨日期(轉工作日),鍵入函數
IF DATEPART(‘weekday’, [發貨日期]) = 1
THEN DATEADD(‘day’, -2, [發貨日期])
ELSEIF DATEPART(‘weekday’, [發貨日期]) = 7
THEN DATEADD(‘day’, -1, [發貨日期])
ELSE [發貨日期]
END

? 計算字段:從下單到發貨的工作日數(剔除節假日),鍵入函數
MIN(DATEDIFF(‘day’, [訂單日期(轉工作日)], [發貨日期(轉工作日)])+ 1- 2 * DATEDIFF(‘week’, [訂單日期(轉工作日)], [發貨日期(轉工作日)])) - COUNTD([節假日])

3、創建視圖

將維度“訂單ID”拖放至行,再將維度“訂單日期”和“發貨日期”也拖放至行,并設置為:精確日期和離散。

將計算字段“從下單到發貨的工作日數(剔除節假日)”拖放至“標記”卡中的文本中。將維度“訂單日期”拖放至“篩選器”卡,篩選到到2018年10月(因為只準備了 2018 年 10 月的節日數據)。

補充說明

中國特有的“調休”方式,會將周末挪到節日前后一并休假。這種情況,可采用場景三中的類似計算方法,區別在于:

新增加的數據源,需要把所有的節日假日放入其中。用作假期調休的周末,因為要上班,所以不需要放入數據源中;

計算字段不需要創建場景二中的兩個轉工作日的字段,計算字段“從下單到發貨的工作日數(剔除節假日)”可直接用原本的兩個字段。

今天的 Tableau 技巧,你 Get 到了嗎?趕快試試看吧!

文章部分信息來源于網絡,如有侵權請告知

總結

以上是生活随笔為你收集整理的举个栗子!Tableau 技巧(165):快速计算工作日的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。