Arviointimalli

Power Query M -kaavakielen arviointimalli on mallinnettu laskentataulukoista yleisesti löytyvän arviointimallin mukaan. Siinä laskutoimitusten järjestys voidaan määrittää soluissa olevien kaavojen välisten riippuvuuksien perusteella.

Jos olet kirjoittanut kaavoja laskentataulukossa, kuten Excelissä, saatat huomata, että vasemmalla olevat kaavat tuottavat oikealla olevat arvot, kun ne lasketaan:

Evaluation Model 1

Evaluation Model 2

M:ssä lauseke voi viitata edellisiin lausekkeisiin nimen mukaan, ja arviointiprosessi ratkaisee automaattisesti järjestyksen, jossa viitatut lausekkeet lasketaan.

Käytetään nyt tietuetta, joka tuottaa lausekkeen, joka vastaa yllä olevaa laskentataulukon esimerkkiä. Kentän arvoa alustettaessa tietueen muihin kenttiin viitataan kentän nimen mukaan seuraavasti:

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

Yllä oleva lauseke antaa tulokseksi seuraavan tietueen:

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

Tietueet voivat sisältyä muihin tietueisiin tai olla niissä sisäkkäin. Voit käyttää hakuoperaattoria ([ ]), jos haluat käyttää tietueen kenttiä nimen mukaan. Esimerkiksi seuraavassa tietueessa on kenttä nimeltä Myynti, joka sisältää tietueen, ja kenttä nimeltä Total, joka käyttää Myynti-tietueen FirstHalf- ja SecondHalf-kenttiä:

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

Yllä oleva lauseke antaa tulokseksi seuraavan tietueen:

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

Sijainnin indeksioperaattorin ({ }) avulla voit käyttää luettelon kohdetta sen numeerisen indeksin perusteella. Luettelon arvoihin viitataan käyttämällä nollapohjaista indeksiä luettelon alusta. Esimerkiksi indeksejä 0 ja 1 käytetään viittaamaan ensimmäiseen ja toiseen kohteeseen alla olevassa luettelossa:

[
    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
]

Tarveperusteinen ja laajennettu arviointi

Luettelo-, Tietue- ja Taulukko-jäsenlausekkeet sekä let-lausekkeet (Siirry lausekkeisiin, arvoihin ja let-lausekkeeseen) arvioidaan käyttämällä laiskuuden arviointia. Eli ne arvioidaan tarvittaessa. Kaikki muut lausekkeet arvioidaan käyttämällä laajennettua arviointia. Eli ne arvioidaan välittömästi, kun ne tulevat vastaan arviointiprosessin aikana. Hyvä tapa ajatella tätä on muistaa, että luettelo- tai tietuelausekkeen arvioiminen palauttaa luettelon tai tietueen arvon, joka tietää, miten sen luettelokohteet tai tietuekentät on laskettava pyydettäessä (haku- tai indeksioperaattoreiden suorittamana).