同一列中基于类别的多个日期之间的差异

时间:2019-01-04 18:46:23

标签: powerbi dax

我有以下问题..

我有这张桌子:

enter image description here

我想创建一个计算列,以告诉我同一代码( COD )的两个日期之间的天差,应基于行前的日期来计算差额。

例如:

使用化学需氧量 B

COD | DATE | days_diff

B | 2018/05/01 |

B | 2018/09/01 | 4

B | 2018/12/01 | 3

在示例图像中,代码/日期是按顺序排序的,但实际上它们是乱序的。

我尝试在DAX中使用以下句子:

 DATEDIFF(Testing[DATE]; FIRSTDATE(FILTER( ALL(Testing[DATE]) ;Testing[DATE] > EARLIER(Testing[DATE])));DAY)

解释我的尝试:

使行中的日期与使用 EARLIER 函数从当前日期中获取最新日期之间的差值。

但是,我获得了以下结果:

enter image description here

我无法过滤 COD ,因此“ EARLIER”的分析仅在同一“组”中进行,因此我了解PowerBI正在考虑所有日期。

有什么主意吗?

1 个答案:

答案 0 :(得分:2)

您的想法非常接近,但需要进行一些调整。试试这个:

Days_diff =
VAR StartDate =
    CALCULATE (
        LASTDATE ( Testing[DATE] ),
        FILTER (
            ALLEXCEPT ( Testing, Testing[COD] ),
            Testing[DATE] < EARLIER ( Testing[DATE] )
        )
    )
RETURN
    DATEDIFF ( StartDate, Testing[DATE], DAY )

变量StartDate计算当前行日期之前的最后一个日期。我使用CALCULATE删除了COD以外的所有行上下文,因为这是我们要进行分组的内容。

注意:EARLIER函数不是日期/时间函数,而是对更早的行上下文的引用(在进入FILTER函数内部之前)。当我们嵌套函数时,它使我们可以跳回一个级别。

然后,您只需拿DATEDIFF

Days_diff