Expressões, valores e expressão Let
Uma consulta de linguagem de fórmula Power Query M é composta pelas etapas da expressão da fórmula que criam uma consulta de mashup. Uma expressão de fórmula pode ser avaliada (computada), produzindo um valor. A expressão let encapsula um conjunto de valores a serem computados, nomes atribuídos, então 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 letras maiúsculas e minúsculas.
Expressão let
let
Source = Text.Proper("hello world")
in
Source
No exemplo acima, Text.Proper("hello world")
é avaliado como "Hello World"
.
As seções a seguir 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 dados.
Type | Valor de exemplo |
---|---|
Binário | 00 00 00 02 // número de pontos (2) |
Data | 23/5/2015 |
Datetime | 5/23/2015 12:00:00 AM |
DateTimeZone | 5/23/2015 12:00:00 AM -08:00 |
Duration | 15:35:00 |
Lógico | true e false |
Nulo | nulo |
Número | 0, 1, -1, 1,5 e 2.3e-5 |
Texto | "abc" |
Hora | 12:34:12 PM |
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, seguidos pelo símbolo de seta => e, em seguida, pela expressão que define a função. Por exemplo, para criar uma função chamada MyFunction que possui dois parâmetros e realiza um cálculo no parâmetro1 e no parâmetro2:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
Chamar MyFunction retorna o resultado:
let
Source = MyFunction(2, 4)
in
Source
Esse código produz o valor de 3.
Valores de dados estruturados
A linguagem M dá suporte aos seguintes valores de dados estruturados:
Observação
Os dados estruturados podem conter qualquer valor de M. Para ver alguns exemplos, acesse Exemplos adicionais de dados estruturados.
Lista
Uma Lista é uma sequência ordenada de valores baseada em zero entre chaves { }. As chave { } também são usadas para recuperar um item de uma lista por posição de índice. Para mais informações, acesse Listar valores.
Observação
O Power Query M dá suporte a um tamanho de lista infinito, mas se uma lista for gravada como um literal, ela terá um comprimento fixo. Por exemplo, {1, 2, 3} tem um comprimento fixo de 3.
A seguir estão alguns exemplos de Lista.
Valor | Type |
---|---|
{123, true, "A"} | Lista que contém um número, um lógico e um texto. |
{1, 2, 3} | Lista de números |
{ {1, 2, 3}, {4, 5, 6} } |
Lista da lista de números |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] } |
Lista de Registros |
{123, true, "A"}{0} | Obtenha o valor do primeiro item em uma lista. Essa expressão retorna o valor 123. |
{ {1, 2, 3}, {4, 5, 6} }{0}{1} |
Obtenha o valor do segundo item do primeiro elemento List. Essa expressão retorna o valor 2. |
Record
Um Registro é um conjunto de campos. Um campo é um par de 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 gravados sem aspas, uma forma também conhecida como identificadores. Um identificador pode ter as duas formas a seguir:
identifier_name como OrderID.
#"nome do identificador", como #"A data de hoje é: ".
A seguir está um registro que contém os campos chamados "OrderID", "CustomerID", "Item" e "Price" com os valores 1, 1, "Vara de pescar" e 100,00. Os caracteres de colchete [] 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, você usa 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 entre chaves { } também são usados para recuperar uma linha de uma tabela por posição de índice (vá para 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 – Crie 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 o seguinte formato:
OrderID | CustomerID | Item | Preço |
---|---|---|---|
1 | 1 | Vara de pescar | 100,00 |
2 | 1 | 1 lb de minhocas | 5.00 |
Exemplo 3 – Obtenha 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}
Essa expressão retorna o registro a seguir:
Campo | Valor |
---|---|
OrderID | 2 |
CustomerID | 1 |
Item | 1 lb de minhocas |
Preço | 5 |
Exemplos de dados estruturados adicionais
Os dados estruturados podem conter qualquer valor de M. Estes são alguns exemplos:
Exemplo 1 – Lista com valores [Primitive](#_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
Avaliar essa expressão pode ser visualizado 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
Avaliar essa expressão pode ser visualizado como:
Observação
Embora muitos valores possam ser escritos literalmente como uma expressão, um valor não é uma expressão. Por exemplo, a expressão 1 é avaliada como o valor 1; a expressão 1+1 é avaliada como o valor 2. Essa distinção é sutil, mas importante. As expressões são receitas para avaliação; os valores são os resultados da avaliação.
Expressão if
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) será selecionada se a expressão lógica (2 > 1) for verdadeira e a segunda expressão (1 + 1) será selecionada se for false. A expressão selecionada (nesse caso, 2 + 2) é avaliada e torna-se o resultado da expressão if (4).