Kiértékelési modell
A Power Query M képletnyelvének kiértékelési modelljét a számolótáblákban gyakran használt kiértékelési modell után modellezi a rendszer, ahol a számítások sorrendje a cellák képletei közötti függőségek alapján határozható meg.
Ha olyan számolótáblában írt képleteket, mint az Excel, akkor a bal oldali képletek felismerése a jobb oldalon lévő értékeket eredményezi a számításkor:
Az M-ben egy kifejezés név alapján hivatkozhat a korábbi kifejezésekre, és a kiértékelési folyamat automatikusan meghatározza a hivatkozott kifejezések kiszámításának sorrendjét.
Használjunk egy rekordot a fenti számolótábla-példával egyenértékű kifejezés létrehozásához. Egy mező értékének inicializálásakor a rekord többi mezőjére a mező nevével hivatkozik, az alábbiak szerint:
[
A1 = A2 * 2,
A2 = A3 + 1,
A3 = 1
]
A fenti kifejezés a következő rekordot értékeli ki:
[
A1 = 4,
A2 = 2,
A3 = 1
]
A rekordok más rekordokon belül vagy beágyazottan is tárolhatók. A keresési operátor ([ ]) használatával név szerint érheti el a rekord mezőit. Az alábbi rekord például egy Sales nevű mezőt tartalmaz, amely egy rekordot tartalmaz, és egy Összeg nevű mezőt, amely hozzáfér az Értékesítési rekord FirstHalf és SecondHalf mezőihez:
[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = Sales[FirstHalf] + Sales[SecondHalf]
]
A fenti kifejezés a következő rekordot értékeli ki:
[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = 2100
]
A pozícióindex operátorral ({ }) numerikus index alapján érheti el a lista elemeit. A lista értékeire a lista elejétől nulla alapú indexet használunk. A 0 és az 1 index például az alábbi lista első és második elemére hivatkozik:
[
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
]
Lusta és lelkes értékelés
A lista-, rekord- és táblatagkifejezések, valamint a kifejezéseket (Ugrás a kifejezésekre, értékekre és kifejezés engedélyezése) a rendszer lusta kiértékeléssel értékeli ki. Vagyis szükség esetén kiértékelik őket. Minden más kifejezés kiértékelése lelkes kiértékelés használatával történik. Vagyis a kiértékelési folyamat során azonnal kiértékeljük őket. Érdemes átgondolni, hogy a lista- vagy rekordkifejezések kiértékelése olyan lista- vagy rekordértéket ad vissza, amely tudja, hogy a listaelemeket vagy rekordmezőket hogyan kell kiszámítani, amikor a rendszer kéri (keresési vagy indexelési operátorok segítségével).