同比 Inflation 特定数据模型的计算
Year over Year Inflation Calculation for particular data model
我知道这可能是一个重复的问题,但经过大约 5 小时的搜索,我未能找到解决问题的方法。如果是,请提前致歉。
数据
我有三个处于 DIrectQuery 存储模式的 table。一个名为 LINE_ITEM,它与另一个 table INVOICE 具有一对多关系。 INVOICE table 与另一个 table CONTRACT 具有一对多关系。每份合同每年有一张发票。每个 INVOICE 都有一个或多个行项目,所有这些项目都有 N_PAID_AMOUNT.
目标
我正在计算每个 INVOICE 年支付金额的增加百分比。
限制
这个相同的 pbix 文件将用于做许多其他事情,并且需要非常灵敏。为了速度和简单性,我不想以任何方式操纵查询或关系。我想用测量或计算的列来解决这个问题。
我卡在哪里
我有一个公式,我正在使用它进行测量
Previous Paid Amount = CALCULATE(SUM(LINE_ITEM[N_PAID_AMOUNT]), YEAR(INVOICE[DT_START]) = YEAR(INVOICE[DT_START])-1)
它仅针对过滤器表达式中的第二次出现抛出错误 "Cannot find name '[DT_START]'."。如果我用
替换公式
Previous Paid Amount = CALCULATE(SUM(LINE_ITEM[N_PAID_AMOUNT]), YEAR(INVOICE[DT_START]) = NOW())
它不会抛出错误,但显然不会帮助我计算我需要的东西。
我尝试过的其他东西
我试过使用 EARLIER DAX 函数,我试过将数据更改为导入模式,我试过许多其他公式和函数。我已经尝试了各种快速措施,包括应该进行这种精确计算的措施,并且 none 已经成功。
如果我可以分享任何其他信息来帮助您回答我的问题,请告诉我。
尝试使用 PreviousYear DAX 函数,
Previous Paid Amount =
CALCULATE (
SUM ( LINE_ITEM[N_PAID_AMOUNT] ),
PREVIOUSYEAR( INVOICE[DT_START] )
)
Paid Amount LY =
CALCULATE(
INVOICE[Paid Amount],
FILTER(
ALLSELECTED('INVOICE'[Year]),
ISONORAFTER('INVOICE'[Year], MAX('INVOICE'[Year])-1, DESC)
)
) -
CALCULATE(
INVOICE[Paid Amount],
FILTER(
ALLSELECTED('INVOICE'[Year]),
ISONORAFTER('INVOICE'[Year], MAX('INVOICE'[Year])-2, DESC)
)
)
这个公式解决了我的问题。然而,它是可怕的。如果有人知道我如何才能做得更好,请告诉我。
我知道这可能是一个重复的问题,但经过大约 5 小时的搜索,我未能找到解决问题的方法。如果是,请提前致歉。
数据 我有三个处于 DIrectQuery 存储模式的 table。一个名为 LINE_ITEM,它与另一个 table INVOICE 具有一对多关系。 INVOICE table 与另一个 table CONTRACT 具有一对多关系。每份合同每年有一张发票。每个 INVOICE 都有一个或多个行项目,所有这些项目都有 N_PAID_AMOUNT.
目标 我正在计算每个 INVOICE 年支付金额的增加百分比。
限制 这个相同的 pbix 文件将用于做许多其他事情,并且需要非常灵敏。为了速度和简单性,我不想以任何方式操纵查询或关系。我想用测量或计算的列来解决这个问题。
我卡在哪里 我有一个公式,我正在使用它进行测量
Previous Paid Amount = CALCULATE(SUM(LINE_ITEM[N_PAID_AMOUNT]), YEAR(INVOICE[DT_START]) = YEAR(INVOICE[DT_START])-1)
它仅针对过滤器表达式中的第二次出现抛出错误 "Cannot find name '[DT_START]'."。如果我用
替换公式Previous Paid Amount = CALCULATE(SUM(LINE_ITEM[N_PAID_AMOUNT]), YEAR(INVOICE[DT_START]) = NOW())
它不会抛出错误,但显然不会帮助我计算我需要的东西。
我尝试过的其他东西 我试过使用 EARLIER DAX 函数,我试过将数据更改为导入模式,我试过许多其他公式和函数。我已经尝试了各种快速措施,包括应该进行这种精确计算的措施,并且 none 已经成功。
如果我可以分享任何其他信息来帮助您回答我的问题,请告诉我。
尝试使用 PreviousYear DAX 函数,
Previous Paid Amount =
CALCULATE (
SUM ( LINE_ITEM[N_PAID_AMOUNT] ),
PREVIOUSYEAR( INVOICE[DT_START] )
)
Paid Amount LY =
CALCULATE(
INVOICE[Paid Amount],
FILTER(
ALLSELECTED('INVOICE'[Year]),
ISONORAFTER('INVOICE'[Year], MAX('INVOICE'[Year])-1, DESC)
)
) -
CALCULATE(
INVOICE[Paid Amount],
FILTER(
ALLSELECTED('INVOICE'[Year]),
ISONORAFTER('INVOICE'[Year], MAX('INVOICE'[Year])-2, DESC)
)
)
这个公式解决了我的问题。然而,它是可怕的。如果有人知道我如何才能做得更好,请告诉我。