【问题标题】:How to calculate NETWORKDAYS in Tableau如何在 Tableau 中计算 NETWORKDAYS
【发布时间】:2021-03-15 20:19:38
【问题描述】:

在我的上一篇博文 Convert Original Date and Time to Valid Work Date and Time 中,我发布了如何在 Tableau 中将日期时间字段的日期和时间更改为有效的工作日期和时间。这对于在工作时间之前和之后登陆的数据很有帮助。不幸的是,此时如果您在 Tableau 中使用 DATEDIFF() 函数,该公式仍会计算开始日期和结束日期之间的周末天数。

所以,在做一些研究后,我发现了 Ian Baldwin 于 2017 年发布的这篇文章 How to Calculate Working Days between dates in Tableau。我试过了,但它只在前 8 天有效。 8 天后,我会得到一个浮点值而不是整数值(2.48005 等)。然后,我转到 Excel 并开始运行一些数字并分析 Excel 中的 NETWORKDAYS() 实际工作原理。那么接下来该怎么做呢?

【问题讨论】:

    标签: excel-formula tableau-api calculation


    【解决方案1】:

    这是我想出的:

    //Calculate the difference between start date and the end date and add 1 day.
    //for example from 2/26/2021 to 3/15/2021 = 17 + 1= 18 days
    ((DATEDIFF('day',[Date X],TODAY()) + 1)
    
    //substract the total amount of days for each weekend between start date and end date.
    //for example: (Round(18/7,0)*2 = 6
    - (ROUND((DATEDIFF('day',[Date X],TODAY())+1) / 7,0) * 2)
    
    //whatever result comes out of the above, we will substract and additional 1 or 2 days depending
    //if the start date falls on a saturday or a sunday.
    - (CASE DATENAME('weekday',[Date X])
    WHEN '7' THEN 2
    WHEN '1' THEN 1
    ELSE 0 END)) - 1
    

    上述解决方案是一致的、准确的和可靠的(嗯,仍在测试中)。我添加了 '-1' 以取消 Networkdays 重要的额外一天(就像它是 Excel 中的双胞胎姐妹一样)。如果您有更好的解决方案,请告诉我。

    【讨论】:

      【解决方案2】:

      如果您要计算开始日期和时间与结束日期和时间之间的小时数,我想出以下方法:

      (DATEDIFF('hour',[yourStartDate],[yourEndDate]) + (24))
      //example: DATEDIFF('hour', startdate, enddate)= 
      //(17 days * 24 hrs/day) + 24 hrs = (18 days * 24 hrs/day)
      
      //Then,substract the total amount of days for each weekend
      // between start and end date (in hours)
      
      -(ROUND((DATEDIFF('day',[yourStartDate],[yourEndDate]) + 1) / 7, 0) * (48))
      //ex: datediff('day',startdate, enddate)=17 + 1 = 18 days. 
      //Next, 18 days / 7 days = ROUND(2.57, 0) = 2. Finally, 2 days * 48 hrs/days
      
      //find which weekday the start date represents
      -(CASE DATENAME('weekday',[yourStartDate])
      WHEN '7' THEN (2*24)//falls on Saturday, then substract (2 days * 24 hrs/day)
      WHEN '1' THEN (24)//falls on Sunday, then substract 24 hrs
      ELSE 0 END)//any other day, substract 0 hrs
      

      这将计算仅工作日的小时数。例如, 如果开始日期和时间是 3/19/2021 7:00:00,结束日期和时间是 3/22/2021 7:00:00,则结果应为 24 小时。 同样,如果您为 Tableau Desktop 找到更好的解决方案。请告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-05
        • 1970-01-01
        • 2016-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多