上次修改日期: 05 Jun 2023
环境
Tableau Desktop答案
单击以展开解决方案
选项 1:对数据源中两个日期字段之间的工作日进行计数
步骤 1:创建计算字段
- 选择“分析”>“创建计算字段”
- 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”:
- 命名此计算字段。在此示例中,计算字段名为“Order Date (shifted to weekday)”
- 在公式字段中,创建一个类似于如下的计算:
IF DATEPART('weekday', [Order Date]) = 1
THEN DATEADD('day', 1, [Order Date])
ELSEIF DATEPART('weekday', [Order Date]) = 7
THEN DATEADD('day', 2, [Order Date])
ELSE [Order Date]
END
- 使用类似于如下的计算创建一个名称类似于“Ship Date (shifted to weekday)”(发货日期(转移到工作日))的计算字段:
IF DATEPART('weekday', [Ship Date]) = 1
THEN DATEADD('day', -2, [Ship Date])
ELSEIF DATEPART('weekday', [Ship Date]) = 7
THEN DATEADD('day', -1, [Ship Date])
ELSE [Ship Date]
END - 使用类似于如下的计算创建一个名称类似于“# of Weekdays from Order to Shipping”(从订购到发货的工作日数)的计算字段:
MIN(
DATEDIFF('day', [Order Date (shifted to weekday)], [Ship Date (shifted to weekday)])
+ 1
- 2 * DATEDIFF('week', [Order Date (shifted to weekday)], [Ship Date (shifted to weekday)])
)
步骤 2: 生成视图
- 将“[Order ID]”(订单 ID)拖到“行”功能区
- 可选:将“[Order Date]”(订单日期)和“[Ship Date]”(发货日期)拖到“行”功能区
- 将“[# of Weekdays from Order to Shipping]”(从订购到发货的工作日数)拖到“标记”卡上的“文本”
单击以展开解决方案
选项 2:对每个日期字段每个月的工作日进行计数
此示例使用示例数据集“Superstore”针对订单日期查找每个月内的工作日数。
- 选择“分析”>“创建计算字段”
- 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”:
- 命名此计算字段。在此示例中,计算字段名为“Start of Month Date”(月开始日期)
- 在公式字段中,创建一个类似于如下的计算:
DATETRUNC('month', [Order Date])
- 使用类似于如下的计算创建一个名称类似于“End of Month Date”(月结束日期)的计算字段:
DATEADD('day', -1, DATEADD('month', 1, DATETRUNC('month', [Order Date])))
- 按照“选项 1”中的指引进行操作,并使用“[Start of Month Date]”(月开始日期)而不是“[Order Date]”(订单日期),使用“[End of Month Date]”(月结束日期)而不是“[Ship Date]”(发货日期)
单击以展开解决方案
选项 3:排除假日的工作日计数
此示例使用示例数据集“Superstore”针对每个订单查找订单日期和发货日期之间的工作日数。
步骤 1:设置数据
- 将包含一系列假日日期的表添加到原始数据源。在此示例中,此表名为“Holidays”(假日)
- 导航到 Tableau Desktop 中的“数据源”选项卡
- 将“Holidays”(假日)表添加到画布区域
- 在“联接”对话框中,执行以下操作:
- 选择“左”
- 在“数据源”下,选择“Order Date”(订单日期)
- 在“Holidays”(假日)下,选择“Holiday Date”(假日日期)
- 单击等号,并选择“<=”
- 在“数据源”下,单击“添加新的联接子句”,并选择“Ship Date”(发货日期)
- 在“Holidays”(假日)下,选择“Holiday Date”(假日日期)
- 单击等号,并选择“>=”
注意: 应将“[Order Date]”(订单日期)和“[Ship Date]”(发货日期)分别替换为实际开始日期和结束日期。如果开始日期和结束日期是计算字段,则可以在联接计算中重新创建这些计算。如果无法将包含假日的表添加到原始数据源,则创建一个联接到包含假日的外部表的跨数据库联接。这要求升级到 Tableau Desktop 10.5 或更高版本,以便利用跨数据库联接功能的联接子句中的不等式。
步骤 2:创建计算
- 导航到一个工作表
- 按照选项 1 指引中的步骤 1-1 至 1-3 进行操作,创建“[Order Date (shifted to weekday)]”和“[Ship Date (shifted to weekday)]”计算
- 使用类似于如下的计算创建一个名称类似于“# of Weekdays from Order to Shipping”(从订购到发货的工作日数)的计算字段:
MIN(
DATEDIFF('day', [Order Date (shifted to weekday)], [Ship Date (shifted to weekday)])
+ 1
- 2 * DATEDIFF('week', [Order Date (shifted to weekday)], [Ship Date (shifted to weekday)])
) - COUNTD([Holiday Date])
步骤 3:创建视图
- 将“[Order ID]”(订单 ID)拖到“行”功能区
- 可选:将“[Order Date]”(订单日期)和“[Ship Date]”(发货日期)拖到“行”功能区
- 将“[# of Weekdays from Order to Shipping (excluding holidays)]”(从订购到发货的工作日数,不包括假日)拖到“标记”卡上的“文本”
其他信息
为了表达您对在将来的产品版本中包括此增强功能的支持,请为以下社区理念投下您的一票:用于计算工作日数/两个日期之间的工作日数的函数
改善事件的自定义日历
感谢您提供该文章是否有效的反馈。
打开新案例
继续搜索
知识库
社区
产品帮助
培训和教程