我知道这可能是重复的问题,但是经过大约5个小时的搜索,我未能找到解决问题的方法。抱歉。
数据 我有三个处于DIrectQuery存储模式的表。一个叫做LINE_ITEM,它与另一个表INVOICE有一对多的关系。 INVOICE表与另一个表CONTRACT具有一对多关系。每个合同每年都有一份发票。每个INVOICE都有一个或多个订单项,所有订单项都有一个N_PAID_AMOUNT。
目标 我正在计算每个发票年支付的金额的增长百分比。
限制 相同的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函数,尝试将数据更改为导入模式,还尝试了许多其他公式和函数。我尝试了各种快速措施,包括应该进行这种精确计算的措施,但都没有成功。
让我知道我是否可以分享其他信息来帮助您回答我的问题。
答案 0 :(得分:1)
尝试使用PreviousYear DAX功能,
Previous Paid Amount =
CALCULATE (
SUM ( LINE_ITEM[N_PAID_AMOUNT] ),
PREVIOUSYEAR( INVOICE[DT_START] )
)
答案 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)
)
)
这个公式解决了我的问题。但是,这太可怕了。如果有人对我可以做得更好有见解,请告诉我。