Tableau api 计算两个日期之间的营业时间,不包括表中的周末

Tableau api 计算两个日期之间的营业时间,不包括表中的周末,tableau-api,Tableau Api,在Tableau中,如何计算两个日期(不包括周末)之间的营业时间/分钟 例如,我的工作时间是周一到周五上午9点到下午6点。您想计算2018年10月5日上午10点到2018年14月5日上午11点之间的处理时间,因为您的团队只计算营业时间。答案是19小时,但如何在表格中做到这一点?这是一个经常被问到的问题,但实际上没有完整的答案。下面是我的解决方案 1.称之为[周末计数]。找出这两次之间有多少个周末 int( (DATEDIFF('day',[Start],[End])+DATEPART('week

在Tableau中,如何计算两个日期(不包括周末)之间的营业时间/分钟


例如,我的工作时间是周一到周五上午9点到下午6点。您想计算2018年10月5日上午10点到2018年14月5日上午11点之间的处理时间,因为您的团队只计算营业时间。答案是19小时,但如何在表格中做到这一点?

这是一个经常被问到的问题,但实际上没有完整的答案。下面是我的解决方案

1.称之为[周末计数]。找出这两次之间有多少个周末

int( (DATEDIFF('day',[Start],[End])+DATEPART('weekday',[Start])) /7 )
*2
+ (if DATEPART('weekday',[Start]) = 1 then 1 else 0 end)
- (if DATEPART('weekday',[End]) = 7 then 1 else 0 end)
2.将其称为[开始时间],计算您的[开始]时间与您的营业结束时间的时差(将18(下午6点)替换为您的营业结束时间,将9(您的营业时间)替换为您的数字)。(我在这里的时间是上午9点到下午6点)

5.将其命名为[End Min],与#4相同,以找出起始分钟和[End]分钟之间的差异

DATEPART('minute',[End])
6.称之为[总小时],计算总小时。两部分,第一部分是如果[Start]和[End]在同一日期,那么只需使用差异即可。第二部分,如果它们不在同一日期,则使用如下公式(再次将9替换为营业时间) 总和(开始和结束的时间)+介于*营业时间/天之间的天数-介于*营业时间/天之间的周末

if
DATEDIFF('day',[Start],[End])=0 and
datepart('hour',[Start])- datepart('hour',[End]) =0
then
0

elseif
DATEDIFF('day',[Start],[End])=0 and
datepart('hour',[Start])- datepart('hour',[End]) !=0 and
datepart('minute',[Start])- datepart('minute',[End])<=0
then
DATEPART('hour',[End]) - DATEPART('hour',[Start])

elseif  DATEDIFF('day',[Start],[End])=0 and
datepart('hour',[Start])- datepart('hour',[End]) !=0 and
datepart('minute',[Start])- datepart('minute',[End])>0
then
DATEPART('hour',[End]) - DATEPART('hour',[Start]) -1

elseif
DATEDIFF('day',[Start],[End]) > 0
then
([Start Hour]+[End Hour])+
(DATEDIFF('day',[Start],[End]) -1)
* 9
- [Weekends Count]*9
END
if
DATEDIFF('天',[开始],[结束])=0和
datepart('hour',[Start])-datepart('hour',[End])=0
然后
0
埃尔塞夫
DATEDIFF('天',[开始],[结束])=0和
日期部分('hour',[Start])-日期部分('hour',[End])=0及
datepart('minute',[Start])-datepart('minute',[End])0
然后
日期部分('hour',[End])-日期部分('hour',[Start])-1
埃尔塞夫
DATEDIFF('天',[开始],[结束])大于0
然后
([开始时间]+[结束时间])+
(DATEDIFF('天',[开始],[结束])-1)
* 9
-[周末计算]*9
结束
7.调用[Total Min],计算总分钟数

if DATEDIFF('day',[Start],[End]) =0
and DATEPART('minute',[End])-DATEPART('minute',[Start])>=0
then DATEPART('minute',[End])-DATEPART('minute',[Start])

elseif DATEDIFF('day',[Start],[End]) =0
and DATEPART('minute',[End])-DATEPART('minute',[Start])<0
then 60 + DATEPART('minute',[End])-DATEPART('minute',[Start])

elseif DATEDIFF('day',[Start],[End]) !=0
then [Start Min]+[End Min]
end
如果DATEDIFF('day',[Start],[End])=0
和DATEPART('minute',[End])-DATEPART('minute',[Start])>=0
然后是DATEPART('minute',[End])-DATEPART('minute',[Start]))
elseif DATEDIFF('day',[Start],[End])=0
和DATEPART('minute',[End])-DATEPART('minute',[Start]))
DATEPART('minute',[End])
if
DATEDIFF('day',[Start],[End])=0 and
datepart('hour',[Start])- datepart('hour',[End]) =0
then
0

elseif
DATEDIFF('day',[Start],[End])=0 and
datepart('hour',[Start])- datepart('hour',[End]) !=0 and
datepart('minute',[Start])- datepart('minute',[End])<=0
then
DATEPART('hour',[End]) - DATEPART('hour',[Start])

elseif  DATEDIFF('day',[Start],[End])=0 and
datepart('hour',[Start])- datepart('hour',[End]) !=0 and
datepart('minute',[Start])- datepart('minute',[End])>0
then
DATEPART('hour',[End]) - DATEPART('hour',[Start]) -1

elseif
DATEDIFF('day',[Start],[End]) > 0
then
([Start Hour]+[End Hour])+
(DATEDIFF('day',[Start],[End]) -1)
* 9
- [Weekends Count]*9
END
if DATEDIFF('day',[Start],[End]) =0
and DATEPART('minute',[End])-DATEPART('minute',[Start])>=0
then DATEPART('minute',[End])-DATEPART('minute',[Start])

elseif DATEDIFF('day',[Start],[End]) =0
and DATEPART('minute',[End])-DATEPART('minute',[Start])<0
then 60 + DATEPART('minute',[End])-DATEPART('minute',[Start])

elseif DATEDIFF('day',[Start],[End]) !=0
then [Start Min]+[End Min]
end