我有以下问题..
我有这张桌子:
我想创建一个计算列,以告诉我同一代码( 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 函数从当前日期中获取最新日期之间的差值。
但是,我获得了以下结果:
我无法过滤 COD ,因此“ EARLIER”的分析仅在同一“组”中进行,因此我了解PowerBI正在考虑所有日期。
有什么主意吗?
答案 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
。