Страницы: 1
RSS
Мера DAX с вычислениями по столбцам из разных таблиц в зависимости от выбранных фильтров
 
Форумчане, здравствуйте!

Я новичок в Power Pivot и DAX.

Создаю модель в Power Pivot и задался вот таким вопросом:

Есть две таблицы:
  1. Продажи на рынке в разбивке по месяцам
  2. Продажи отдельных игроков рынка в разбивке по месяцам
Мерой хочу посчитать количество продаж на рынке (данные из первой таблицы), а если в сводной таблице в фильтре выбран какой-то игрок рынка (или несколько), то нужна сумма продаж по этому ритейлеру(ам) уже из второй таблицы.

Это возможно?

Список ритейлеров неполный и не охватывает всего рынка, поэтому разнёс их по разным таблицам.

Изначально все данные пробовал запихнуть в одну таблицу, но в таком случае рыночные продажи суммировались с продажами отдельных ритейлеров и если в фильтре ничего не выбрано, то они отображались некорректно (т.е. рынок + ритейлеры в общем итоге)

Надеюсь, что понятно объяснил.

Пример во вложении.

Заранее спасибо за отклики!)
Изменено: ADimov - 16.04.2018 23:34:22
 
Вот так будут выглядеть меры:
Код
Продажи_Рынок:=SUM('Рынок'[Количество])
Продажи_ритейлеры:=SUM('Ритейлеры'[Количество])
Продажи_универсальные:=IF(ISFILTERED('Ритейлеры'[Ритейлер]);[Продажи_ритейлеры];[Продажи_Рынок])

И мой совет: сделайте отдельную таблицу "Календарь". а то можете получить очень неожиданные результаты.
 
StepanWolkoff, спасибо большое! Всё просто оказывается) нужно было мне просто покопаться в функциях фильтра. А календарь я создаю - в примере его нет, т.к. с заданным интервалом дат календарь получился довольно большим и файл с ним не пролазил на форум(
 
StepanWolkoff,а нет, не сходится( При фильтрации сводной по "Ритейлерам" и использовании меры "Продажи_универсальные" общий итог считается неверно - в нём отображается сумма по рынку, а должна быть сумма по ритейлерам. Не подскажете, как исправить это?
 
Цитата
ADimov написал:
При фильтрации сводной по "Ритейлерам" и использовании меры "Продажи_универсальные" общий итог считается неверно - в нём отображается сумма по рынку, а должна быть сумма по ритейлерам.
Покажите в файле. У меня на вашем примере, если произведена хоть какая-то фильтрация по ритейлерам, то итоговая сумма в таблице по ритейлерам идет. Пример: ставлю фильтр по ритейлеру "А", получаю итоговую сумму 135 и в колонке по ритейлеру и в колонке "Общий итог"
 
StepanWolkoff, файлик не могу приложить, т.к. на работе сейчас, не могу с компа рабочего( выкладываю фото. 135 совпадает, но это я данные неудачно подобрал - получилось, что в 2018 году суммы продаж ритейлеров и рынка равны. А вот по 2017 году уже идёт расхождение. P.S.: ааа, я вас не понял, я не про те 135 говорил. Вот, на фото измерение "ритейлеры" в строках, а общий итог считается неправильно
Изменено: ADimov - 17.04.2018 15:35:23 (Дополнил сообщение, добавил фото)
 
ADimov, ну почему не правильно? По ритейлерам прямого фильтра нет в строке "Общий итог" поэтому он возвращает значение по рынку. Уточните тогда в каком случае выводить сумму по рынку?
 
StepanWolkoff, по рынку нужно выводить сумму только в том случае, если измерения "Ритейлеры" нет ни в области фильтров, ни в области строк, ни в области столбцов
 
StepanWolkoff, кстати, а "прямой фильтр" - это только когда измерение находится в области фильтров? Когда измерение в области строк или столбцов - это уже не прямой фильтр?
 
ADimov, ну а чем тогда не устраивает две отдельные меры? Т.е. получается же когда вы добавляете или убираете измерение "ритейлеры" все равно перестраиваете таблицу, так поменяйте меру на нужную.
Цитата
ADimov написал:
"прямой фильтр" - это только когда измерение находится в области фильтров?
Нет, когда в строках или столбцах тоже прямой фильтр, это видно даже на вашем скриншоте.
Изменено: StepanWolkoff - 17.04.2018 15:55:50
 
StepanWolkoff, вот нашёл решение:

Код
Продажи_ритейлеры:=sumx(SUMMARIZE('Ритейлеры';[Ритейлер];"Расчёт";sum('Ритейлеры'[Количество]));[Расчёт])

Подобная задача была вот в этой теме: https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=103564&MID=s

Правда, Максим Зеленский ругал SUMMARIZE в теме по ссылке... В рабочем файле переделаю формулу в соответствие с его рекомендациями)
Изменено: ADimov - 17.04.2018 16:25:05
 
Цитата
StepanWolkoff написал:
ну а чем тогда не устраивает две отдельные меры?
Ну, как по мне, с одной мерой меньше путаницы для будущих пользователей: нужны продажи ритейлеров - в фильтр ставишь соответствующее измерение и видишь их, а поменять меру можно и забыть...

Кстати, как вариант, было бы ещё удобно в справочник "Ритейлеры" добавить пункт "Прочие ритейлеры" и рассчитывать их как "сумма по рынку" - "сумма по ритейлерам". В таком случае сумму в общих итогах менять не нужно будет.

Нужно будет так сделать...
 
Цитата
ADimov написал:
вот нашёл решение:
И что это дает? Удалите ритейлеров из строк, что покажет мера? Сумму по ритейлерам покажет. Бессмысленно, это то же самое, что и
Код
Продажи_ритейлеры:=SUM('Ритейлеры'[Количество])

Плюс вы взяли не лучший вариант из той темы.
Цитата
ADimov написал:
как вариант, было бы ещё удобно в справочник "Ритейлеры" добавить пункт "Прочие ритейлеры"
С точки зрения модели данных - единственное верное решение, на мой взгляд
F1 творит чудеса
 
Максим Зеленский, да, я уже понял, что неправильно сделал( наделал несколько мер, подтянул не ту и почему-то подумал, что всё правильно считается(

Цитата
Максим Зеленский написал:
Плюс вы взяли не лучший вариант из той темы.
Да, это я уже отметил в сообщении выше) я ваши варианты попробовал сначала - почему-то не получилось у меня их применить( к примеру, одна из мер считалась в модели данных, а при перетаскивании её в сводную выскакивало окошко с ошибкой.

Тогда добавлю пункт "Прочие ритейлеры")

Максим Зеленский, StepanWolkoff, спасибо вам большое за помощь!
Страницы: 1
Наверх