Power BI报告衡量按时完成的作业

时间:2019-05-20 13:56:43

标签: powerbi dax

我有一个Power BI报告,该报告可计算一个月内到期的作业数量,并报告按时完成多少作业。该报告运行良好,但我无法弄清楚如何将按时完成的提前一个月提前完成的工作包括在内。

我已采取以下措施:

  • 按时完成=作业在应有的月份完成(这是我需要代码帮助的地方)
  • 外部时间=作业在到期后完成。
  • 不完整=用于识别不完整的工作
  • %Perf =按时完成的工作百分比。”

测量“到期”:

Due = COUNTROWS ( Table1 )

衡量“按时完成”:

Done on time = 
VAR DueMonth = MONTH ( FIRSTDATE ( Table1[due_date] ) )
RETURN
    CALCULATE ( 
        [Due],
        FILTER ( 
            Table1,
            MONTH ( Table1[completed] ) = DueMonth
        )
    )

测量“外部时间”:

Outside time = 
VAR DueMonth = MONTH ( FIRSTDATE ( Table1[due_date] ) )
RETURN
    CALCULATE ( 
        [Due],
        FILTER ( 
            Table1,
            MONTH ( Table1[completed] ) <> DueMonth && 
            NOT ISBLANK ( Table1[completed] )
        )
    )

测量“不完整”:

Incomplete = 
VAR DueMonth = MONTH ( FIRSTDATE ( Table1[due_date] ) )
RETURN
    CALCULATE ( 
        [Due],
        FILTER ( 
            Table1,
            ISBLANK ( Table1[completed] )
        )
    )

测量“%Perf”

% Perf = 
    DIVIDE ( 
        [Done on time],
        [Due],
        BLANK()
    )    

预期结果是将提前完成的工作添加到正确月份中完成的工作总数中。

样本输出: Sample job data Sample Job Data 2

Sample Report View

1 个答案:

答案 0 :(得分:0)

如果我对问题的理解正确,那么您想更改指标以考虑所有已完成的任务处于启用状态或在完成月份之前:

    Done on time or prior= 
VAR DueMonth = MONTH ( FIRSTDATE ( Table1[due_date] ) )
RETURN
    CALCULATE ( 
        [Due],
        FILTER ( 
            Table1,
            MONTH ( Table1[completed] ) <= DueMonth
        )
    )

或考虑计划月份和计划月份-1:

    Done on time or month before= 
VAR DueMonth = MONTH ( FIRSTDATE ( Table1[due_date] ) )
RETURN
    CALCULATE ( 
        [Due],
        FILTER ( 
            Table1,
            MONTH ( Table1[completed] ) = DueMonth || MONTH ( Table1[completed] ) = DueMonth -1
        )
    )

请注意,您可能还需要考虑年份。如果是这样,我建议您尝试使用eomonth这样的功能:

Done on time or month before= 
VAR DueMonth = EOMONTH( FIRSTDATE ( Table1[due_date] ) )
RETURN
    CALCULATE ( 
        [Due],
        FILTER ( 
            Table1,
            EOMONTH( Table1[completed] ) = DueMonth || EOMONTH( Table1[completed] ) = dateadd(DueMonth, -1, month)
        )
    )