在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格式化器进行美化的公式

答案是肯定的。 但是,我需要看到你有什么样的确切样本。 这听起来像你有两列的数据,并希望有三分之一,根据与前两者的交互给你一些答案。 根据你所描述的,一个数据透视表似乎是不必要的,所以我不会浪费你的时间。