Share via


Evalueringsmodel

Evalueringsmodellen for M-formelsproget i Power Query modelleres efter den evalueringsmodel, der ofte findes i regneark, hvor beregningsrækkefølgen kan bestemmes på baggrund af afhængigheder mellem formlerne i cellerne.

Hvis du har skrevet formler i et regneark, f.eks. Excel, kan du genkende, at formlerne til venstre resulterer i værdierne til højre, når de beregnes:

Evaluation Model 1

Evaluation Model 2

I M kan et udtryk referere til tidligere udtryk efter navn, og evalueringsprocessen bestemmer automatisk den rækkefølge, som udtryk, der refereres til, beregnes i.

Lad os bruge en post til at oprette et udtryk, der svarer til ovenstående regnearkseksempel. Når du initialiserer værdien af et felt, refererer du til andre felter i posten efter navnet på feltet på følgende måde:

[
    A1 = A2 * 2,
    A2 = A3 + 1,
    A3 = 1
]

Ovenstående udtryk evalueres til følgende post:

[
    A1 = 4,
    A2 = 2,
    A3 = 1
]

Poster kan være indeholdt i eller indlejret i andre poster. Du kan bruge opslagsoperatoren ([ ]) til at få adgang til felterne i en post efter navn. Følgende post har f.eks. et felt med navnet Sales, der indeholder en post, og et felt med navnet Total, der har adgang til felterne FirstHalf og SecondHalf i posten Sales:

[
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
    Total = Sales[FirstHalf] + Sales[SecondHalf]
]

Ovenstående udtryk evalueres til følgende post:

[
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
    Total = 2100
]

Du kan bruge positionsindeksoperatoren ({ }) til at få adgang til et element på en liste ved hjælp af det numeriske indeks. Der refereres til værdierne på en liste ved hjælp af et nulbaseret indeks fra starten af listen. Indekserne 0 og 1 bruges f.eks. til at referere til det første og det andet element på 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
]

Doven og ivrig evaluering

Liste-, post- og tabelmedlemsudtryk samt let-udtryk (Gå til udtryk, værdier og let-udtryk) evalueres ved hjælp af doven evaluering. Det vil altså være, at de evalueres, når det er nødvendigt. Alle andre udtryk evalueres ved hjælp af en ivrig evaluering. De evalueres med det samme, når de registreres under evalueringsprocessen. En god måde at tænke over dette på er at huske, at evalueringen af et liste- eller postudtryk returnerer en liste- eller postværdi, der ved, hvordan listeelementerne eller postfelterne skal beregnes, når der anmodes om det (efter opslags- eller indeksoperatorer).