Страницы: 1
RSS
DAX, РешениеЧерезМеру, Отфильтровать результат вычислений по параметрам заданным в таблице.
 
Здравствуйте, помогите пожалуйста отфильтровать меру "нарастающий итог", не получается что-то.
В моих мерах используется ALL(ТаблицаДат) что бы я не писал в фильтрах после этого, какиебы даты не ставил ничего не получается.
ALL все съедает.
Нужно отфильтровать результаты, показать только те даты, которые я задаю в параметрах, все остальное показывать не нужно.
 
Доброе время суток
Подскажите, пожалуйста, почему:
Цитата
lostandleft написал:
отфильтровать меру "нарастающий итог",
в примере отсутствует мера с таким именем,
в примере вывода выделен диапазон дат 10.04.2020 - 20.04.2020, а в таблице "Период" введён 10.05.2020 - 20.05.2020,
в примере сводной используются меры с ограничением только сверху?
Вариант такого ограничения с верху для меры "Задолженность"
Код
=
VAR curDateMax = MAX ( 'Calendar'[Date] )
VAR periodMax = MAX ( 'Период'[ДатаМакс] )
RETURN
    IF (
        curDateMax <= periodMax;
        CALCULATE (
            'Период'[ДвижениеДень];
            FILTER ( ALL ( 'Calendar' ); 'Calendar'[Date] <= curDateMax )
        );
        BLANK ()
    )
 
Андрей VG,Спасибо за участие!
Ох, Андрей я опять со своими мыслями, которые как мне кажется понятны окружающим...Нарастающий итог - это мера Задолженность.

Извините за пример, я что-то месяц перепутал. Конечно же все в рамках одного месяца должно быть.
Ограничение нужно как сверху так и снизу!
Основная проблема в том, чтобы сделать ограничение в обе стороны.
т.е. не показывать те даты, которые прошли уже, до наступления диапазона.
При этом нарастающий итог все равно считать.
Ваша мера "обрубает" только хвосты, а мне нужно и начало.
Изменено: lostandleft - 01.08.2020 10:34:27
 
lostandleft, а что вам мешает для предложенного варианта рассчитать:  curDateMin, periodMin и использовать его в условии И фильтрации IF?
 
Код
=
VAR curDateMax = MAX ( 'Calendar'[Date] )
VAR startD = MAX('Период'[ДатаМин])
VAR periodMax = MAX ( 'Период'[ДатаМакс] )

RETURN
    IF (
        curDateMax <= periodMax;
                   if( curDateMax>= startD;
               
                                CALCULATE (
                                'Период'[ДвижениеДень];
                                FILTER ( ALL ( 'Calendar' ); 'Calendar'[Date] <= curDateMax )
                                 );
                                BLANK ()
               )
         ;blank()
   )


Получилось!!!
Андрей VG, Спасибо!
 
Цитата
lostandleft написал:
Получилось!!!
На мой взгляд, переусложнили - не мешело бы упросить выражение. Вариант, тоже местами некрасивый (вот тут да, возвращаясь невольно к другому обсуждению - у меня большой недостаток практики)
Изменено: Андрей VG - 01.08.2020 11:43:16
 
Андрей VG,
Крутая штука, мечтал о таком!
А как читать этот код?
что значит &&
Какая-то более человеческая, вернее более понятная логике человека, запись имеется?
Код
=MIN('Calendar'[Date]) >= MIN('Период'[ДатаМин]) 
&& MAX('Calendar'[Date]) <= MAX('Период'[ДатаМакс])
Изменено: lostandleft - 01.08.2020 14:08:34
 
&& - логическое «И»
 
Цитата
lostandleft написал:
Какая-то
Функция AND. Я правильно вас понимаю, вы не сторонник изучения справочников? :)
 
Цитата
Андрей VG написал:
Я правильно вас понимаю, вы не сторонник изучения справочников
:oops: аж стыдно стало.
 
Цитата
lostandleft написал:
аж стыдно стало.
Приношу свои извинения за подколку. Просто, ну если занимаетесь DAX, то как бы не мешало бы знать его базовые функции, чтобы декомпозируя задачу знать где остановиться. Собственно программирование и есть такой процесс декомпозиция задачи до того уровня, пока не будет найдено полное пересечение со встроенными функциями языка плюс логические связки и встроенные средства управления/ветвления потоком вычисления функций.
Изменено: Андрей VG - 01.08.2020 14:58:23
Страницы: 1
Наверх