DAX промежуточный итог + начальное значение - PullRequest
0 голосов
/ 15 мая 2018

Я довольно новичок во вселенной DAX, но прокручивая вокруг, мне удалось успешно реализовать накопленное (текущее) общее с мерой, определенной по этой структуре: Running_Total_QTY:=CALCULATE(SUM(Reporting[QTY]),FILTER(ALL(Reporting[DATE_R]),Reporting[DATE_R]<=MAX(Reporting[DATE_R])))

Для таблицы, которая выглядит какthis:

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 голосов
/ 15 мая 2018

Как насчет этого вместо вашего Average_starting_quantity?

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

Если ваши таблицы связаны с ID и ID1 с направлением перекрестного фильтра в обоих направлениях,

enter image description here

тогда вы можете просто использовать

StartingQty = MAX(Starting_Quantity[QTY_INIT])

, поскольку контекст фильтра на ID будет проходить до ID1.

...