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]))
如果您的表格在 ID
和 ID1
上相关,交叉过滤器方向是双向的,
那你就可以用
StartingQty = MAX(Starting_Quantity[QTY_INIT])
因为 ID
上的过滤器上下文将流向 ID1
。
我对 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]))
如果您的表格在 ID
和 ID1
上相关,交叉过滤器方向是双向的,
那你就可以用
StartingQty = MAX(Starting_Quantity[QTY_INIT])
因为 ID
上的过滤器上下文将流向 ID1
。