https://www.myonlinetraininghub.com/power-query-if-statements
Автор оригинала: Mynda Treacy
Операторы Power Query if, вложенные if, 'if or' и 'if and' немного отличаются от написания формул IF в Excel, но как только вы освоитесь с ними, они станут довольно простыми.
На самом деле, формулы Power Query IF, IF OR и IF AND даже проще, чем аналоги в Excel.
Смотрите видео:
Загрузите файл Excel:
https://d13ot9o61jdzpp.cloudfront.net/files/power_query_if_statements.xlsx
Операторы Power Query if
Примечание: в этом руководстве предполагается, что вы уже знаете, как писать Excel IF, IF OR и IF AND формулы. Если вы этого не сделаете, то вот ссылки на учебные пособия по формулам IF и IF OR и IF AND формулам. Это также предполагает, что вы знакомы с загрузкой данных в Power Query и добавлением пользовательских столбцов. Если нет, то вы можете ознакомиться с Power Query здесь.
Хорошо, давайте посмотрим на пример; ниже у нас есть некоторые данные о заказах в Power Query.
Мы хотим добавить столбец "Delivery Status", чтобы указать, был ли заказ доставлен.
Логика на английском языке такова: если столбец "Delivery Status" не пуст, значит, заказ выполнен.
На вкладке “Добавить столбец” ленты щелкните “Условный столбец”. Откроется диалоговое окно (см. ниже) с простым меню "Указать и щелкнуть", которое поможет вам создать оператор "if" (примечание: "null" в Power Query означает пустой):
Обратили внимание, как вы можете прочитать строку "if" в диалоговом окне и это действительно имеет смысл на английском языке?
Отступление: Возможно, однажды формулы Excel догонят нас, и мы будем благословлены подобным диалоговым окном.
И мы вернулись; после нажатия кнопки ‘ОК’ у нас теперь есть новый столбец для Delivery Status:
И если вы проверите M-код в расширенном редакторе, вы увидите, что приведенная ниже формула была написана для вас (выделена синим цветом):
Итак, вы можете видеть, что обычный оператор Power Query if очень легко создать с помощью графического интерфейса Conditional Column.
К сожалению, вы не можете использовать условный столбец для каждого сценария «if». Иногда вам придется воспользоваться диалоговым окном "Добавить пользовательский столбец" (смотрите следующий пример) и написать их самостоятельно. В этом случае вам следует знать о ключевых отличиях инструкции Excel IF, а именно:
· ‘if’ в Power Query - это строчный регистр
· Вместо запятых, разделяющих аргументы value_if_true и value_if_false, у нас есть слова then и else (в нижнем регистре).
· null означает пробел в силовом запросе
· Формулы запроса Power чувствительны к регистру
Операторы Power Query If Or
Заметили ли вы, что в приведенном выше примере не учитываются клиенты, которые приходят в магазин и сами забирают свои заказы? Это типы заказов ‘In Store Pickup’.
Итак, что нам на самом деле здесь нужно, так это оператор IF OR.
Логика на английском языке такова: если столбец " delivery date " не пуст или тип заказа " In Store Pickup ", то заказ выполнен.
К сожалению, нет хорошего графического интерфейса, который помог бы нам написать оператор "if or", поэтому в данном случае мы используем вкладку "Добавить столбец" > кнопку "Добавить пользовательский столбец":
Откроется диалоговое окно, и вы должны присвоить своему столбцу имя, а затем ввести свою формулу в поле "Пользовательская формула столбца:":
Давайте рассмотрим формулу более внимательно:
if [Delivery Date] <> null or [Order Type] = "In Store Pickup" then "Completed" else null
На английском языке приведенная выше формула гласит:
Если Дата Доставки не указана пустой или тип заказа "Самовывоз из магазина", то верните "Завершено", в противном случае оставьте ячейку пустой
Каждый логический тест разделяется символом ‘or’. Красиво и легко!
Операторы Power Query If And
Операторы Power Query ‘if and’ одинаково просты. Давайте рассмотрим пример, используя некоторые данные о заработной плате сотрудников, показанные ниже:
Мы хотим добавить столбец для расчета бонусов для сотрудников руководящего звена.
Логика на английском такова: если уровень - Исполнительный, а цель достигнута - Да, то рассчитайте бонус как зарплату х 5%, в противном случае бонус равен нулю.
Как и в случае с оператором "if or", мы должны использовать диалоговое окно "Добавить столбец" > "Добавить пользовательский столбец", чтобы написать эту формулу:
if [Level] = "Executive" and [Target Met] = "Yes" then [Salary] * .05 else 0
И вы можете увидеть результаты в колонке бонусов ниже:
Подождите, а как насчет бонусов для менеджеров? На самом деле менеджеры получают 10% бонус, если они достигают своих целей.
Мы можем предусмотреть два уровня бонуса, используя вложенный оператор if.
Вложенные операторы if в Power Query
Используя те же выборочные данные, наша логика на английском языке гласит: если уровень - исполнительный, И цель достигнута - Да, то рассчитайте бонус как зарплату х 5%, в противном случае, если уровень - менеджер, И цель достигнута - Да, то рассчитайте бонус как зарплату х 10%, в противном случае бонус равен нулю.
И формула такова:
if [Level] = "Executive" and [Target Met] = "Yes" then [Salary]*.05 else
if [Level] = "Manager" and [Target Met] = "Yes" then [Salary]*.10 else 0
Ключ в том, чтобы поместить следующий оператор "if" после первого ‘else’. Мы поместили формулу в две строки, чтобы было легче увидеть вложенность. Вы можете продолжать вставлять "if" после каждого ‘else’.
Еще про Power Query
Начните с руководства по введению в Power Query.
Нажмите здесь, чтобы ознакомиться с дополнительными руководствами по Power Query в нашем блоге.
И если вы хотите быстро войти в курс дела, пожалуйста, ознакомьтесь с этим курсом Power Query.