在Excel中查找与当前行值相关的行(DAX)
有没有一种方法来使用DAX(我正在使用功率支点)根据您当前的行值进行筛选?
换句话说,如果我有一个表“进度”与“ID”,每行增加,“百分比”列和另一个表
我想创build一个名为old percentage = percentage(progress [ID] -1)的列
这可能在Excel中?
我找不到任何直接的命令,如果有的话,我还是新来的权力枢纽。
我这样做的方式可能是创build一个新的旧ID = progress [ID] -1列,然后在power pivot中创build一个新表,这个表是当前表的副本,但是我将它与Old ID链接而不是当前ID 。 然后最后我做一个旧的百分比列= RELATED([百分比]);
这是否是解决问题的有效方法? 这可以进一步优化?
谢谢。
编辑:我已经添加了一个图像,以帮助显示我所需要的
)
JShmay ,
如果您使用SUMX函数和EARLIER的组合,解决scheme可能会更简单。
只需用这个公式添加一个新的计算列:
=SUMX ( FILTER ( Progress, EARLIER ( [ID] ) = [ID] + 1 ), Progress[PERCENTAGE] )
EARLIER返回当前行,所以如果将它与前一行进行比较,则可以返回正确的值。 这种方法可能不是很直观,但效率更高,可以节省大量时间。
输出应该如下所示:
尝试玩弄,以达到预期的效果,但我相信这是最简单和最有效的方法(就处理时间而言)。
希望这可以帮助。
更新 :阅读这篇关于在DAX查询中使用EARLIER的文章 。 这可能会有所帮助。
Petr的优雅解决scheme的替代方法是使用一种方法来处理这个问题。
在这种情况下,哪一个最好取决于你的模型的细节,你的表的大小,你将使用这个计算的频率以及你想要复制的次数(例如,如果你想添加10个计算列,将是一个坏主意)。
我喜欢度量方法,因为它使用了一个非常可重用的模式:
= SUMX ( VALUES ( Progress[ID] ), CALCULATE ( SUM ( Progress[PERCENTAGE] ), FILTER ( ALL ( Progress ), Progress[ID] = MAX ( Progress[ID] ) - 1 ) ) )
使用这种方法要小心总计 – 把它们关掉可能是“正确”的事情。
使用Dax格式化器进行美化的公式
答案是肯定的。 但是,我需要看到你有什么样的确切样本。 这听起来像你有两列的数据,并希望有三分之一,根据与前两者的交互给你一些答案。 根据你所描述的,一个数据透视表似乎是不必要的,所以我不会浪费你的时间。