Страницы: 1
RSS
Расчет остатков по предыдущему дню, DAX EARLIER работает, но при малом количестве столбцов
 
Добрый день, столкнулся с такой проблемой, не могу правильно написать фильтрацию расчетных таблиц в даксе.

Ниже формула которая работает, когда в таблице лишь даты и тип действия.
Код
= CALCULATE(SUM([Остатки])-SUM([Продажи])+SUM([Возвраты]);FILTER('Таблица2';([Дата])<=EARLIER('Таблица2'[Дата])))
Как только добавляю магазины и номенклатуру, начинается неверный расчет. Я все еще не могу правильно фильтровать таблицы, помогите пожалуйста.

Пример прикладываю, в нем две таблицы, где рассчитана верно формула и где не получается ее сделать.
Изменено: bereteli - 26.06.2020 17:37:41
 
Доброе время суток
Цитата
bereteli написал:
Как только добавляю магазины и номенклатуру, начинается неверный расчет
Что вы под этим подразумеваете?
Точно в вычисляемом столбце для "Таблица1" использовали только <, а не <= как в "Таблица2"? Не стесняйтесь описывать детали.
 
Андрей VG, Это моя ошибка. Но должно быть как в работающей таблице. <=
Смысл всей поставленной задачи рассчитать остаток на каждую позицию каждого магазина каждого дня. А у меня получается, что он считает только для всей сети, складывая все товары всех магазинов на каждый день.
 
Цитата
bereteli написал:
на каждую позицию каждого магазина каждого дня
Вот, уже лучше. Теперь вернёмся к исходной функции
Цитата
bereteli написал:
EARLIER('Таблица2'[Дата])
означает, что берётся текущее значение даты по строке. Следовательно, вам нужно добавить сравнение текущего значения и позиции и магазина с соответствующими значениями всей таблицы, чтобы брались только они.
Изменено: Андрей VG - 26.06.2020 20:04:00
 
Андрей VG, я пытался в all и в allselected вписывать все параметры allselected:склад, позиция, дата, но все  не то. Что я делаю не так? Куда я должен вставить, что бы оно понимало уникальность :дата,магазин, товар. Подскажите пожалуйста
 
Цитата
bereteli написал:
в all и в allselected вписывать все параметр
Зачем? Вы идёте путём волшебных заклинаний?
Часть
Код
FILTER(
    'Таблица2';([Дата])<=EARLIER('Таблица2'[Дата])
    && 'Таблица2';([Магазин])=EARLIER('Таблица2'[Магазин])
)

Товар добавите самостоятельно
 
Андрей VG, почему-то после двух амберсандов не видит таблицы;(
 
Цитата
bereteli написал:
почему-то после двух амберсандов не видит таблицы;(
Приношу свои извинения, воспользовался вашим порнографическим оформлением кода :(  Поленился самостоятельно написать.
Код DAX:
=
CALCULATE (
    SUM ( 'Таблица1'[Остатки] ) - SUM ( [Продажи] )
        + SUM ( [Возвраты] );
    FILTER (
        'Таблица1';
        'Таблица1'[Дата] <= EARLIER ( 'Таблица1'[Дата] )
            && 'Таблица1'[Склад] = EARLIER ( 'Таблица1'[Склад] )
            && 'Таблица1'[Товар] = EARLIER ( 'Таблица1'[Товар] )
    )
)
 
Андрей VG, прошу прощения за свои коды. И спасибо большое!
Страницы: 1
Наверх