Model oceny
Model oceny języka formuł Power Query M jest modelowany po modelu oceny często spotykanym w arkuszach kalkulacyjnych, gdzie kolejność obliczeń można określić na podstawie zależności między formułami w komórkach.
Jeśli formuły zostały napisane w arkuszu kalkulacyjnym, takim jak program Excel, możesz rozpoznać formuły po lewej stronie, co spowoduje, że wartości po prawej stronie zostaną obliczone:
W języku M wyrażenie może odwoływać się do poprzednich wyrażeń według nazwy, a proces oceny automatycznie określi kolejność, w jakiej są obliczane przywoływane wyrażenia.
Użyjmy rekordu, aby utworzyć wyrażenie, które jest równoważne z powyższym przykładem arkusza kalkulacyjnego. Podczas inicjowania wartości pola należy odwołać się do innych pól w rekordzie według nazwy pola w następujący sposób:
[
A1 = A2 * 2,
A2 = A3 + 1,
A3 = 1
]
Powyższe wyrażenie daje w wyniku następujący rekord:
[
A1 = 4,
A2 = 2,
A3 = 1
]
Rekordy mogą być zawarte w innych rekordach lub zagnieżdżone. Aby uzyskać dostęp do pól rekordu według nazwy, możesz użyć operatora wyszukiwania ([ ]). Na przykład następujący rekord zawiera pole o nazwie Sales zawierające rekord, a pole o nazwie Total (Suma), które uzyskuje dostęp do pól FirstHalf i SecondHalf rekordu Sales:
[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = Sales[FirstHalf] + Sales[SecondHalf]
]
Powyższe wyrażenie daje w wyniku następujący rekord:
[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = 2100
]
Operator indeksu pozycyjnego ({ }) służy do uzyskiwania dostępu do elementu na liście według jego indeksu liczbowego. Wartości na liście są określane przy użyciu indeksu opartego na zerach od początku listy. Na przykład indeksy 0 i 1 są używane do odwołowania się do pierwszych i drugich elementów na poniższej liście:
[
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
]
Wyrażenia składowe list, rekordów i tabel, a także wyrażenia let (Przejdź do wyrażeń, wartości i wyrażenia let) są oceniane przy użyciu z opóźnieniem oceny. Oznacza to, że są one oceniane w razie potrzeby. Wszystkie inne wyrażenia są oceniane przy użyciu wyczekiwanej oceny. Oznacza to, że są one oceniane natychmiast po napotkaniu podczas procesu oceny. Dobrym sposobem, aby pomyśleć o tym, jest pamiętanie, że ocena wyrażenia listy lub rekordu zwróci listę lub wartość rekordu, która wie, w jaki sposób jego elementy listy lub pola rekordu muszą być obliczane po żądaniu (według operatorów wyszukiwania lub indeksu).