Страницы: 1
RSS
Dax. Рассчёт доли по группе, сумма которых 100%
 
Доброго времени суток!
В сводной таблице в строках Магазин-торговая марка-товар, в значениях сумма. Как правильно составить меру для рассчёта доли чтобы сумма долей по магазинам была 100%, внутри магазина по тм, которые относятся к определённому магазину также, аналогично и по товарам по тм.
В файле модель и пример как хотелось бы
 
Доброе время суток.
Вариант.
Код
=Var numerator = SUM('Продажи'[1 показатель])
Var denominator = SWITCH(TRUE();
    HASONEVALUE('Товар'[Артикул]); CALCULATE(SUM('Продажи'[1 показатель]); ALL('Товар'[Наименование товара]));
    HASONEVALUE('Товар'[Наименование товара]); CALCULATE(SUM('Продажи'[1 показатель]); ALL('ТМ'[Торговая Марка]));
    HASONEVALUE('ТМ'[Торговая Марка]); CALCULATE(SUM('Продажи'[1 показатель]); ALL('ТМ'[Торговая Марка]));
    HASONEVALUE('Магазин'[Сеть]); CALCULATE(SUM('Продажи'[1 показатель]); ALL('Магазин'[Сеть]));
    1
)
Return DIVIDE(numerator; denominator; BLANK())
 
Андрей VG, спасибо огромное) обязательно попробую такой подход
 
А почему просто в сводной не использовать для суммы Дополнительные вычисления - % от суммы по родительской строке
 
Цитата
StepanWolkoff написал:
А почему просто в сводной не использовать
Так слишком просто :)
 
Добавлю ещё "итальянский" вариант (ISINSCOPE нет в Excel 2016, так что в PBI):
Код
PercOnParent = 
VAR CurrentSales = [SalesAmount]
VAR TradeMarkSales =
    CALCULATE ( [SalesAmount], ALLSELECTED ( 'Товар'[Наименование товара] ) )
VAR RetailChainSales =
    CALCULATE ( [SalesAmount], ALLSELECTED ( 'ТМ'[Торговая Марка] ) )
VAR TotalSales =
    CALCULATE ( [SalesAmount], ALLSELECTED ( 'Магазин'[Сеть] ) )
VAR RatioToParent =
    IF (
        ISINSCOPE ( 'Товар'[Наименование товара] ),
        DIVIDE ( CurrentSales, TradeMarkSales ),
        IF (
            ISINSCOPE ( 'ТМ'[Торговая Марка] ),
            DIVIDE ( CurrentSales, RetailChainSales ),
            IF ( ISINSCOPE ( 'Магазин'[Сеть] ), DIVIDE ( CurrentSales, TotalSales ) )
        )
    )
RETURN
    RatioToParent
 
StepanWolkoff, конечно можно  использовать)  но интересно ещё и альтернативные методы, до которых самой дойти не всегда получается 😁
 
Aleksei_Zhigulin, видела вариант с ISINSCOPE  в "руководстве по DAX", к сожалению в 2019 excel тоже не нашла ее
 
Цитата
Owlet написал:
ISINSCOPE
в power pivot такой функции нет, как альтернатива - HASONVALUE и HASONFILTER в связке с IF
 
Подскажите пожалуйста, если я меняю представление отчета с сжатой формы на табличную (в этом примере из строк "Сеть" убирается), тогда по артикулу, наименованию показывает 100%, а ТМ считается верно. Как изменить формулы с ответов #2 и #6 чтобы расчет был корректный?
Изменено: Owlet - 15.02.2021 14:28:05
 
Vladimir Chebykin, думаю, Вы сможете подсказать ответ на следующий вопрос) Если в сводной таблице в форме структуры (как в примере), кроме наименования товара нужно, например, еще артикул и код, то невозможно разместить наименование, артикул и код, в одной строке? лучше слева от таблицы подтянуть со справочника ВПРом / ИНДЕКС+ПОИСКПОЗ?
Изменено: Owlet - 15.02.2021 14:57:49
 
Owlet, чойта невозможно? Выводите их в виде мер и не надо ничего ВПРить.
Вот горшок пустой, он предмет простой...
 
PooHkrd,  для меня сейчас Америка открылась  :oops:,
Цитата
Выводите их в виде мер
должна же быть какая-то формула в этой мере?

все примеры, которые я встречала уж слишком идеальные, всегда используется только название (а оно может меняться). а вот код или артикул нет
Изменено: Owlet - 15.02.2021 16:10:02
 
Цитата
Owlet написал:
невозможно разместить наименование, артикул и код, в одной строке?
Вы про это?
 
Vladimir Chebykin, Вот пример. к каждому товару относится код и артикул, их нужно выводить. Вот в картинках,  в сжатой форме, оно разбивается на несколько строк. В голубой таблице пример в форме структуры - поставщик-торговая-марка -товар, а рядом я выводила ВПР, или чем другим, кода и артикула. Можно ли чтобы наименование, код и артикул были в одной строке?
В формате таблицы, если сделать долю по родительской сроке показывает везде 100%
В ответе #12 написано, что можно их в меры, но я не знаю как еще.
Изменено: Owlet - 16.02.2021 09:52:09
 
Я не понимаю, вроде в одну строку Вы данные загоняете (скрин по середине), тогда в чем вопрос? Доля неверно считается? Если в этом, то просто неправильно настроили. Приложите пример этих данных и что должно получиться в итоге - тогда разберемся
 
Цитата
Owlet написал:
должна же быть какая-то формула в этой мере?
Конечно, вот она
Код
_Артикул:=IF( ISFILTERED( 'Товар'[Наименование товара] ); VALUES( 'Товар'[Артикул] ) )

Только желательно все же в измерения загонять артикул, а мерой выводить наименование, ибо артикулы обычно уникальные, а вот наименования не всегда.
Изменено: PooHkrd - 16.02.2021 10:30:41
Вот горшок пустой, он предмет простой...
 
PooHkrd, Спасибо! Могу сказать даже больше, артикул тоже не уникальный, уникальный только код  :D Но тут я смогу уже применить

Цитата
Конечно, вот она
попробовала на оригинальном файле вывести так наименование по коду)) замечательно работает! правда, количество мер уже слегка пугает  :D но это же не предел
Изменено: Owlet - 16.02.2021 10:47:01
 
Vladimir Chebykin, файл такой же как исходный здесь, изменила только структуру и добавила код (чтобы максимально похоже было)
 
Немного правок в меру:
Код
=Var numerator = SUM('Продажи'[1 показатель])
Var denominator = SWITCH(TRUE();
    HASONEVALUE('Продажи'[Наименование товара]); CALCULATE(SUM('Продажи'[1 показатель]); ALL('Продажи'[Наименование товара];'Продажи'[Код];'Продажи'[Артикул]));
    HASONEVALUE('ТМ'[Торговая Марка]); CALCULATE(SUM('Продажи'[1 показатель]); ALL('ТМ'[Торговая Марка]));
    HASONEVALUE('Магазин'[Сеть]); CALCULATE(SUM('Продажи'[1 показатель]); ALL('Магазин'[Сеть]));
    1
)
Return DIVIDE(numerator; denominator; BLANK())

Ключевое: Вы запутались в наименованиях полей. В мерах пишите поля из справочника, а в сводную пихаете поля из таблицы фактов. Отсюда и разночтения. Кроме того, здесь становятся избыточны HASONVALUE по артикулу и коду, т.к. они не добавляют дополнительной развертки, т.е. находятся на одном уровне с наименованием товара.
 
Vladimir Chebykin, Спасибо за помощь и объяснения))
Страницы: 1
Наверх