Страницы: 1
RSS
Циклические меры DAX
 
Здравствуйте, нужна помощь в решении следующей задачи.
Необходимо рассчитать два поля В пути (считается как Накопление расхождения за прошедшую дату) и Накопление расхождение (В пути + Расхождение в инкассации), они являются циклическими и BI выдает ошибку.


Прикрепляю файлы в эксель и BI и скрин нужного решения.

Возможно ли как то решить эту проблему с помощью DAX?
Изменено: Helga.h - 22.11.2022 12:40:51
 
Helga.h, DAX не работает с рекурсией. Если только заранее известно количество циклов, то можно заморочиться и прописать их все в мере через переменные. Где то тут на форуме Максим Зеленский даже приводил пример решения. Но я бы посоветовал поменять подход.
 
Спасибо, будем тогда дальше думать
 
Helga.h, я не понял, зачем вычислять значение на предыдущую дату, если можно вычислить за все даты до (включая) текущей?
Код
Накопление расхождения =
VAR curDate =
    MAX ( 'Календарь'[Date] )
VAR result =
    CALCULATE (
        [Расхождение в инкассации],
        ALL ( 'Календарь' ),
        'Календарь'[Date] <= curDate
    )
RETURN
    result
 
surkenny, большое спасибо! Это почти то что нужно. Единственное, мне необходимо чтобы учитывались фильтры по дате при расчете.
Имеются данные например за год, в фильтре я указываю нужный месяц и Накопленное расхождение должно считаться от 1 числа данного месяц, а сейчас цепляет и прошлые данные. Например, как в прикреплённом скриншоте, 1 и 2 числа 0 или пустое значение должно быть.
Не подскажите как это можно реализовать? Потыкалась сама, но видимо еще не достаточно навыков и знаний чтобы самостоятельно решить задачу(  
 
Helga.h, а если так?
Код
Накопление расхождения =
VAR lastVisibleDate =
    MAX ( 'Календарь'[Date] )
VAR result =
    CALCULATE (
        [Расхождение в инкассации],
        ALLSELECTED ( 'Календарь' ),
        'Календарь'[Date] <= lastVisibleDate
    )
RETURN
    result
 
surkenny, пробовала так, к сожалению тоже самое выдает.  
 
Helga.h, тогда так:
Код
Накопление расхождения =
VAR lastVisibleDate =
    MAX ( 'Календарь'[Date] )
VAR firstSelectedDate =
    CALCULATE ( MIN ( 'Календарь'[Date] ), ALLSELECTED ( 'Календарь' ) )
VAR result =
    CALCULATE (
        [Расхождение в инкассации],
        DATESBETWEEN ( 'Календарь'[Date], firstSelectedDate, lastVisibleDate )
    )
RETURN
    result
 
surkenny, огромнейшее спасибо, все работает
Страницы: 1
Наверх