Страницы: 1
RSS
Dax мера PWBI для расчета % от суммы по родительской строке, Расчетная мера для не определнного кол-ва групп иерархии с расчетом % по родительской строке
 
Добрый день.
Необходимо помощь, написать меру в PWBI для расчета % от суммы по родительской строке (аналог Excel см.скрин.), группировка и кол-во уровней иерархии определятся набором полей, т.е. может быть категория-группа-скю, или клиент-группа-скю, или клиента-категория-подгруппа-вес-скю. нам необходимо получит % от суммы в каждой из иерархий. (таблица объёмная порядка 10млн.строк)

Картинки удалены - превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: lyapa - 13.09.2019 16:00:51
 
И вам дорого дня.
Вы предлагаете аналог вашей модели по картинке слепить самостоятельно?
Вместо картинки приложите лучше файл-пример, согласно правил форума, а то ответ тоже придется в фотошопе рисовать, а я в нем не силен.
Вообще мне видится что нужен CALCULATE c ALLEXCEPT. Но конкретику без примера не скажу, хрустальный шар барахлит.
Вот горшок пустой, он предмет простой...
 
Примеры приложил. Мера должна работать как пример в excel
 
Добрый день.

Пример рабочего варианта.
 
Спасибо за пример, такую реализацию рассматривали.
https://www.daxpatterns.com/parent-child-hierarchies/

Но нужен динамический вариант автоматического определения уровней иерархии (в вашем варианте, каждый уровень необходимо прописать в формуле), как быть если в табл. от 10 до 30 возможных уровней (колонок) построения иерархии, необходимо авто определение (как в excel)
Изменено: lyapa - 13.09.2019 17:38:16
 
Добрый день!
Вопрос актуальный. Если уровней много, как быть?
Возможно у кого-то появилось решение.  
Изменено: ogololobov2009 - 16.11.2019 18:53:23
 
Доброе время суток
Цитата
ogololobov2009 написал:
Если уровней много, как быть?
Использовать формулы Excel для составления меры ;)
 
Андрей VG, Спасибо Вам огромное. Неделю пытался решить!!!
 
Цитата
Андрей VG написал:
Использовать формулы Excel для составления меры
Добрый вечер!

Подскажите, как изменить данную меру, если необходимо считать количество ячеек, а не сумму чисел.
Пробовал изменить на SUM на COUNT, но видать где-то ошибся.
Изменено: Дмитрий - 29.03.2021 19:42:24
 
Цитата
Дмитрий написал:
Пробовал изменить на SUM на COUNT, но видать где-то ошибся.
Ну, самое простое - скопировать в блокнот Ctrl+H заменить SUM( на COUNT(
Код
=Var levelUpSum = SWITCH(TRUE();
ISFILTERED('TSheet'[team]); CALCULATE(COUNT('TSheet'[value]); ALL('TSheet'[team]));
ISFILTERED('TSheet'[group]); CALCULATE(COUNT('TSheet'[value]); ALL('TSheet'[group]));
ISFILTERED('TSheet'[country]); CALCULATE(COUNT('TSheet'[value]); ALL('TSheet'[country]));
ISFILTERED('TSheet'[region]); CALCULATE(COUNT('TSheet'[value]); ALL('TSheet'[region]));
COUNT('TSheet'[value]))
Return COUNT('TSheet'[value]) / levelUpSum
 
Цитата
Андрей VG написал:
Ну, самое простое - скопировать в блокнот Ctrl+H заменить SUM( на COUNT(
Это я сделал.
Но полагаю, что код нужно тоже изменить, так как структуру таблицы поменял.

Когда упростил, до формы, что в примере, всё сработало.
Но когда вставил в свою версию таблицы, сложенной из двух "умных" и справочных, как показано в уроке "План-факт анализ в сводной таблице с Power Pivot и Power Query", то мера работает некорректно.

Исходная задача - получить развернутый отчёт по всем подкатегориям всех продуктов, выставить показатель в процентах (% от родительской суммы) и увидеть разницу в процентах (динамику).

Изначально:
1. Создавал меры по каждому месяцу
2. Применял вычисление к каждому месяцу - % от родительской суммы
3. Создавал меру разницы между мерами месяцев

Но в таком случае, вычисления не учитывались, разница выводилась в абсолютных значениях.

Пришел к выводу, что желаемый результат могу получить, если каждый месяц изначально будет посчитан мерой % от суммы в родительской строке.

Может есть путь проще...
Изменено: Дмитрий - 30.03.2021 12:02:16
 
Цитата
Дмитрий написал:
Это я сделал.
Нет, вы не сделали, не следует механически подходить к решению. В примере измерениями являются столбцы таблицы фактов. Раз у вас измерениями являются таблицы справочники, то следовало использовать их.
Код
=Var levelUpCOUNT = SWITCH(TRUE();
ISFILTERED('СпрTeam'[team]); CALCULATE(COUNT(TSheet_Jan[value]); ALL('СпрTeam'[team]));
ISFILTERED('СпрGroup'[group]); CALCULATE(COUNT(TSheet_Jan[value]); ALL('СпрGroup'[group]));
ISFILTERED('СпрCountry'[country]); CALCULATE(COUNT(TSheet_Jan[value]); ALL('СпрCountry'[country]));
COUNT(TSheet_Jan[value]))
Return COUNT(TSheet_Jan[value]) / levelUpCOUNT
 
Спасибо!
Всё заработало!!!
Страницы: 1
Наверх