Страницы: 1
RSS
Как прописать текстовое условие в PP или PQ
 
Имеется массив данных в PQ и PP, необходимо, чтобы расчет бьл внутри самой сводной таблицы со ссылкой на другие запросы и т.д. В примере указана сама формула, которая была тупо подставлено рядом со сводной таблицей. Хотелось бы это увидеть внутри свода.
 
Сомневаюсь что можно что-то предложить не видя реальный пример Модели данных и списка всех возможных вариантов комментариев из диапазонов [CSL_Preliminary Month.xlsx]for CSL'!B:L и [CSL_Preliminary Month.xlsx]Причины реджектов'!A:B и [CSL_Preliminary Month.xlsx]CSL Comments'!A

Оставили бы все рабочие листы на которые ссылается формула и рабочую модель с частью данных.
Фантазировать в данном случае сложно.
 
Donskoy,да по сути без разицы будет там ссылка на диапазоны или нет, пусть будет такая формула:

=ЕСЛИОШИБКА(ЕСЛИ(A13="ZRE";B13;ЕСЛИ(A13="ZREV";B13;ЕСЛИ(C13="";"";ЕСЛИ(F13=100%;"сервис 100%";ЕСЛИ(E13="discontinued";"Вывод из ассортимента";)))));"Дефицит продукции на складе из-за колебаний заказов")

Я почему-то вообще не могу понять как вставить эти данные, т.е. создать такой столбец в свод, прописать это в запросе PQ? Тогда как?
 
Такой анализ вполне возможно сделать, и в сводной будет показываться текстовый вывод. Формула будет примерно такая же как в Экселе - несколько вложенных IF. Но без исходных данных предложить вам конкретику как-то сложно.
Вот горшок пустой, он предмет простой...
 
Саму формулу прописывать в Power Query создав вычисляемый столбец? Вот пример, из него нужно создать сводную при помощи PQ.
Изменено: vinmax - 01.11.2018 22:48:03
 
Цитата
vinmax написал:
Саму формулу прописывать в Power Query создав вычисляемый столбец?
Да хоть бы и так. Можно и в модели данных вычисляемый столбец такой же формулой сделать, можно меру с этой формулой сделать. Тут ведь все зависит от ваших целей.
Вот горшок пустой, он предмет простой...
 
А как это сделать проще всего? Я пытался и мне выдает ошибку расчета( Цель получить из простыни в примере сводную таблицу, которую можно будет крутить потом.
 
А как это сделать проще всего? Я пытался и мне выдает ошибку расчета( Цель получить из простыни в примере сводную таблицу, которую можно будет крутить потом.
Прописываю формулу простую и он видит ошибку:
Код
=IF([SaTy]="ZRE";1;0)
Изменено: vinmax - 01.11.2018 22:48:43
 
Код
= if [SaTy]="ZRE" then 1 else 0

Ваша формула
Код
=IF([SaTy]="ZRE";1;0)

Это для вычисляемого столбца в модели данных на языке DAX.
Изменено: PooHkrd - 31.10.2018 12:42:45
Вот горшок пустой, он предмет простой...
 
В PP создать вычисляемое поле:
Код
=IFERROR(SWITCH(TRUE();
OR([Sales Document Type]="ZRE"; [Sales Document Type]="ZREV"); [Return reason];
isblank([Sales Document Type]); blank();
[CSL CAF]=1; "сервис 100%";
[In\Out]="discontinued"; "Вывод из ассортимента";
blank());"Дефицит продукции на складе из-за колебаний заказов")


Цитата
PooHkrd написал:  Можно и в модели данных вычисляемый столбец такой же формулой сделать, можно меру с этой формулой сделать. Тут ведь все зависит от ваших целей.
А как меру создать с подобным анализом? PooHkrd приведите пример, если возможно, а то на словах сложно воспринимается)
 
Ну, например так:
Код
TextMeasure:=IFERROR(IF(VALUES('Таблица1'[Code])="ZRE";"Yes";"No");BLANK())

Вместо Yes/Nо никто не запрещает использовать значения других мер, которые вычисляют необходимые текстовые значения для данного контекста.
Изменено: PooHkrd - 31.10.2018 14:04:57
Вот горшок пустой, он предмет простой...
 
PooHkrd, а это единственное решение? или есть еще какие-то иные конструкции, кроме IFERROR(IF(VALUES...  ?
 
Цитата
Donskoy написал:
или есть еще какие-то иные конструкции, кроме IFERROR(IF(VALUES...
Не понял вопрос. Использовать можно любые конструкции которые приведут к тому, чтобы произошло сравнение вычисляемого элемента в контексте конкретной ячейки сводной таблицы с эталоном, и на основании сравнения уже строите выводы хоть через IF, хоть через SWITCH, да тысячи их, тут уж на что фантазии хватит. Я ж просто на пальцах пример показал.
Изменено: PooHkrd - 31.10.2018 15:50:58
Вот горшок пустой, он предмет простой...
 
Donskoy,Не получакется, считает криво(((
 
Главное считает, а логику можете и сами доработать. Или приложите сюда Модель данных для ясности, с комментариями что не так считается
 
Donskoy,В принципе формулу он воспринимает, если в правде или ложь писать выражение словами, а вот при ссылке на ячейку сразу ошибка.
 
Доброе время суток.
Цитата
vinmax написал:
а вот при ссылке на ячейку сразу ошибка.
Ошибка не в ссылке на ячейку, а в том, что вы пытаетесь ко всему прочему вернуть число 1. А Power Pivot не Excel - бардака с типами данных по столбцам не терпит.
 
Да, очень странно, еще в добавок Power Pivot поле определил как "Целое число", хотя явно поле служит для Текстовых комментариев.

Сделайте хотя бы так:
=IF([Sales Document Type]="ZRE";[Return reason];"1")

Цитата
Андрей VG написал:
Ошибка не в ссылке на ячейку, а в том, что вы пытаетесь ко всему прочему вернуть число 1. А Power Pivot не Excel - бардака с типами данных по столбцам не терпит.
Андрей, подскажите, а в PP есть функция по явному преобразованию Числа в Текст?
 
Цитата
Donskoy написал:
есть функция по явному преобразованию Числа в Текст?
Да, конечно и не только текста, но и даты - FORMAT.
 
Цитата
Donskoy написал:
Сделайте хотя бы так:=IF([Sales Document Type]="ZRE";[Return reason];"1")
С 5 раза прокатило))) Значит буду прописывать в ""
 
Цитата
vinmax написал:
С 5 раза прокатило))) Значит буду прописывать в ""
либо так:
= IF([Sales Document Type]="ZRE";[Return reason];FORMAT(1;"#"))
 
Цитата
Donskoy написал:
либо так:= IF([Sales Document Type]="ZRE";[Return reason];FORMAT(1;"#"))
Donskoy,Получилось прописать формулу, но теперь он ругается:

Функции IF передано слишком много аргументов. Максимальное число аргументов для этой функции составляет 3.

Формула получилась:
Код
=IF(OR(SAP[SaTy]="ZRE";SAP[SaTy]="ZREV");SAP[Returns.JointReturnReason];IF(SAP[Rj]="";"";IF((SAP[Order BuM]-SAP[Del. BuM]=0);"Сервис 100%");IF(SAP[InOut.In-out status]="Discontinued";"Вывод из ассортимента";"1";IF(AND(SAP[Rj]="";SAP[Usage]="");SAP[masterdata Materials_DU.ProductVariant];"Дефицит"))))
Изменено: vinmax - 02.11.2018 11:07:36
 
В этом фрагменте скорее всего ошибка: после "Вывод из ассортимента" должно идти очередное IF, а у вас значение выводится снова "1":

IF(SAP[InOut.In-out status]="Discontinued";"Вывод из ассортимента";"1"

То есть и правда вы передали в этом фрагменте IF более  2 параметров. Проверьте еще раз.
 
Цитата
Donskoy написал:
В этом фрагменте скорее всего ошибка: после "Вывод из ассортимента" должно идти очередное IF, а у вас значение выводится снова "1": IF(SAP[InOut.In-out status]="Discontinued";"Вывод из ассортимента";"1"То есть и правда вы передали в этом фрагменте IF более  2 параметров. Проверьте еще раз.
Уже прописал так и все равно то же окно с ошибкой про 3 раза
Код
=IFERROR(IF(OR(SAP[SaTy]="ZRE";SAP[SaTy]="ZREV");SAP[Returns.JointReturnReason];IF(SAP[Rj]="";"";IF((SAP[Order BuM]-SAP[Del. BuM]=0);"Сервис 100%");IF(SAP[InOut.In-out status]="Discontinued";"Вывод из ассортимента";IF(AND(SAP[Rj]="";SAP[Usage]="");SAP[Comments];"Дефицит"))));"Деф")
Изменено: vinmax - 02.11.2018 13:44:31
 
Цитата
vinmax написал:
=IFERROR(IF(OR(SAP[SaTy]="ZRE";SAP[SaTy]="ZREV");SAP[Returns.JointReturnReason];IF(SAP[Rj]="";"";IF((SAP[Order BuM]-SAP[Del. BuM]=0);"Сервис 100%");IF(SAP[InOut.In-out status]="Discontinued";"Вывод из ассортимента";IF(AND(SAP[Rj]="";SAP[Usage]="");SAP[Comments];"Дефицит"))));"Деф")

=IFERROR(
      IF(OR(SAP[SaTy]="ZRE";SAP[SaTy]="ZREV");SAP[Returns.JointReturnReason];
           IF(SAP[Rj]="";"";
                IF((SAP[Order BuM]-SAP[Del. BuM]=0);"Сервис 100%");
                       IF(SAP[InOut.In-out status]="Discontinued";"Вывод из ассортимента";
                              IF(AND(SAP[Rj]="";SAP[Usage]="");SAP[Comments];"Дефицит"))));"Деф")

Выделил красным места ошибок, в первом случае лишняя скобка, во втором случае проверьте количество скобок всего.
Чтобы не запутаться делайте иерархией или сделайте swich.
 
Donskoy, спасибо! Получилось) а как использовать формулу swich? Какой принцип?
 
Цитата
Donskoy написал:
или сделайте swich
А как тут сделать SWITCH? Через него можно перебирать условия по одному выражению, а у ТС в условии каждого IF оценка идет по разным столбцам.
Вот горшок пустой, он предмет простой...
 
vinmax, Donskoy, кнопка цитирования не для бездкумного копировния. Исправляйте сообщения.

Предложите название темы по задаче. Модераторы заменят.
 
Цитата
PooHkrd написал:
А как тут сделать SWITCH?
А такой вариант SWITCH сработает так же как и IF?
Код
=IFERROR(SWITCH(TRUE();
OR(SAP[SaTy]="ZRE";SAP[SaTy]="ZREV"); SAP[Returns.JointReturnReason];
SAP[Rj]=""; "";
(SAP[Order BuM]-SAP[Del. BuM]=0); "Сервис 100%";
SAP[InOut.In-out status]="Discontinued"; "Вывод из ассортимента";
AND(SAP[Rj]="";SAP[Usage]="");SAP[Comments];
""Дефицит");"Деф")
 
Сообщение №28. Помощь скрыта.
Страницы: 1
Наверх