- M-язык, M-код — базовая теория в Power Query Excel
- Видеокурсы по Excel
- По воде или что такое М-код
- Отображение М-кода
- Базовая правка работы с М-кодом
- Значения и запросы (выражения)
- Отдельные значения (индивидуальные)
- Отдельные значения, созданные функцией
- Структурированные данные
- Классический список
- Негабаритный список
- Последовательные списки
- Запись Запись
- Таблицы
- Запросы (выражения) Подробнее о выражениях
- Арифметические операторы
- Сравнение — операторы сравнения
- Завершено (объединено)
- Логический
- Комментарии
- Лен ин — строительство
- Имена переменных — Имена переменных
- Каждое утверждение
- If Then Else — построение
- Функция
- Ошибки
- попробовать . иначе
- Другие образцыгде
- Всего
- Если
- Павел Ласбк — автор сайта
- Пока нет комментариев
M-язык, M-код — базовая теория в Power Query Excel
Видеокурсы по Excel
В сотрудничестве с SEDUO я создал несколько видеокурсов:
- Как работать с Excel – научитесь эффективно использовать Excel – самый популярный ( рейтинг 97 %, более 13 000 студентов, + 750 положительных отзывов ) – Получить курс
- MaxiCourse Excel – получите лучшую работу, больше денег, станьте незаменимым ( более 6 часов просмотра, 160 уроков ) – Получить курс
- G-таблицы. — если не нравится Excel, воспользуйтесь курсом на Google-таблицах
Что это такое, что делать, как отображать М-код в Power Query в Excel
Это очень похоже на Power BI.
По воде или что такое М-код
Это часть редактора PowerQuery. Иногда упоминается как М-код, М-язык, М-куд, М-язык.
Это функциональный язык для создания запроса для работы с таблицами. В основном он написан Excel в самом PowerQuery на основе ваших действий, но почему бы не взглянуть на этот язык глубже? Выясните, что язык совсем не сложный и на нем легко можно делать то, что занимает много времени. Эффективное использование возможностей М-кода сэкономит вам много работы.
В следующем тексте мы рассмотрим:
Отображение М-кода
Как я могу увидеть/отобразить его? Или как отобразить ряд формул?
Если вы находитесь в редакторе PowerQuery, вы должны отобразить строку формулы. На ленте Отображение просто установите флажок Строка формул , и появится строка формул с М-кодом. Я также рекомендую включить Настройки запросов (если у вас их нет/не видно).
Кроме того, вы можете просмотреть расширенный редактор. Если вы находитесь в редакторе PowerQuery, вы должны отобразить строку формулы. На ленте Вид щелкните значок Расширенный редактор
.
Расширенный редактор содержит триосновные части:
- Имя таблицы
- Пользовательский код
- Возможные ошибки
Базовая правка работы с М-кодом
По сути, M — это код о значениях (Values) и запросах/выражениях (Expressions), о которых я расскажу позже в этой статье.
Если у вас уже есть созданный М-код ( например, нажав на соответствующий значок ) в любом выбранном разделе (этапе) запроса, измените этот код, нажав на формулу ( добавлять и улучшать ). Затем подтвердите изменение клавишей Enter . Или вы можете отменить изменения, нажав X или нажав Esc .
Кроме того, в строку формул можно вставлять функции через Fx ( но об этом в отдельной статье ).
Внимание при промывке языка учитывает строчные и заглавные буквы. «JakNaExcel» отличается от «Jaknaexcel», отличается размером букв > другое слово.
Подробнее о справочных материалах можно получить непосредственно в Microsoft по адресу https://docs.microsoft.com/cs-cz/powerquery-m/index
.
Возможно, библиотеки доступны при вводе = #share в командной строке ( пока просто уберу ):
= #общий
Значения и запросы (выражения)
М-куду делится на два (три) основных раздела. Или, если первый раздел — «Значения», второй раздел — «Выражения». Кто-то помечает этот раздел примечаниями.
Значение – это часть информации о данных или:
- Значения могут быть:
- инсла
- текст
- Логическое значение
- двоичный
- дата
- иас
- .
- Значения также:
- списки
- запись таблицы (строки)
- списки списков и т.д.
- списки таблиц
- таблица
- .
Запрос естьто, что можно оценить. Или, если я оцениваю, я могу вернуть некоторое «значение». Из запроса 1 + 1 я могу вычислить это выражение и получить значение 2.
Вопросы будут перечислены далее в этой статье.
Примечания , если вы хотите иметь какую-то информацию и знать о них, вы можете дополнить их примечаниями. Они не нужны для функционирования кода, но часто необходимы для вашего лучшего обзора и ориентации ( Мне нужны личные заметки ). // комментарий или */ для многострочного /* , снова будет изменен дальше.
Давайте подробнее рассмотрим ценности и вопросы.
Отдельные значения (индивидуальные)
Отдельные значения являются элементом для всех других значений (например, запись состоит из отдельных значений, см. ниже).
- 125,44 встроенный
- «HowToExcel» текст
- Истина логическое значение
- null на самом деле пустое значение, даже по дизайну отличается графически в таблицах
Отдельные значения, созданные функцией
Используя функцию, вы можете компилировать в основном данные о времени и дате (состоящие из функции):
- #time (часы, минуты, секунды) — время создания — #time (10, 42, 20)
- #date (годы, месяцы, дни) — дата создания — #date (2018, 12, 31)
- #datetime (годы, месяцы, дни, часы, минуты, секунды) — — .
- #datetimezone (годы, месяцы, дни, часы, минуты, секунды, смещение-часы, смещение-минуты) — — .
- #duration (дни, часы, минуты, секунды) — — .
Подробнее о функциях в отдельной главе.
Структурированные данные
В основном это списки
Классический список
Простые списки, такие как названия дней, месяцев:
= <1, 2>
Негабаритный список
PowerQueryдля негабаритных списков значение Список отображается в первой таблице, а затем значения данного списка отображаются только при переходе по нему.
Последовательные списки
Вы можете создавать последовательные списки в формате , где x — это две точки от какого значения, а затем до какого значения. Например:
= <«a»..»f»>
Не путайте списки с записями.
Запись Запись
Список — это упорядоченная последовательность полей. Каждое поле состоит из имени поля, которое однозначно идентифицирует это поле и его значения. Каждое значение может быть значением любого типа ( Информацию о значениях см. выше ).
Запись (Record) определяется с помощью квадратных скобок [], затем вставляется имя, которое идентифицирует это поле. Знак равен. Будет отправлено значение этого поля.
= [Имя = «Павел», Функция = «MVP», Город=»Брно»]
Я могу записывать записи. В PowerQuery вы увидите запись, по которой можно щелкнуть ( аналогично описанному выше списку ).
= [Person = [Name = «Jan», Vmk = 38]]
Также возможны пустые записи, [] — пустая запись.
В Записи (Record) тоже можно сослаться на ту запись, но об этом в отдельной статье.
Таблицы
Таблица на самом деле представляет собой упорядоченную последовательность строк, где каждая строка представляет собой список (см. описание списка выше).
Таблица создается с помощью функции #table, когда отдельные строки записываются в виде списка <«A», 1>с группой записей снова в фигурных скобках.
= #table(<«Буквы», «Инсла»>, <<«A», 1>, <«B», 2>, <«C», 3>>)
Можно создать пустую таблицу, используя пустые списки во внутренней функции #table(). #table (<>, <>) создает пустую таблицу. Точно так же на таблицу можно ссылаться по индексу строки, когда строка начинается с нуля и имя столбца вквадратные скобки, но об этом в отдельной статье.
Таблицы можно создавать, например, из списка (List):
Подробнее о таблицах я расскажу в другой статье
Запросы (выражения) Подробнее о выражениях
Запрос (выражения, формулы) — это все, что можно вычислить и вернуть значение. Само значение является запросом 😉 Вычислите значение 1 и верните 1. Примеры выражений:
- 1 + 1 — дает 2
- 3 > 2 — оценивается как истина
- «Пол» & «Lasák — оценивается как «Pavel Lasák»
- Text.Upper («Hello World») – оценивается как «HELLO WORLD»
В вопросах мы рассмотрим практическое использование.
Арифметические операторы
M kud может ( так же, как и другие языки программирования ) классические арифметические операторы +, -, * и / (что логично, но не вредно для изменения). Можно складывать, вычитать, умножать и делить значения. Эти операции можно использовать, например, при работе с константами.
#date (2019,11,15) + #duration (1, 2, 3, 4)
Сравнение — операторы сравнения
Значения в M можно сравнивать с помощью операторов сравнения =, , =, =, <>.
- x = y оценивается как true, если x равно y
- х > y оценивается как true, если x больше, чем y
- x = y оценивается как true, если x больше или равен y
- x <> y оценивается как true, если x не равно y
Можно сравнивать, например, списки и т.д.
Завершено (объединено)
Мы можем объединять текстовые константы, списки слияния, записи таблиц и т. д.
- «Привет» & «world» оценивается как «Hello world»
- <1,2,3>& будут оценены, объединены в список
«Здравствуйте» & «святой» <1,2,3>&
Логический
В М-где можновыполнять операции с логическими (булевыми) значениями (или выражениями, которые оцениваются как True False). У вас есть следующие операторы:
- не — отрицание/противоположность
- и — и
- или — или
[Имя] = «Павел» и [Должность] = «MVP» Я подготовлю больше образцов
Используйте, например, в конструкции if then else.
Комментарии
Если вам нужен комментарий М-кода. Можно использовать одну или несколько строк:
- // строка комментария
- /* Внешние линии*/
Лен ин — строительство
Конструкция let позволяет оценить набор значений, а затем назначить их переменной, которая будет добавлена к следующему выражению, следующему за оператором in .
пусть b = 2, a = 1, c = a + b в c
Я рассмотрю конструкцию Лена более подробно в отдельной статье, но я здесь только для того, чтобы проиллюстрировать различные варианты.
Имена переменных — Имена переменных
К выражениям (переменным) можно добавить любое имя вспомогательного символа #
let #»Как пользоваться Excel — это здорово!» = 1 + 1 Ё в #»Как работать в Excel — это здорово!»
Как изменить имя и что можно делать в отдельной статье.
Каждое утверждение
Через каждый я могу, например, заполнить все переменные в параметре ( первое число до значений в столбце ).
let Source = #table(<«Инсла»>, <<1>, <2>, <3>, <42>>), #»Добавлено пользователем» = Таблица .AddColumn (Источник, «Читать блок», каждый [Insla] + 1) в # «Добавлено пользователем»
If Then Else — построение
Классическая условная функция, если она выполняется, выполняется что-то еще.
Если тогда Else теория:
if [проверяемое логическое выражение] then [если выражение верно, оно выполняется] else [иначе, оно выполняетсяэто]
Логические операторы и или также могут использоваться в условиях. Для более сложных условий не забудьте скобки!
[Имя] = «Павел» и [Должность] = «Лучший игрок» .. [Имя] = «Павел» или [Должность] = «Лучший игрок»
Например, если столбец с именем Id равен единице, вводится 2, в противном случае 0 (ноль).
если [Id] = 1, то 2 иначе 0
В этой нотации это может выглядеть неприменимо, но если вы используете его в сочетании с конструкцией each, это уже имеет смысл, например:
let Source = Excel.CurrentWorkbook()<[Name=»Table1″]>[Content], #»TransformColumnTypes» = Table.TransformColumnTypes(Source,<<«Id», Int64.Type> > ;), #»Пароль: Custom» = Table.AddColumn(#»Change type», «Custom», каждый if [Id] = 1 then 2 else 0) in #»Password: Custom»
Синтаксис может быть отображен в одной строке или разделен на отдельные строки для облегчения чтения. Но об этом в отдельной статье, где я рассмотрю условие подробнее.
Функция
Функция, основанная на входных параметрах, выполняет соответствующие вычисления и возвращает соответствующий результат:
пусть Продукт = (x, y) => x * y + 100, Результат = Произведение (2,3) в Результате
Ошибки
Если, например, ввести объявление функции или условия неправильно, может появиться ошибка (в расширенном редакторе ее видно сразу, в строке формул только после подтверждения Enter), например, в пример, кавычки после фамилии неверны:
= «Пол» & «Ласбак
попробовать . иначе
Используйте, например, для обработки ошибок
= попробуйте «JakNaExcel» + 1 иначе «Это ошибка.»
Возможно через условия
let result = try «Excel»+1, result = if result[HasError], then «Вероятно, ошибка, Mbachal.» иначе результат[значение] в результате
Подробнее в отдельной статье (добавлена по подсказке в обсуждении на LikendIn).
Другие образцыгде
В отдельных статьях я впоследствии покажу, как делать другие образцы. Используйте для динамической ссылки в М-коде.
Загрузить данные = Excel.CurrentWorkbook()<[Name=»Table1″]>[Content] Filter = Table.SelectRows(Source, each ([Id] <> 2)) Type change = Table. TransformColumnTypes(#»Отфильтрованные строки»,<<«Id», Int64.Type>>) Rename = Table.RenameColumns(#»Изменить тип»,<<«Id», «Попытка»>> ) AddColumns = Table.AddColumn(#»Именованные столбцы», «Сборник», каждый [Попытка] + 1, введите число) RemoveColumns = Table.RemoveColumns(#»Вставлено: сопоставление»,<«Сборник»>)
Всего
Сталкивались ли вы с какими-либо проблемами, есть ли у вас совет, как улучшить статью или что добавить? Вы можете изменить в комментариях.
Статья обновлена: 19.09.2020 11:02
Если
Помог ли этот веб-сайт сэкономить вам время и деньги? Помог ли он решить проблему? Готовы ли вы предоставить символическое вознаграждение за дальнейшее развитие? Выберите форму вознаграждения, которая вам подходит.
Павел Ласбк — автор сайта
Microsoft Office (Word, Excel, Google Sheets , PowerPoint) Я использую с 2000 года (с 2004 года в этом домене) — В 2017 году я получил престижную награду MVP от Microsoft (пока я единственный из IR в категории Excel). Я также делюсь своими знаниями и опытом онлайн в видеороликах для SEDUO . В компаниях преподаю и консультирую , работаю в МУНИ. Я создаю этот сайт более 15 лет. Существует более 1000 бесплатных инструкций, советов и рекомендаций, включая более 250 различных шаблонов и рабочих книг.
Пока нет комментариев
Вы можете стать первым, кто оставит осмысленный комментарий.