Expressões, valores e let expression
Uma consulta de linguagem de fórmula do Power Query M é composta por etapas de expressão de fórmula que criam uma consulta mashup. Uma expressão de fórmula pode ser avaliada (calculada), produzindo um valor. A expressão let encapsula um conjunto de valores a serem calculados, atribuídos nomes e, em seguida, usados em uma expressão subsequente que segue a instrução in . Por exemplo, uma expressão let pode conter uma variável Source que é igual ao valor de Text.Proper e produz um valor de texto em maiúsculas e minúsculas.
Deixe a expressão
let
Source = Text.Proper("hello world")
in
Source
No exemplo acima, Text.Proper("hello world")
é avaliado a "Hello World"
.
As próximas seções descrevem os tipos de valor no idioma.
Valor primitivo
Um valor primitivo é um valor de parte única, como um número, lógico, texto ou nulo. Um valor nulo pode ser usado para indicar a ausência de quaisquer dados.
Type | Valor de exemplo |
---|---|
Binário | 00 00 00 02 // Número de pontos (2) |
Date | 5/23/2015 |
DateTime | 23/05/2015 12:00:00 |
DateTimeZone | 23/05/2015 12:00:00 -08:00 |
Duração | 15:35:00 |
Lógico | verdadeiro e falso |
Nulo | nulo |
Número | 0, 1, -1, 1.5 e 2.3e-5 |
Texto | "ABC" |
Hora | 12:34:12 |
Valor da função
Uma Função é um valor que, quando invocado com argumentos, produz um novo valor. As funções são escritas listando os parâmetros da função entre parênteses, seguido pelo símbolo goes-to =>, seguido pela expressão que define a função. Por exemplo, para criar uma função chamada MyFunction que tem dois parâmetros e executa um cálculo em parameter1 e parameter2:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
Chamar MyFunction retorna o resultado:
let
Source = MyFunction(2, 4)
in
Source
Este código produz o valor de 3.
Valores de dados estruturados
A linguagem M suporta os seguintes valores de dados estruturados:
Nota
Os dados estruturados podem conter qualquer valor M. Para ver alguns exemplos, vá para Exemplos adicionais de dados estruturados.
Listagem
Uma Lista é uma sequência ordenada baseada em zero de valores entre caracteres de chave { }. Os caracteres de chave { } também são usados para recuperar um item de uma Lista por posição de índice. Para obter mais informações, vá para Listar valores.
Nota
O Power Query M suporta um tamanho de lista infinito, mas se uma lista for escrita como literal, a lista tem um comprimento fixo. Por exemplo, {1, 2, 3} tem um comprimento fixo de 3.
Seguem-se alguns exemplos de listas.
Value | Type |
---|---|
{123, verdadeiro, "A"} | Lista contendo um número, uma lógica e um texto. |
{1, 2, 3} | Lista de números |
{ {1, 2, 3}, {4, 5, 6} } |
Lista de números |
{ [CustomerID = 1, Nome = "Bob", Telefone = "123-4567"], [ID do Cliente = 2, Nome = "Jim", Telefone = "987-6543"] } |
Lista de Registos |
{123, verdadeiro, "A"}{0} | Obtenha o valor do primeiro item de uma Lista. Esta expressão retorna o valor 123. |
{ {1, 2, 3}, {4, 5, 6} }{0}{1} |
Obtenha o valor do segundo item do primeiro elemento List. Esta expressão retorna o valor 2. |
Registo
Um Registro é um conjunto de campos. Um campo é um par nome/valor em que o nome é um valor de texto exclusivo dentro do registro do campo. A sintaxe para valores de registro permite que os nomes sejam escritos sem aspas, uma forma também conhecida como identificadores. Um identificador pode assumir as duas formas seguintes:
identifier_name como OrderID.
#"nome do identificador", como #"Os dados de hoje são: ".
A seguir está um registro contendo campos chamados "OrderID", "CustomerID", "Item" e "Price" com os valores 1, 1, "Vara de pesca" e 100,00. Caracteres de chave quadrada [ ] denotam o início e o fim de uma expressão de registro e são usados para obter um valor de campo de um registro. Os exemplos a seguir mostram um registro e como obter o valor do campo Item.
Aqui está um exemplo de registro:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source
Para obter o valor de um Item, use colchetes como Source[Item]
:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Tabela
Uma Tabela é um conjunto de valores organizados em colunas e linhas nomeadas. O tipo de coluna pode ser implícito ou explícito. Você pode usar #table para criar uma lista de nomes de colunas e uma lista de linhas. Uma Tabela de valores é uma Lista em uma Lista. Os caracteres de chave { } também são usados para recuperar uma linha de uma Tabela por posição de índice (vá para o Exemplo 3 - Obter uma linha de uma tabela por posição de índice).
Exemplo 1 - Criar uma tabela com tipos de coluna implícitos
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
})
in
Source
Exemplo 2 - Criar uma tabela com tipos de coluna explícitos
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
Ambos os exemplos anteriores criam uma tabela com a seguinte forma:
OrderID | IDDeCliente | Item | Preço |
---|---|---|---|
1 | 1 | Vara de pesca | 100.00 |
2 | 1 | Vermes de 1 lb | 5.00 |
Exemplo 3 - Obter uma linha de uma tabela por posição de índice
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}
Esta expressão retorna o seguinte registro:
Campo | Value |
---|---|
ID do Pedido | 2 |
ID do Cliente | 1 |
Item | Vermes de 1 lb |
Preço | 5 |
Exemplos adicionais de dados estruturados
Os dados estruturados podem conter qualquer valor M. Seguem-se alguns exemplos:
Exemplo 1 - Lista com valores [Primitivo](#_Primitive_value_1), [Function](#_Function_value) e [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
A avaliação desta expressão pode ser visualizada como:
Exemplo 2 - Registro contendo valores primitivos e registros aninhados
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
A avaliação desta expressão pode ser visualizada como:
Nota
Embora muitos valores possam ser escritos literalmente como uma expressão, um valor não é uma expressão. Por exemplo, a expressão 1 avalia o valor 1; A expressão 1+1 avalia o valor 2. Esta distinção é subtil, mas importante. As expressões são receitas para avaliação; Os valores são os resultados da avaliação.
Se expressão
A expressão if seleciona entre duas expressões com base em uma condição lógica. Por exemplo:
if 2 > 1 then
2 + 2
else
1 + 1
A primeira expressão (2 + 2) é selecionada se a expressão lógica (2 > 1) for verdadeira, e a segunda expressão (1 + 1) é selecionada se for falsa. A expressão selecionada (neste caso 2 + 2) é avaliada e torna-se o resultado da expressão if (4).