Model vyhodnocení

Model vyhodnocení jazyka vzorců Power Query M se modeluje po modelu vyhodnocení, který se běžně vyskytuje v tabulkách, kde je možné určit pořadí výpočtů na základě závislostí mezi vzorci v buňkách.

Pokud jste napsali vzorce v tabulce, jako je Třeba Excel, můžete vzorce na levé straně rozpoznat, že při výpočtu budou hodnoty vpravo:

Evaluation Model 1

Evaluation Model 2

V jazyce M může výraz odkazovat na předchozí výrazy podle názvu a proces vyhodnocení automaticky určí pořadí, ve kterém se počítají odkazované výrazy.

Použijeme záznam k vytvoření výrazu, který odpovídá výše uvedenému příkladu tabulky. Při inicializaci hodnoty pole odkazujete na další pole v záznamu podle názvu pole následujícím způsobem:

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

Výše uvedený výraz se vyhodnotí jako následující záznam:

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

Záznamy mohou být obsaženy v jiných záznamech nebo vnořené. Pomocí operátoru vyhledávání ([ ]) můžete získat přístup k polím záznamu podle názvu. Například následující záznam obsahuje pole s názvem Sales obsahující záznam a pole s názvem Total, které přistupuje k polím FirstHalf a SecondHalf záznamu Sales:

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

Výše uvedený výraz se vyhodnotí jako následující záznam:

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

K přístupu k položce v seznamu pomocí číselného indexu použijete operátor pozičního indexu ({ }). Hodnoty v seznamu jsou odkazované na použití indexu založeného na nule od začátku seznamu. Například indexy 0 a 1 slouží k odkazování na první a druhou položku v následujícím seznamu:

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

Opožděné a dychtivé vyhodnocení

Výrazy seznamů, záznamů a členů tabulky a výrazy let (Přejít na výrazy, hodnoty a výraz let) se vyhodnocují pomocí opožděného vyhodnocení. To znamená, že se vyhodnocují v případě potřeby. Všechny ostatní výrazy se vyhodnocují pomocí dychtivého vyhodnocení. To znamená, že se vyhodnocují okamžitě, když se narazí během procesu vyhodnocení. Dobrým způsobem, jak si to představit, je pamatovat na to, že vyhodnocení výrazu seznamu nebo záznamu vrátí hodnotu seznamu nebo záznamu, která ví, jak se položky seznamu nebo pole záznamů musí vypočítat, když se požaduje (vyhledávacími nebo indexovými operátory).