首页 > 解决方案 > Power Bi DAX:重置某个日期之后的值

问题描述

遇到问题。

我需要对权利值进行年度重置,但重置点是每个人的不同日期。一个人在开始日期后 6 个月获得权利,因此 +6 个月日期是他们应该重置的时间。这是我制作的+6个月专栏:

+6m = DATE(YEAR('Employee List'[Emp. Dates]),
           MONTH('Employee List'[Emp. Dates])+6,
           DAY('Employee List'[Emp. Dates]))

当我看到超额部分剥夺了一个人在公司整个时间所花费的天数时,我遇到了这个问题。这是过剩的衡量标准:

Excess Days = CALCULATE(SUM('Employee List'[Entitlement]) - 
                        SUM('Leave combined'[Duration1]))

即使从几年前开始,这也剥夺了所有记录的日子。

如果我们已经过了 +6 个月的日期(DD/MM(年份无关紧要,我每年只需要相同的时间)),我可以做出一个几乎可以说明的措施,那么它将从 +6 个月的日期剥夺他们的权利,并将从+6个月重置之前的任何日子都没有收到?

例如,如果 +6months 是 2015 年 3 月 1 日,目前它需要从开始到今天的所有天数,我希望它在每年 3 月 1 日重置,所以它只需要 2019 年 3 月 1 日的数据 - 今天并将重置一旦我们超过了 2020 年 3 月 1 日。如果一个人平均每年花费 25 天,而他们只有 20 天的权利,它应该显示他们多出 5 天,但对我来说,现在它是从他们的权利中扣除的总天数。

我知道这很难解释,你可能不明白,但我很乐意解释。

假表

标签: powerbidaxpowerbi-desktop

解决方案


创建计算列来执行此操作更容易。也许是这样的:

Calc =
     VAR Person = TableA[Person]
     VAR Date1 = EDATE(Entitlement[Start Date],6)
RETURN IF(TableA[Start]<Date1,0,TableA[Duration])

只要开始日期小于权利的 +6m 日期,此列将使持续时间为 0。创建此列后,您可以简单地总结所需级别的字段,以获得所需的输出。希望这可以帮助。


推荐阅读