Страницы: 1
RSS
If в мере DAX, Как сделать расчет меры с учетом Kоэф?
 
Добрый день!

Подскажите, возможно ли в мере в PowerPivot использовать функцию IF?

Есть таблица, в которой идет определение количества по разным категориям. Это количество посчитано в мере
Нужно к этой же мере прибавить количество одного из показателей но только по условию - если Показатель1 (например), то прибавлять Показатель3, но с K=0,7, а если показатель2, то к нему показатель3 не прибавлять. Причем показатель3 должен быть=0

Есть пример, там более понятно. В измерении это рассчитать не получается, хотя там IF работает корректно
 
Если честно, то у вас и в файле не очень понятно.
Но если мне нужно в мере проверять наличие какого-то значения в таблице, то я создаю вспомогательную меру через сочетание MAXX и ADDCOLUMNS, а уже в итоговой мере через IF проверяю значение вспомогательной:
Код
МераСуть:=MAXX(
    ADDCOLUMNS(
        'Частное';
        "Суть2";
        IF('Частное'[Суть]="Порча";
            1;
            IF('Частное'[Суть]="Недостача";
                2;
                3
                )
            )
        );
        [Суть2]
    )
Эта мера создает виртуальный столбец с формулой IF, как если бы вы его прописали в вычисляемом столбце.
Судя по примеру в DAX вы не совсем новичок, так что дальше должны разобраться сами, но если не получится, помогу, просто сейчас со временем напряг.
Кстати, можно еще сделать таблицу-справочник, в которой прописать к каким группам применять какие коэффициенты, связать с вашей таблицей "Частное" и тащить значения в меру через ADDCOLUMNS и RELATED. Так даже проще, я думаю.
Изменено: PooHkrd - 24.11.2017 17:47:46
Вот горшок пустой, он предмет простой...
 
Спасибо, почти все сработало, но вот итоги считает не правильно :(

Думаю что в мере не получится итог правильным сделать, т.к. эта формула сначала суммирует все сути, а умножает на 0,7 (т.к. это первое значение в IF)
Есть ли вариант проделать такой фокус с прибавлением na и умножением, но через измерение?

В приложении пример2, в котором я использовал ваш совет, но там видно где не правильно и как должно быть
 
Это потому что вы не корректно применили прием, который я предложил.
Вы создали виртуальный столбец, что-то в нем посчитали, после чего создали таблицу и в ней что на что-то умножили, после чего значения из этих виртуальных столбцов перемножили между собой. У меня есть сильное подозрение что вы усложняете ваши расчеты.
ADDCOLUMNS нужно использовать не так - это просто замена вычисляемому столбцу, который сам по себе в модели вам не нужен. Попробуйте расписать нужные вам вычисления в отдельных вычисляемых столбцах, напишите меру на основе этих столбцов, и уже после этого переносите вычисления из столбцов в меру при помощи функции. Так вам будет понятнее.
Т.е. распишите ваш IF в столбце, потом в нем же умножайте нужный столбец на коэффициент, и после этого агреггируйте этот столбец нужной вам мерой. Как только вы увидите корректный результат - переносите все вычисления уже в меру.
Изменено: PooHkrd - 27.11.2017 11:25:50
Вот горшок пустой, он предмет простой...
 
Цитата
Raritet написал:
Есть пример, там более понятно.
Не-а, что-то вообще ничего не понял ни в примере, ни в описаниях. Нагородили слишком. Можно проще и понятнее описание сделать?
Есть ощущение, что всё решается одним простым CALCULATE+FILTER, но понять задачу до конца пока не смог
F1 творит чудеса
 
Максим Зеленский - Задача такая - есть суть - na=12,Недостача=32,Порча=56. Нужно перераспределить сумму из NA на порчу и недостачу, но с коэффициентом (0,3 и 0,7). При этом NA должен быть уменьшен до 0.

PooHkrd - В примере 3 я разложил расчеты на отдельные куски - не помогло. В итогах считает не верно

p.s. Все что красным в примере3 - это значит посчитано не верно (там слева сводная таблица, где считает не правильно, а справа обычная таблица, в которой я вручную посчитал цифры, которые должны получиться в левой таблице.

p.p.s. Думаю что надо это считать не в мере, а в строках измерения, чтобы итог корректно суммировал. Но там не получается тоже посчитать :(
 
Пример 3
 
Мера Частное плюс NA:
Код
=
SUMX (
    VALUES ( 'Частное'[Суть] );
    CALCULATE (
        SWITCH ( VALUES ( 'Частное'[Суть] ); "Порча"; 0,7; "Недостача"; 0,3; 0 )
    )
        * CALCULATE ( SUM ( 'Частное'[КолВо] ); 'Частное'[Суть] = "na" )
        + CALCULATE (
            IF ( VALUES ( 'Частное'[Суть] ) = "na"; 0; SUM ( 'Частное'[КолВо] ) )
        )
)

Деление потом нормально работает
F1 творит чудеса
 
Оооо, сработало!! Спасибо, Максим. Я знал что решение есть, но сам бы так скоро не додумался. Функция SWITCH - вообще не знал как работает
 
А от меня спасибо за пример использования VALUES.
Взял на вооружение.
Вот горшок пустой, он предмет простой...
Страницы: 1
Читают тему
Наверх