特定数据模型的按年通胀计算

时间:2019-05-24 16:37:50

标签: powerbi dax powerbi-desktop

我知道这可能是重复的问题,但是经过大约5个小时的搜索,我未能找到解决问题的方法。抱歉。

数据 我有三个处于DIrectQuery存储模式的表。一个叫做LINE_ITEM,它与另一个表INVOICE有一对多的关系。 INVOICE表与另一个表CONTRACT具有一对多关系。每个合同每年都有一份发票。每个INVOICE都有一个或多个订单项,所有订单项都有一个N_PAID_AMOUNT。

Screenshot of relevant Data Model as it appears in the power bi relationship view.

目标 我正在计算每个发票年支付的金额的增长百分比。

限制 相同的pbix文件将用于执行许多其他操作,并且需要非常敏感。为了快速和简单起见,我不想以任何方式操纵查询或关系。我想用测量或计算的列来解决这个问题。

我被困在哪里 我有一个公式,正在使用中

Previous Paid Amount = CALCULATE(SUM(LINE_ITEM[N_PAID_AMOUNT]), YEAR(INVOICE[DT_START]) = YEAR(INVOICE[DT_START])-1)

它引发错误“找不到名称'[DT_START]'”。仅针对过滤器表达式中的第二次出现。如果我将公式替换为

Previous Paid Amount = CALCULATE(SUM(LINE_ITEM[N_PAID_AMOUNT]), YEAR(INVOICE[DT_START]) = NOW())

它不会引发错误,但显然不能帮助我计算所需的东西。

我尝试过的其他事情 我尝试使用EARLIER DAX函数,尝试将数据更改为导入模式,还尝试了许多其他公式和函数。我尝试了各种快速措施,包括应该进行这种精确计算的措施,但都没有成功。

让我知道我是否可以分享其他信息来帮助您回答我的问题。

2 个答案:

答案 0 :(得分:1)

尝试使用PreviousYear DAX功能,

Previous Paid Amount =
CALCULATE (
    SUM ( LINE_ITEM[N_PAID_AMOUNT] ),
    PREVIOUSYEAR( INVOICE[DT_START] )
)

Check this link for reference

答案 1 :(得分:0)

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)
    )
)

这个公式解决了我的问题。但是,这太可怕了。如果有人对我可以做得更好有见解,请告诉我。