Страницы: 1
RSS
Ошибка расчета формулы конверсии
 
Добрый день. Выявил ошибку см. вложение. Методом тыков выяснил, что это связано с мерой расчета конверсии. Ошибка возникает на офисе 2013 стандарт, в 2016 все ок. Есть идеи изменить меру, чтобы она работала и в 2013 офисе?

Мера должна считаться как сумма заказов (при условии что в этот день и по этому магазину были данные в графе in)/ in
Пример вложил
 
Доброе время суток.
Каков смысл в использовании INTERSECT в
Код
        INTERSECT (
            VALUES ( 'Запрос1'[Ключ] );
            CALCULATETABLE ( VALUES ( 'Запрос1'[Ключ] ); 'Запрос1'[in] <> BLANK () )
        )
:qstn:
 
Чтобы конверсия не считалась в те дни, когда нет данных в столбце In по ключу (дата+магазин), на листе с примером я вывел корректные итоговые данные, красным - неправильные
Изменено: mechanix 85 - 04.11.2020 14:15:46
 
Ещё раз, для чего нужен INTERSECT? Что вы получаете используя его?
 
Получаю реестр Ключей по заказам, которые есть в Ключах по графе in (не равно 0/пусто)
 
Цитата
mechanix 85 написал:
которые есть в Ключах по графе in (не равно 0/пусто)
Вы это получаете, используя
Код
CALCULATETABLE ( VALUES ( 'Запрос1'[Ключ] ); 'Запрос1'[in] <> BLANK () )
И ещё раз - зачем INTERSECT?
 
Цитата
Андрей VG написал:
Вы это получаете, используя Код 1CALCULATETABLE ( VALUES ( 'Запрос1'[Ключ] ); 'Запрос1'[in] <> BLANK () )
так я получу весь перечень ключей и сумму заказов
ДатаМагазинЗаказы_inКлюч
01.10.20460441054
01.10.2042441054
02.10.2041441064
02.10.2042441064
02.10.2041441064
02.10.20458441064
для примера эти данные не должны браться в расчет - в этот день и по этому магазину нет информации в графе in. Или я не понимаю какого-то подвоха
 
Цитата
mechanix 85 написал:
так я получу весь перечень ключей и сумму заказов
Я говорю не про всю меру, а про конкретную её часть - использование функции пересечения таблиц INTERSECT
1 таблица VALUES ( 'Запрос1'[Ключ] )
2 таблица CALCULATETABLE ( VALUES ( 'Запрос1'[Ключ] ); 'Запрос1'[in] <> BLANK () )
Для чего нужно получить пересечение - только одинаковые в двух таблицах 'Запрос1'[Ключ]
Что без использования пересечения изменится, если будет использоваться только CALCULATETABLE ( VALUES ( 'Запрос1'[Ключ] ); 'Запрос1'[in] <> BLANK () )
Изменено: Андрей VG - 04.11.2020 14:47:45
 
Если не брать пересечение таблиц, то формулу можно написать как заказы/in

но это будут некорректные данные, т.к. заказы прогружаются ежедневно, а in (это зашедшие покупатели) 1 раз в неделю и информация может в какой-то день не выгрузиться из-за тех. неполадок счетчиков
 
Цитата
mechanix 85 написал:
формулу можно написать как заказы/in
Не полное утверждение - Запрос1'[in] <> BLANK ()
Про экспериментируйте, выкиньте intersect и её первый аргумент VALUES ( 'Запрос1'[Ключ] ) и попробуйте найти отличия в результате
 
Смотрю, какие-то затруднения. Добро. Мера 2 без Intersect - попробуйте доказать, что он нужен и есть разница между мерой с ним и без него :)
 
Сработало правильно и в 2013 тоже! Благодарю

Код
=DIVIDE(
   SUMX(CALCULATETABLE(VALUES('Запрос1'[Ключ]);'Запрос1'[in]<>BLANK());CALCULATE(SUM('Запрос1'[Заказы_])));
   sum('Запрос1'[in]);
   BLANK())


зы: дуб я в dax
Изменено: mechanix 85 - 04.11.2020 15:24:02
 
Цитата
mechanix 85 написал:
Сработало правильно и в 2013 тоже!
А теперь всё же ответьте, пожалуйста - почему INTERSECT не нужен.
Изменено: Андрей VG - 04.11.2020 15:26:13
 
Потому, что на этапе CALCULATETABLE где in <> пусто отбираются уже нужные позиции, которые нужно проссумировать
 
mechanix 85, неполное вы даёте определение. Смотрите. У нас на входе INTERSECTION одна и таже таблица из одного столбца VALUES('Запрос1'[Ключ]). Только во втором аргументе вы её с помощью CALCULATETABLE фильтруете по некоторому признаку (не важно какому). Таким образом получившаяся таблица в результате применения CALCULATE - это подмножество значений таблицы первого аргумента. И их пересечение - одинаковые значения будут равны второму аргументу. Следовательно, можно упростить, исключив и первый аргумент и INTERSECTION. :)
Страницы: 1
Наверх