首页 文章

DAX运行总起始值

提问于
浏览
2

我是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

    怎么样而不是你的 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 .

相关问题