DAX 运行 总计 + 起始值

DAX running total + starting value

我对 DAX 世界还很陌生,但是四处滚动我成功地实现了一个累积的 (运行) 总计,并根据这个结构定义了一个度量:Running_Total_QTY:=CALCULATE(SUM(Reporting[QTY]),FILTER(ALL(Reporting[DATE_R]),Reporting[DATE_R]<=MAX(Reporting[DATE_R])))

对于看起来像这样的 table:

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_INIT,这是我从另一个 [=39] 那里收到的=] 看起来像这样:

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]

这个方法可行,但是效率很低而且很慢(数据集很大)。

如何在不使用 "fake" 平均值(或最大值、最小值等)的情况下直接从第二个 table 添加 QTY_INIT?我如何优化测量以获得更快的性能?

在此先感谢您的帮助。

此致

用这个代替你的 Average_starting_quantity 怎么样?

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

如果您的表格在 IDID1 上相关,交叉过滤器方向是双向的,

那你就可以用

StartingQty = MAX(Starting_Quantity[QTY_INIT])

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