Файлы к уроку:
Ссылки:
Название функции
Функцию можно сохранить в какую переменную. Эта переменная будет являться названием функции.
В дальнейшем можно вызвать эту функцию по этому названию, передав нужные параметры.
let
// Создаем функцию
fn_mult =
(x as number, y as number) =>
x * y,
// Вызываем функцию
result = fn_mult(5, 6)
in
result
Функция как параметр другой функции
Существуют функции, которые в качестве параметра принимают функцию.
Например, третий параметр функции Table.AddColumn — это функция генерации столбца или ColumnGenerator.
В данном примере мы создадим функцию fn_mult, а потом применим ее в качестве параметра ColumnGenerator функции Table.AddColumn.
let
// Создадим таблицу пример
source =
#table({"Monthly Payment", "Term"},
{
{1423, 48},
{2771, 48},
{3947, 48},
{4952, 48},
{5836, 48},
{6395, 48},
{7932, 48},
{8900, 48},
{9250, 48},
{10211, 48}
}),
fn_mult =
(row)=>
row[Monthly Payment] * row[Term],
// Передаем функцию как параметр
col_total = Table.AddColumn(source,
"Total Payments",
fn_mult,
Number.Type)
in
col_total
Определяем функцию прямо в параметре
Если мы собираемся использовать функцию в параметре другой функции, то нам не обязательно для этого иметь отдельную переменную.
В этом примере мы сделаем все то же, что и в предыдущем, но функцию определим прямо в самом параметре без создания отдельной переменной для нее.
let
// Создадим таблицу пример
source =
#table({"Monthly Payment", "Term"},
{
{1423, 48},
{2771, 48},
{3947, 48},
{4952, 48},
{5836, 48},
{6395, 48},
{7932, 48},
{8900, 48},
{9250, 48},
{10211, 48}
}),
// Передаем функцию как параметр
col_total = Table.AddColumn(source,
"Total Payments",
(row)=>
row[Monthly Payment] * row[Term],
Number.Type)
in
col_total
Ключевое слово each
Ключевое слово each является сокращением для конструкции (_)=>.
В предыдущих примерах мы применяли конструкцию (row)=>. Вместо row можно было придумать абсолютно любое имя. Общепринятым является использование символа подчеркивания _.
Вместо конструкции (_)=> мы можем просто ввести слово each.
Также нам мы можем сократить и ссылки на столбцы. Вместо row[Monthly Payment] и row[Term] мы просто можем ввести [Monthly Payment] и [Term].
let
// Создадим таблицу пример
source =
#table({"Monthly Payment", "Term"},
{
{1423, 48},
{2771, 48},
{3947, 48},
{4952, 48},
{5836, 48},
{6395, 48},
{7932, 48},
{8900, 48},
{9250, 48},
{10211, 48}
}),
// Передаем функцию как параметр
col_total = Table.AddColumn(source,
"Total Payments",
each _[Monthly Payment] * _[Term],
Number.Type)
in
col_total
Примененные функции
- Number.Type
- Table.AddColumn
Курс по Языку М
Номер урока | Урок | Описание |
---|---|---|
1 | Power Query Язык М №1. Простые выражения, let | Что такое let, одна или несколько переменных в in, вложенные блоки let. |
2 | Power Query Язык М №2. Создание функций М | Функции без выражения let, функции внутри выражения let. |
3 | Power Query Язык М №3. Создание функций М 2 | Функция как параметр функции, ключевое слово each. |
4 | Power Query Язык М №4. Переменные и идентификаторы | Идентификаторы с кавычками и без, допустимые и недопустимые идентификаторы. |
5 | Power Query Язык М №5. Текстовый тип данных | Особенности работы с текстовым типом данных. |
6 | Power Query Язык М №6. Числовой тип данных (Ввод, Сравнение, Точность, Бесконечность) | В этом уроке мы узнаем, что из себя представляет числовой тип данных. |
7 | Power Query Язык М №7. Дата, время, длительность и прочее(date, datetime, time, datetimezone) | Как создать значение с типом данных #date, #time, #datetime, #datetimezone, #duration. Преобразование значений одного типа данных в другой, арифметические операции, тонкости. |
8 | Power Query Язык М №8. Типы данных Logical, Null | Изучим логический тип данных и значение null. |
9 | Power Query Язык М №9. Объект Record / Запись | Что такое объект Record / Запись. Как создать запись, как сослаться на значения записи, как сравнивать записи, как объединять записи, как изменять записи. |
10 | Power Query Язык М №10. Объект List / Список | Зачем нужны списки, создание списков, сравнение списков, функции для работы со списками. |
11 | Power Query Язык М №11. Объект Table / Таблица | Получить строку, столбец. Объединение таблиц по вертикали. |
12 | Power Query Язык М №12. Как PQ работает с таблицами | В этом уроке вы узнаете как думает Power Query. |
13 | Power Query Язык М №13. Ключевое слово each | Зачем нужно ключевое слово each. |