Доброго времени суток! Вот уже день ломаю голову над формулой, не могу сделать. Прошу помочь с построением формулы. Мне нужно посчитать количество чеков в которых продаж больше 1 и цена проданной единицы больше 100руб. Когда в сводной в сроки ставлю номера чеков, то работает правильно, но как только я убираю номера чеков, сумма отличается от той когда с номерами.
Код
[Больше1Дороже100]=IF (
[Сумма по столбцу Количество ед продано] > 1
&& [МаксЦенаВчеке] > 100;
DISTINCTCOUNT ( Cheki[Документ] )
)
Мне кажется проблема в расчете максимальной цены в чеке
Код
[МаксЦенаВчеке]=
MAXX (
'Cheki';
DIVIDE ( [Сумма по столбцу Выручка]; [Сумма по столбцу Количество ед продано] )
)
Деление в этой мере производится чтобы узнать цену продажи единицы, в случае если продано несколько единиц.
Изменено: Lari - 06.02.2019 08:19:30(ввел обозначения мер)
Lari написал: Вот уже день ломаю голову над формулой, не могу сделать.
Формула где - в вычисляемом столбце таблицы или в мере? Если в мере, то какие измерения используются, если в таблице, то какие в ней столбцы? Вы же уже не первый день на форуме, уже должны понимать, что без контекста рассуждения чаще всего начинают сводиться к сферическому коню в вакууме.
Lari написал: Мне нужно посчитать количество чеков
Вы имеете в виду в итоге? И количество это всего в чеке или что в чеке есть строка, в которой значений "Количество ед продано" больше 1? Исходя из предположения, что в документе суммарно "Количество ед продано" быть больше 1 и цена кода больше 100. Версия для Excel 2016 и новее. Впрочем, переделывается и для 2013 заменой Var определений на их значение.
тут не совсем понял. если из сводной из строк убрать "Документ", то мера [Больше1Дороже100] выдает 12, но по моему условию таких чеков 3.Нужно чтобы считался верный результат равный 3-м.
Изменено: Lari - 06.02.2019 11:52:49(P.S. писал это сообщения а кода еще не было.)
Андрей VG, формула работает как я просил. Огромное спасибо!!! Формула космос, я бы с CALCULATE переставляя условия до скончания века не решил бы задачу(( Буду разбирать.
Познавательный для меня пример. Начал разбирать с CALCULATE, т.к. по книге итальянцев до SUMMARIZE еще не дошел Формула с SUMMARIZE в DaxStudio отработала практически в 2 раза быстрее. Вывод 1 , уточнил понимание таблицы в SUMX - это строки для которых оценивается выражение, и получается VALUES перечисляет номера документов для которых нужны данные. Вывод 2 CALCULATE в IF нужен для перехода контекста, а если использовать меры, то поскольку меры автоматически завертываются в CALCULATE, там его уже писать не нужно. Вывод 3 в расчете MAXX можно просто делить столбец на столбец, я же использовал меру, что является избыточным вычислением, т.к. X функция и так оценивает построчно, но максимум вычисляется в пределах одного чека из-за таблицыSUMX(VALUES ( Cheki[Документ].
функция FILTER идет изнутри наружу, получается мы имеем таблицу из одного столбца с уникальным списком документов и к этой таблице уже применяем условия на уже отброшенные столбцы выручки и количество единиц. Т.е. фильтруем таблицу по несуществующим столбцам. Перечитал определения и у итальянце и у Роба Колли, и у майкрософта, но что-то мне это не помогает((
Lari написал: получается мы имеем таблицу из одного столбца с уникальным списком документов
верно. Но FILTER - это классический итератор, значит, он создает для этой таблицы строковый контекст. Далее во втором аргументе используется CALCULATE, которая преобразует строковый контекст в контекст фильтра. То есть, например,
Код
CALCULATE ( SUM ( Cheki[Количество ед продано] ) )
вот эта часть теперь рассчитывается для каждой строки таблицы VALUES(Cheki[Документ]) с применением к модели данных фильтра = значение текущего документа. Все равно что для каждой строки этой таблицы считать меру. Представьте такую запись:
Максим Зеленский, большое спасибо за подробное объяснение принципа работы. 2 дня обдумывал и разбирал логику вычисления. Я неправильно и ограниченно представлял суть таблицы (первого параметра) FILTER и X-функций. В поиске виртуальной таблицы, созданной VALUES, наткнулся на статью (всё как объяснил Максим, только с картинкой) Прокрутить до главы Виртуальные таблицы