Выражения, значения и разрешить выражение
Языковой запрос формулы Power Query M состоит из шагов выражения формулы, создающих запрос mashup. Выражение формулы можно оценивать (вычислять), возвращая значение. Выражение let инкапсулирует набор значений, вычисляемых, назначенных имен, а затем используется в последующем выражении, которое следует инструкции. Например, выражение let может содержать исходную переменную, которая равна значению Text.Proper и дает текстовое значение в правильном случае.
Выражение Let
let
Source = Text.Proper("hello world")
in
Source
В приведенном выше Text.Proper("hello world")
примере вычисляется "Hello World"
значение .
В следующих разделах описываются типы значений на языке.
Примитивное значение
Примитивное значение — это однопартийное значение, например число, логический, текст или null. Значение NULL можно использовать для указания отсутствия любых данных.
Тип | Пример значения |
---|---|
Binary | 00 00 00 02 // число точек (2) |
Дата | 5/23/2015 |
Дата/время | 5.23.2015 12:00:00 |
DateTimeZone | 5.23.2015 12:00:00 AM -08:00 |
Длительность | 15:35:00 |
Логический | True и False |
Null | null |
Число | 0, 1, -1, 1,5 и 2.3e-5 |
Текст | "abc" |
Время | 12:34:12 вечера |
Значение функции
Функция — это значение, которое при вызове с аргументами создает новое значение. Функции записываются путем перечисления параметров функции в круглых скобках, за которыми следует символ перехода => и определяющее функцию выражение. Например, чтобы создать функцию с именем MyFunction , которая имеет два параметра и выполняет вычисление по параметру1 и параметр2:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
Вызов MyFunction возвращает результат:
let
Source = MyFunction(2, 4)
in
Source
Этот код создает значение 3.
Структурированные значения данных
Язык M поддерживает следующие структурированные значения данных:
Примечание.
Структурированные данные могут содержать любое значение M. Чтобы просмотреть несколько примеров, перейдите к дополнительным структурированным примерам данных.
List
Список — это упорядоченная от нуля последовательность значений, заключенная в фигурные скобки { }. Фигурные фигурные скобки { } также используются для извлечения элемента из списка по позиции индекса. Дополнительные сведения см. в списке значений.
Примечание.
Power Query M поддерживает бесконечный размер списка, но если список написан как литерал, список имеет фиксированную длину. Например, {1, 2, 3} имеет фиксированную длину 3.
Ниже приведены некоторые примеры списка.
Значение | Тип |
---|---|
{123, true, "A"} | Список, содержащий число, логический и текстовый текст. |
{1, 2, 3} | Список чисел |
{ {1, 2, 3}, {4, 5, 6} } |
Список чисел |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] } |
Список записей |
{123, true, "A"}{0} | Получите значение первого элемента в списке. Это выражение возвращает значение 123. |
{ {1, 2, 3}, {4, 5, 6} }{0}{1} |
Получите значение второго элемента из первого элемента List. Это выражение возвращает значение 2. |
Запись
Запись — это набор полей. Поле — это пара "имя-значение", где имя является текстовым значением, уникальным в пределах текущей записи. Синтаксис для значений записей позволяет записывать имена без кавычки, форма также называется идентификаторами. Идентификатор может принимать следующие две формы:
identifier_name, например OrderID.
#"имя идентификатора", например, #"Сегодняшняя дата: ".
Ниже приведена запись, содержащая поля "OrderID", "CustomerID", "Item" и "Price" со значениями 1, 1, 1, "Рыболовный удочка" и 100,00. Квадратные фигурные скобки [] указывают начало и конец выражения записи и используются для получения значения поля из записи. В следующих примерах показана запись и получение значения поля Item.
Ниже приведен пример записи:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source
Чтобы получить значение элемента, вы используете квадратные скобки как Source[Item]
:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Таблица
Таблица — это набор значений, организованных по именованным столбцам и строкам. Тип столбца может быть неявным или явным. Можно использовать #table для создания списка имен столбцов и списка строк. Таблица значений — это список в списке. Фигурные фигурные скобки { } также используются для извлечения строки из таблицы по позиции индекса (перейдите к примеру 3. Получение строки из таблицы по позиции индекса).
Пример 1. Создание таблицы с неявными типами столбцов
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
})
in
Source
Пример 2. Создание таблицы с явными типами столбцов
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
}
)
in
Source
Оба предыдущих примера создают таблицу со следующей фигурой:
OrderID | CustomerID | Товар | Цена, |
---|---|---|---|
1 | 1 | Удочка | 100.00 |
2 | 1 | 1 lb. черви | 5.00 |
Пример 3. Получение строки из таблицы по позиции индекса
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
}
)
in
Source{1}
Это выражение возвращает следующую запись:
Поле | значение |
---|---|
OrderID | 2 |
CustomerID | 1 |
Элемент | 1 lb. черви |
Price | 5 |
Дополнительные примеры структурированных данных
Структурированные данные могут содержать любое значение M. Далее приводятся некоторые примеры.
Пример 1. Список со значениями [Primitive](#_Primitive_value_1), [Function](#_Function_value) и [Record](#_Record_value)
let
Source =
{
1,
"Bob",
DateTime.ToText(DateTime.LocalNow(), "yyyy-MM-dd"),
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]
}
in
Source
При оценке этого выражения можно визуализировать как:
Пример 2. Запись, содержащая примитивные значения и вложенные записи
let
Source = [CustomerID = 1, Name = "Bob", Phone = "123-4567", Orders =
{
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0]
}]
in
Source
При оценке этого выражения можно визуализировать как:
Примечание.
Хотя многие значения могут быть записаны буквально как выражение, значение не является выражением. Например, выражение 1 оценивается значением 1; Выражение 1+1 оценивается значением 2. Это различие тонко, но важно. Выражения — это рецепты для оценки; значения — это результаты оценки.
Если выражение
Выражение if выбирает между двумя выражениями на основе логического условия. Например:
if 2 > 1 then
2 + 2
else
1 + 1
Первое выражение (2 + 2) выбирается, если логическое выражение (2 > 1) имеет значение true, а второй — (1 + 1) — значение false. Выбранное выражение (в данном случае 2 + 2) вычисляется и становится результатом выражения if (4).