PowerBi中的总工作日计算

时间:2018-12-15 22:41:03

标签: powerbi

Snapshot of Data

我有一些与特定任务的员工开始日期和结束日期相关的数据

如何使用PowerBi中的上述数据计算“总工作日”

预期产量将是该员工工作的天数(根据日期)

例如 12/2/2018 12/3/2018 = 1个工作日

但如果重复相同的记录,则将保留一个工作日

Output from Formula

Screenshot of PBX File

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式计算工作日,我将为您提供两个选择(均为计算列):

WorkingDays1 = Tasks[EndTime] - Tasks[StartTime]

(假设它是日期列类型),您可以添加.DATE以确保在该列后面)

OR

WorkingDays2 = DATEDIFF(Tasks[StartTime];Tasks[EndTime];DAY)

如果您想在同一天更正金额,可以使用IF语句:

WorkingDays3 = 
  IF (
     Tasks[StartTime] = Tasks[EndTime];
     1;
     DATEDIFF ( Tasks[StartTime]; Tasks[EndTime]; DAY )
  )

如果您希望对日期进行求和,可以在度量中求和以上生成的列之一,或者可以创建不需要该列的度量:迭代行,并计算正确的数量:

SUM WorkingDay =
     SUMX (
        Tasks;
        IF (
          Tasks[StartTime] = Tasks[EndTime];
          1;
          DATEDIFF ( Tasks[StartTime]; Tasks[EndTime]; DAY )
        )
     )

结果: enter image description here

注意:这些计算不考虑周末或假期。

编辑:

如果只需要一个唯一的日期列表以及工作日,则可以使用类似的方法。重复开始日期:

SUM WorkingDay2 =
SUMX (
    VALUES ( Tasks[StartTime] );
    IF (
        DATEDIFF ( Tasks[StartTime]; CALCULATE ( MAX ( Tasks[EndTime] ) ); DAY ) = 0;
        1;
        DATEDIFF ( Tasks[StartTime]; CALCULATE ( MAX ( Tasks[EndTime] ) ); DAY )
    )
)

编辑2:

如果您想每天创建一个唯一列表,则必须摆脱datetime列中的时间部分。有几种方法可以执行此操作,但是一种选择是创建新列:

StartDate = Tasks[StartTime].[Date]

然后,您可以通过迭代日期而不是日期时间来调整度量值:

SUM WorkingDay3 = 
SUMX (
    VALUES ( Tasks[StartDate] );
    IF (
        DATEDIFF ( Tasks[StartDate]; CALCULATE ( MAX ( Tasks[EndTime] ) ); DAY ) = 0;
        1;
        DATEDIFF ( Tasks[StartDate]; CALCULATE ( MAX ( Tasks[EndTime] ) ); DAY )
    )
)