有没有办法根据当前行的值使用DAX过滤行(我正在使用电源轴)?
换句话说,如果我有一个表“progress”,其中'ID'在每行中递增,并且'Percentage'列和另一个表包含
我想创建一个名为old percentage =(progress [ID] -1)
的百分比的列这在excel中是否可行?
我在这里找不到任何直截了当的命令,如果有的话,请原谅我,我仍然是新的力量支点。
我这样做可能是创建一个新列旧ID =进度[ID] -1然后在power pivot中创建一个新表,它是当前表的副本,但后来我用旧ID链接它而不是当前的ID。 然后最后我做了一个旧的百分比列=相关([百分比]);
这是解决问题的有效方法吗?这可以进一步优化吗?
谢谢。
编辑:我添加了一张图片来帮助显示我需要的内容
)
答案 0 :(得分:8)
<强> JShmay 强>,
如果您使用SUMX function和EARLIER的组合,解决方案会更加简单。
只需使用以下公式添加新的计算列:
=SUMX (
FILTER ( Progress, EARLIER ( [ID] ) = [ID] + 1 ),
Progress[PERCENTAGE]
)
EARLIER返回当前行,因此如果将其与前一行进行比较,则可以返回正确的值。这种方法可能不是很直观,但效率更高,可以节省大量时间。
输出应如下所示:
尝试四处游戏以达到理想的效果,但我相信这是最简单,最有效的方法(就处理时间而言)。
希望这有帮助。
更新:在DAX查询中阅读此article about using EARLIER。它可能会有所帮助。
答案 1 :(得分:3)
Petr优雅解决方案的替代方案是使用一种方法来解决这个问题。
在这种情况下哪个最好将取决于您的模型的具体情况,您的表的大小,您使用此计算的频率以及您希望复制它的次数(即,如果您想要添加10个计算)列,这将是一个坏主意)。
我喜欢测量方法,因为它使用了一种非常可重复使用的模式:
=
SUMX (
VALUES ( Progress[ID] ),
CALCULATE (
SUM ( Progress[PERCENTAGE] ),
FILTER (
ALL ( Progress ),
Progress[ID]
= MAX ( Progress[ID] ) - 1
)
)
)
小心使用这种方法的总计 - 关闭它们可能是'正确'的事情。
来美化公式答案 2 :(得分:0)
答案是肯定的。但是,我需要看到你所拥有的确切样本。听起来你有两列数据,并希望第三列根据与前两个的交互给你一些答案。根据您所描述的内容,我们不需要使用数据透视表,因此我不会浪费您的时间。