计算 powerpivot 的增加百分比
calculate percentage increase in powerpivot
这是我的table
公司----年份----价格
A------------2001----50
A------------2002----75
B------------2001----15
我想使用以下公式计算附加列中的价格上涨百分比
2002 年 A 的 %chg=(75-50)/50
所以我的新 table 看起来像这样
公司----年份----价格---%chg
A------------2001----50-----0
A------------2002----75------0.5
B------------2001----15-----
由于我是 powerpivot 和 DAX 的新手,所以我不知道如何使用筛选函数来执行此操作。
请帮助我。提前致谢
这有点棘手,因为 Power BI 不适合迭代计算。请注意,建议的解决方案可能会导致大数据集出现性能问题:
首先创建一个名为 PriorYear
的新列:
=CALCULATE(Max([Year]),FILTER(Table1,EARLIER([year]) > [year] && EARLIER([Company]) = [Company]))
之后创建一个名为 PriorPrice
:
的列
=CALCULATE(Max([price]),Filter(Table1,EARLIER([PriorYear]) = [Year] && EARLIER([Company]) = [Company]))
最后创建一个名为 PriceRatio 的列:
=IFERROR([price]/[PriorPrice]-1,0)
解释: Earlier()
是这个函数的一个不恰当的名字,因为它的工作原理与 ThisRowsValue()
非常相似。您需要 Max([price])
,因为您无法对列求值。您需要对其应用一些算术。由于只会有一个匹配值,因此算术可以是一切(也可以是 Min()
或 Sum()
)。
这是我的table
公司----年份----价格
A------------2001----50
A------------2002----75
B------------2001----15
我想使用以下公式计算附加列中的价格上涨百分比
2002 年 A 的 %chg=(75-50)/50
所以我的新 table 看起来像这样 公司----年份----价格---%chg
A------------2001----50-----0
A------------2002----75------0.5
B------------2001----15-----
由于我是 powerpivot 和 DAX 的新手,所以我不知道如何使用筛选函数来执行此操作。
请帮助我。提前致谢
这有点棘手,因为 Power BI 不适合迭代计算。请注意,建议的解决方案可能会导致大数据集出现性能问题:
首先创建一个名为 PriorYear
的新列:
=CALCULATE(Max([Year]),FILTER(Table1,EARLIER([year]) > [year] && EARLIER([Company]) = [Company]))
之后创建一个名为 PriorPrice
:
=CALCULATE(Max([price]),Filter(Table1,EARLIER([PriorYear]) = [Year] && EARLIER([Company]) = [Company]))
最后创建一个名为 PriceRatio 的列:
=IFERROR([price]/[PriorPrice]-1,0)
解释: Earlier()
是这个函数的一个不恰当的名字,因为它的工作原理与 ThisRowsValue()
非常相似。您需要 Max([price])
,因为您无法对列求值。您需要对其应用一些算术。由于只会有一个匹配值,因此算术可以是一切(也可以是 Min()
或 Sum()
)。