DAX运行总计+起始值

时间:2018-05-15 15:32:50

标签: dax powerpivot running-total

我对DAX世界相当新,但滚动我成功地实现了累积(运行)总计,并在此结构中定义了一个度量:Running_Total_QTY:=CALCULATE(SUM(Reporting[QTY]),FILTER(ALL(Reporting[DATE_R]),Reporting[DATE_R]<=MAX(Reporting[DATE_R])))

对于看起来像这样的表:

ID  DATE_R          QTY
A1  5/11/2018 9:00  5
A1  5/11/2018 9:01  10
A1  5/11/2018 9:01  -5
A1  5/11/2018 9:02  50
A1  5/11/2018 9:05  -20
B1  5/11/2018 9:00  3
B1  5/11/2018 9:01  -20
B1  5/11/2018 9:01  4
B1  5/11/2018 9:02  20
B1  5/11/2018 9:03  10

问题是我需要在此运行总计中添加一个起始QTY - QTY_INIT ,我从另一个表中看到这样的内容:

ID1 QTY_INIT
A1  100
B1  200

通过反复试验,我成功地创建了第二个衡量平均值(1个项目!)的度量,如下定义:

Average_starting_quantity:=CALCULATE(AVERAGE(Starting_Quantity[QTY_INIT]),FILTER(ALL(Starting_Quantity[ID1]),Starting_Quantity[ID1]=LASTNONBLANK(Reporting[ID],TRUE())))

然后只将两个指标加在一起。

Running_plus_total:=[Running_Total_QTY]+[Average_starting_quantity]

此方法有效,但效率非常低且速度非常慢(数据集非常大)。

如何直接从第二个表中添加QTY_INIT而不使用“假”平均值(或者max,min等等)?如何优化测量以获得更快的性能?

提前感谢您的帮助。

此致

1 个答案:

答案 0 :(得分:0)

如何而不是Average_starting_quantity

StartingQty = LOOKUPVALUE(Starting_Quantity[QTY_INIT],
                          Starting_Quantity[ID1], MAX(Reporting[ID]))

如果您的表格与IDID1相关,并且双向过滤方向都是双向的,

enter image description here

然后你可以使用

StartingQty = MAX(Starting_Quantity[QTY_INIT])

因为ID上的过滤器上下文将流向ID1