DAX动态过滤器使用相关表中的两列

时间:2018-05-18 15:01:41

标签: ssas powerbi dax

我需要使用DAX进行一些简单的计算,但我不确定如何获得与Excel公式中相同的结果。 首先,我的数据结构如截图所示:

Matrix with data

度量来自一个表, PactDelivered 是来自相关表的属性,该属性通过关系连接。

我真正需要做的就是将下面的公式翻译成DAX: enter image description here

计算 B3-C3-D3 时没有问题,但我有一个问题,如何计算 - B4 + C4 部分。当然它应该是动态的,所以如果要计算10号包的结果,那么它会从10号和11号中取出数字。

编辑:

Alexis Olson 修改代码后,我得到了类似下面的内容,但它还没有工作。请注意,PactDelivered在其他表中而非措施。不知道为什么,但它根据NextPack值计算包的结果。我尝试添加另一个基本为NextPack -1的变量,并尝试使用它来计算返回的总和,但也没有效果。

Cancellations:=

var NextPack = MAX('Order'[PactDelivered]) + 1

var NextOrders = CALCULATE(SUM('Fact DropOff'[OrdersSentOut]) + sum('Fact DropOff'[OrdersReturned]), 'Order'[PactDelivered] = NextPack)

return  SUM ('Fact DropOff'[OrdersSentOut]) - SUM ('Fact DropOff'[OrdersReturned] ) - SUM('Fact DropOff'[ActiveSubscriptions]) -  NextOrders

after edits

EDIT2: 来自事实的样本数据: fact

来自维度: dimension

关系: Relationship

1 个答案:

答案 0 :(得分:1)

尝试这样的措施:

Measure = 
    VAR NextPact = MAX(Orders[PactDelivered]) + 1
    VAR NextOrders = CALCULATE(SUM(Orders[OurdersSentOut]) - SUM(Orders[OrdersReturned]),
                         Orders[PactDelivered] = NextPact)
    RETURN SUM(Orders[OurdersSentOut]) - SUM(Orders[OrdersReturned]) -
           SUM(Orders[ActiveSubscriptions]) - NextOrders

首先,我们通过获取当前索引并添加1来计算下一个索引。然后计算该索引的已发送减去的回报。最后,从当前行计算中减去该值。