Страницы: 1
RSS
Power BI: мера в итоговой строчки выводит некорректное значение, ...хотя построчно все считает правильно
 
Коллеги, добрый день! Помогите, пжл, с формулой в DAX, которая должна выводить только положительные значения. Проблема в том, что построчно все считается правильно, а вот итого в таблице выдает ноль. Вот сама формула.
Код
Мера_Дз_Покупатели_Сальдо2 = 
    SUMX(VALUES('Даты снятия счетчиков_Свод'[Контрагент]),
    VAR Dz = 
     CALCULATE(SUM('Даты снятия счетчиков_Свод'[Сумма с НДС]), ALL('яСправочник_Календарь'))
     - CALCULATE(SUM('Счет_Карточка_31_ДС'[Кредит_оборот]), ALL('яСправочник_Календарь'))
    RETURN
        IF( Dz < 10, 0, Dz/1000)) 
[P]Файл pbix большой 440 кб (хотя я его почистил), поэтому только ссылка на гугл.диск https://drive.google.com/file/d/1CgJiYljZ3PUH37c31iPBtega2yKAJdLu/view?usp=sharing
 
Александр, добрый день. Ссылка не общедоступная, пароль просит.
 
Прошу прощения, не доглядел
https://drive.google.com/file/d/1CgJiYljZ3PUH37c31iPBtega2yKAJdLu/view?usp=sharing
 
Код
 = 
    VAR Dz = 
     CALCULATE(SUM('Даты снятия счетчиков_Свод'[Сумма с НДС]), ALL('яСправочник_Календарь'))
     - CALCULATE(SUM('Счет_Карточка_31_ДС'[Кредит_оборот]), ALL('яСправочник_Календарь'))
    RETURN
        IF( Dz < 10, 0, Dz/1000)
 
Vladimir Chebykin, у меня изначально был такой вариант, но если вы сложите сумму всех чисел, то итого с этой суммой не сойдется, т.к. в итого попадают и отрицательные значения
 
Александр, надо точнее формулировать задачи. Я понял, что надо
Цитата
Александр написал:
выводить только положительные значения.
. По факту Вам нужно сделать виртуальные вычисления, затем отфильтровать значения менее 10 и после подвести итог.
Вариант с SUMX в данном случае катит, но только в связке с SUMMARIZE
 
Модель открыть не могу, меру не тестировал, но направление вот такое:
Код
Мера_Дз_Покупатели_Сальдо2:= 
   SUMX(
      ADDCOLUMNS(
         VALUES( 'Даты снятия счетчиков_Свод'[Контрагент] );
         "temp";
         VAR Dz = 
            CALCULATE(SUM('Даты снятия счетчиков_Свод'[Сумма с НДС]), ALL('яСправочник_Календарь')
            - CALCULATE(SUM('Счет_Карточка_31_ДС'[Кредит_оборот]), ALL('яСправочник_Календарь')
         RETURN
            IF( Dz < 10; 0; Dz/1000) );
      [temp])
Вот горшок пустой, он предмет простой...
 
Код
 = 
    SUMX(
        SUMMARIZE(
           VALUES('яСправочник_Контрагенты'),
            'яСправочник_Контрагенты'[Контрагент],
            "DZ",
            (CALCULATE(SUM('Даты снятия счетчиков_Свод'[Сумма с НДС]), ALL('яСправочник_Календарь'))
            - CALCULATE(SUM('Счет_Карточка_31_ДС'[Кредит_оборот]), ALL('яСправочник_Календарь')))/1000
        ),
        IF( [DZ]< 10, 0, [DZ])
     )
 
Алексей, все верно, кроме:
1. В VALUES нужно вставить контрагента из справочника (который Вы не могли увидеть без модели)
2. В CALCULATE закрывающие скобки пропущены
А так результат идентичен
 
Vladimir Chebykin, на коленке писал. Но SUMMARIZE я зарекся использовать после адских клинов в моей модели. Работаю только через ADDCOLUMNS. Если надо через несколько столбцов, то собираю CROSSJOIN'ом таблицу и добавляю расчетный столбец, отфильтровываю строки для которых результат расчета получился = BLANK() и результат скармливаю SUMX. Если поковыряться тут уже предлагал такие решения пару-тройку раз.
Вот горшок пустой, он предмет простой...
 
Коллеги, спасибо большое! Оба варианта рабочие  :)  
 
Цитата
PooHkrd написал:
Но SUMMARIZE я зарекся использовать
, кстати, буквально вчера тоже столкнулся с подобной проблемой. На модели данных в несколько 10 млн. строк некорректно отрабатывала. Я уже подумал, что DAX неправильно понимаю, начал составлять пример для форума- все работает, переношу в модель - не работает. В итоге тоже попробовал решить через ADDCOLUMNS, и взлетело с первого раза! Спс за информацию, с учетом и своего опыта, видимо тоже пересмотрю свои взгляды.
 
Vladimir Chebykin, если что такую конструкцию утащил у итальянцев из этой статьи. Они там показали что из себя представляет SUMMARIZECOLUMNS, который не применишь в Экселе. Попробовал - самолет.
Вот горшок пустой, он предмет простой...
 
Благодарю!
 
Доброе время суток.
Коллеги, сможете пояснить, зачем эти SUMMARIZE, ADDCOLUMNS? Просто указание поля из используемого измерения даёт требуемый результат.
Код
Мера_Дз_Покупатели_Сальдо2 = 
    SUMX(VALUES('яСправочник_Контрагенты'[Контрагент]),
    VAR Dz = 
     CALCULATE(SUM('Даты снятия счетчиков_Свод'[Сумма с НДС]), ALL('яСправочник_Календарь'))
     - CALCULATE(SUM('Счет_Карточка_31_ДС'[Кредит_оборот]), ALL('яСправочник_Календарь'))
    RETURN
        IF( Dz < 10, 0, Dz/1000))
Или я что-то делаю не так?
 
Андрей VG, может и так. У меня моделька не открывается, поэтому показал направление, думал там сложное что-то.
Вот горшок пустой, он предмет простой...
 
Андрей VG,
Цитата
Андрей VG написал:
зачем эти SUMMARIZE, ADDCOLUMNS? Просто указание поля из используемого измерения даёт требуемый результат.
Действительно, нужно было в исходной формуле вместо VALUES('Даты снятия счетчиков_Свод'[Контрагент]) указать VALUES('яСправочник_Контрагенты')  :)
Но зато разобрали использование SUMMARIZE и ADDCOLUMNS  :D  
Страницы: 1
Наверх