Noções básicas sobre as funções do Power Query M
Na linguagem de fórmulas do Power Query M, uma função é um mapeamento de um conjunto de valores de entrada para um único valor de saída. Uma função é escrita nomeando primeiro os parâmetros da função e, em seguida, fornecendo uma expressão para calcular o resultado da função. O corpo da função segue o símbolo goes-to (=>). Opcionalmente, as informações de tipo podem ser incluídas nos parâmetros e no valor de retorno da função. Uma função é definida e invocada no corpo de uma instrução let . Os parâmetros e/ou o valor de retorno podem ser implícitos ou explícitos. Os parâmetros implícitos e/ou o valor de retorno são do tipo qualquer. O tipo any é semelhante a um tipo de objeto em outros idiomas. Todos os tipos em M derivam do tipo qualquer.
Uma função é um valor como um número ou um valor de texto e pode ser incluída em linha como qualquer outra expressão. O exemplo a seguir mostra uma função que é o valor de uma variável Add que é então invocada, ou executada, a partir de várias outras variáveis. Quando uma função é invocada, um conjunto de valores é especificado que são logicamente substituídos pelo conjunto necessário de valores de entrada dentro da expressão do corpo da função.
Exemplo – Parâmetros explícitos e valor de retorno
let
AddOne = (x as number) as number => x + 1,
//additional expression steps
CalcAddOne = AddOne(5)
in
CalcAddOne
Exemplo – Parâmetros implícitos e valor de retorno
let
Add = (x, y) => x + y,
AddResults =
[
OnePlusOne = Add(1, 1), // equals 2
OnePlusTwo = Add(1, 2) // equals 3
]
in
AddResults
Localizar o primeiro elemento de uma lista maior que 5 ou null de outra forma
let
FirstGreaterThan5 = (list) =>
let
GreaterThan5 = List.Select(list, (n) => n> 5),
First = List.First(GreaterThan5)
in
First,
Results =
[
Found = FirstGreaterThan5({3,7,9}), // equals 7
NotFound = FirstGreaterThan5({1,3,4}) // equals null
]
in
Results
As funções podem ser usadas recursivamente. Para referenciar recursivamente a função, prefixe o identificador com @.
let
fact = (num) => if num = 0 then 1 else num * @fact (num-1)
in
fact(5) // equals 120
Cada palavra-chave
Cada palavra-chave é usada para criar facilmente funções simples. "Cada ..." é açúcar sintático para uma assinatura de função que usa o parâmetro _ "(_) => ..."
Cada um é útil quando combinado com o operador de pesquisa, que é aplicado por padrão a _
Por exemplo, cada [CustomerID] é o mesmo que cada _[CustomerID], que é o mesmo que (_) => _[CustomerID]
Exemplo – Usando cada filtro de linha na tabela
Table.SelectRows(
Table.FromRecords({
[CustomerID = 1, Name = "Bob", Phone = "123-4567"],
[CustomerID = 2, Name = "Jim", Phone = "987-6543"] ,
[CustomerID = 3, Name = "Paul", Phone = "543-7890"] ,
[CustomerID = 4, Name = "Ringo", Phone = "232-1550"]
}),
each [CustomerID] = 2
)[Name]
// equals "Jim"
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários