Powerbi 基于其他列中的条件查找上一个值
目标:Powerbi 基于其他列中的条件查找上一个值,powerbi,dax,Powerbi,Dax,目标: previous value = LOOKUPVALUE( Table[value], Table[date], CALCULATE( MAX(Table[date]), FILTER( Table, Table[group]=EARLIER(Table[group]) && Table[date]<EARLIER(Table[date]) )
previous value =
LOOKUPVALUE(
Table[value],
Table[date],
CALCULATE(
MAX(Table[date]),
FILTER(
Table,
Table[group]=EARLIER(Table[group]) && Table[date]<EARLIER(Table[date])
)
)
)
根据条件获取上一个值
情况:
previous value =
LOOKUPVALUE(
Table[value],
Table[date],
CALCULATE(
MAX(Table[date]),
FILTER(
Table,
Table[group]=EARLIER(Table[group]) && Table[date]<EARLIER(Table[date])
)
)
)
我有一张编号为1,2的桌子。我想看看以前的值(指以前的日期),但每个组
所需输出:
previous value =
LOOKUPVALUE(
Table[value],
Table[date],
CALCULATE(
MAX(Table[date]),
FILTER(
Table,
Table[group]=EARLIER(Table[group]) && Table[date]<EARLIER(Table[date])
)
)
)
我的输出应该是这样的
+------------+-------+-------+----------------+
| date | group | value | previous value |
+------------+-------+-------+----------------+
| 2019-02-02 | 2 | 50 | 45 |
| 2019-02-02 | 1 | 60 | 80 |
| 2019-01-18 | 2 | 45 | |
| 2019-01-18 | 1 | 80 | |
+------------+-------+-------+----------------+
我的尝试:
previous value =
LOOKUPVALUE(
Table[value],
Table[date],
CALCULATE(
MAX(Table[date]),
FILTER(
Table,
Table[group]=EARLIER(Table[group]) && Table[date]<EARLIER(Table[date])
)
)
)
上一个值=
查找值(
表[值],
表[日期],
算计(
最大值(表[日期]),
滤器(
桌子
Table[group]=previous(Table[group])&&Table[date]据我所知,您希望将其作为计算列,而不是度量值。请尝试:
Previous Value =
VAR Current_Date = Table[date]
VAR Previous_Date =
CALCULATE (
MAX ( Table[date] ),
Table[date] < Current_Date,
ALLEXCEPT ( Table, Table[group] )
)
RETURN
CALCULATE (
MAX ( Table[value] ),
Table[Date] = Previous_Date,
ALLEXCEPT ( Table, Table[group] )
)
上一个值=
VAR当前日期=表[日期]
VAR上一个日期=
算计(
最大值(表[日期]),
表[日期]<当前日期,
ALLEXCEPT(表,表[组])
)
返回
算计(
最大值(表[值]),
表[日期]=上一个日期,
ALLEXCEPT(表,表[组])
)
工作原理:
我们迭代表中的每条记录,并将其日期存储在“Current_date”变量中
对于每个记录,查找previous date,它是比我们正在迭代的记录的日期小的最大日期。为此,我们需要访问所有日期,而不仅仅是当前记录的日期,因此我们需要使用all函数。但是,由于我们需要按组执行此操作,因此我们使用ALLEXCEPT,它为当前gro保留筛选器起来
一旦找到上一个日期,您就可以使用完全相同的模式来查找上一个值—查找记录日期等于上一个日期的最大值,同时保留组筛选器
如果所有答案都能这样写…谢谢!