Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O modelo de avaliação da linguagem de fórmulas Power Query M é modelado a partir do modelo de avaliação comumente encontrado em folhas de cálculo, onde a ordem dos cálculos pode ser determinada com base nas dependências entre as fórmulas nas células.
Se tiver fórmulas escritas numa folha de cálculo como o Excel, pode reconhecer que as fórmulas à esquerda resultarão nos valores à direita quando calculadas:
Em M, uma expressão pode referenciar expressões anteriores pelo nome, e o processo de avaliação determinará automaticamente a ordem em que as expressões referenciadas são calculadas.
Vamos usar um registo para produzir uma expressão equivalente ao exemplo da folha de cálculo acima. Ao inicializar o valor de um campo, refere-se a outros campos dentro do registo pelo nome do campo, da seguinte forma:
[
A1 = A2 * 2,
A2 = A3 + 1,
A3 = 1
]
A expressão acima avalia para o seguinte registo:
[
A1 = 4,
A2 = 2,
A3 = 1
]
Os registos podem estar contidos ou aninhados dentro de outros registos. Pode usar o operador de pesquisa ([ ]) para aceder aos campos de um registo por nome. Por exemplo, o registo seguinte tem um campo chamado Sales contendo um registo, e um campo chamado Total que acede aos campos FirstHalf e SecondHalf do registo de Vendas:
[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = Sales[FirstHalf] + Sales[SecondHalf]
]
A expressão acima avalia para o seguinte registo:
[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = 2100
]
Utiliza-se o operador índice posicional ({ }) para aceder a um item numa lista pelo seu índice numérico. Os valores dentro de uma lista são referidos usando um índice baseado em zero desde o início da lista. Por exemplo, os índices 0 e 1 são usados para referenciar os primeiros e segundos itens da lista abaixo:
[
Sales =
{
[
Year = 2007,
FirstHalf = 1000,
SecondHalf = 1100,
Total = FirstHalf + SecondHalf // equals 2100
],
[
Year = 2008,
FirstHalf = 1200,
SecondHalf = 1300,
Total = FirstHalf + SecondHalf // equals 2500
]
},
#"Total Sales" = Sales{0}[Total] + Sales{1}[Total] // equals 4600
]
Avaliação preguiçosa e entusiasta
Expressões de lista, registo e tabela , bem como expressões let (Ir a Expressões, valores e expressão let), são avaliadas usando avaliação preguiçosa. Ou seja, são avaliados quando necessário. Todas as outras expressões são avaliadas através de avaliação eager. Ou seja, são avaliados imediatamente quando encontrados durante o processo de avaliação. Uma boa forma de pensar nisto é lembrar que avaliar uma lista ou expressão de registo devolverá um valor de lista ou registo que sabe como os seus itens de lista ou campos de registo precisam de ser calculados, quando solicitado (por operadores de pesquisa ou índice).