Evalueringsmodell
Evalueringsmodellen for Power Query M-formelspråket er modellert etter evalueringsmodellen som vanligvis finnes i regneark, der beregningsrekkefølgen kan bestemmes basert på avhengigheter mellom formlene i cellene.
Hvis du har skrevet formler i et regneark, for eksempel Excel, kan det hende at du gjenkjenner formlene til venstre, vil resultere i verdiene til høyre når de beregnes:
I M kan et uttrykk referere til tidligere uttrykk ved navn, og evalueringsprosessen vil automatisk bestemme rekkefølgen det refereres til uttrykk i.
La oss bruke en post til å produsere et uttrykk som tilsvarer regnearkeksempelet ovenfor. Når du initialiserer verdien for et felt, refererer du til andre felt i posten etter navnet på feltet, som følger:
[
A1 = A2 * 2,
A2 = A3 + 1,
A3 = 1
]
Uttrykket ovenfor evalueres til følgende post:
[
A1 = 4,
A2 = 2,
A3 = 1
]
Poster kan være i, eller nestet, i andre poster. Du kan bruke oppslagsoperatoren ([ ]) til å få tilgang til feltene i en post etter navn. Følgende post har for eksempel et felt med navnet Salg som inneholder en post, og et felt med navnet Total som har tilgang til feltene FirstHalf og SecondHalf i salgsposten:
[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = Sales[FirstHalf] + Sales[SecondHalf]
]
Uttrykket ovenfor evalueres til følgende post:
[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = 2100
]
Du bruker operatoren for posisjonsindeks ({ }) til å få tilgang til et element i en liste etter den numeriske indeksen. Verdiene i en liste henvises til å bruke en nullbasert indeks fra begynnelsen av listen. Indeksene 0 og 1 brukes for eksempel til å referere til de første og andre elementene i listen nedenfor:
[
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
]
Liste-, post- og tabellmedlemsuttrykk samt la uttrykk (Gå til uttrykk, verdier og la uttrykk) evalueres ved hjelp av lat evaluering. Det vil eksempel: De evalueres ved behov. Alle andre uttrykk evalueres ved hjelp av ivrig evaluering. Dette betyr at de evalueres umiddelbart når de oppstår under evalueringsprosessen. En god måte å tenke på dette på er å huske at evaluering av en liste eller et postuttrykk vil returnere en liste eller postverdi som vet hvordan listeelementene eller postfeltene må beregnes, når de blir forespurt (av oppslags- eller indeksoperatorer).