Страницы: 1
RSS
DAX Проверка условия в столбце на итерацию выше (предыдущую), Необходимо вычислить значение в вычисляемом столбце предварительно проверив значение другого столбца на одну строчку выше
 
Добрый день!
  Есть вычисляемый столбец который считает количество дней между датами столбцов [текущая дата] и [ПредДата]
Кол дней в продаже = DATEDIFF([ПредДата];[дата];DAY)

Мне нужно задать условие по которому вычисление разницы дат в столбцах  [текущая дата] и [ПредДата]  происходить только, если в столбце [] значение на один уровень выше <> 0 в противном случае формула DATEDIFF([ПредДата];[дата];DAY) должна возвращать 0
Т.е. в столбце [Кол дней в продаже] вместо значения 35 должно стоять значение 0

Подскажите как этого можно добиться?
 
Здравствуйте.
Есть два способа решить данную задачу:
1. через Power Query - он даёт возможность создать вычисление с отсылкой на строку выше или ниже. Пример можно посмотреть здесь
2. загрузить в Power Pivot отдельную таблицу, где будут столбцы [Текущая дата] и [Итог нараст]. Связать столбец [Текущая дата] этой таблицы со столбцом [ПредДата] вашей рабочей таблицы. В рабочую таблицу подтянуть данные из столбца [Итог нараст] промежуточной таблицы и уже в формуле вычисления даты ссылаться на этот столбец - итог на фотографии.
 
turbidgirl, добрый день. Спасибо за ответ! 1. Вариант мне не подходит 2. Можно ли второй вариант реализовать через dax формулы? (если я правильно понимаю dax формулы позволяют создавать виртуальные таблицы и связи проводить вычисление и записывать в вычисляемый столбец  
 
Цитата
a.matsul написал:
Можно ли второй вариант реализовать через dax формулы?
Можно, но на картинках формулы писать не очень удобно. Если же примера не будет, то поищите поиском по форуму темы где используется функция EARLIER. собсна она вам и нужна.
Вот горшок пустой, он предмет простой...
 
Попробуйте эту формулу поставить:
Код
=IF(LOOKUPVALUE(Table1[НарастИтог];Table1[дата];'Table1'[ПредДата])=0;0;DATEDIFF([ПредДата];[дата];DAY))
 
Цитата
a.matsul написал:
если в столбце [] значение на один уровень выше <> 0
F1 творит чудеса
 
turbidgirl, добрый день! Спасибо за ваше терпение! Ваша формула работает отлично!
Цитата
=IF(LOOKUPVALUE(Table1[НарастИтог];Table1[дата];'Table1'[ПредДата])=0;0;DATEDIFF([ПредДата];[дата];DAY))
Для тех кто будет в будущем искать решение задачи "расчет кол-во дней товаров находящихся в продаже по данных движения товара без учета дней, когда товар отсутствовал на стоке" во вложении файл с рабочей формулой turbidgirl и тестовым набором данных.  
Изменено: a.matsul - 14.02.2020 14:52:17
Страницы: 1
Наверх