Excel DAX - kontekst oceny
W języku DAX kontekst jest ważnym terminem, o którym należy pamiętać podczas pisania formuł języka DAX. Nazywany równieżevaluation context, Kontekst języka DAX służy do określania oceny formuły języka DAX i odpowiadającego jej wyniku. Oznacza to, że wyniki formuły języka DAX mogą się różnić w zależności od kontekstu. Należy dokładnie zrozumieć, w jaki sposób używany jest określony kontekst języka DAX i jak mogą się różnić wyniki.
Kontekst oceny umożliwia przeprowadzenie analizy dynamicznej, w której wyniki formuły języka DAX mogą się zmieniać, aby odzwierciedlić bieżący wiersz lub zaznaczenie komórek, a także wszelkie powiązane dane. Zrozumienie kontekstu i efektywne korzystanie z kontekstu są bardzo ważne przy tworzeniu zaawansowanych formuł języka DAX, przeprowadzaniu dynamicznej analizy danych i rozwiązywaniu problemów w formułach języka DAX. Konteksty oceny są podstawą wszystkich zaawansowanych funkcji języka DAX, które trzeba opanować, aby tworzyć złożone raporty analizy danych.
W przypadku ciągłego odwoływania się do funkcji języka DAX w celu odpowiedniego użycia w formułach języka DAX, należy zapoznać się z tym rozdziałem dotyczącym kontekstu języka DAX, aby uzyskać przejrzystość wyników.
Typy kontekstu w języku DAX
Język DAX obsługuje następujące konteksty oceny -
- Kontekst wiersza
- Kontekst filtru
Podczas oceny formuły języka DAX wszystkie konteksty zostaną wzięte pod uwagę i zastosowane odpowiednio. Konteksty istnieją razem, a wynik formuły będzie różny w zależności od kontekstu używanego podczas obliczania wartości. Na przykład po wybraniu pól dla wierszy, kolumn i filtrów w tabeli przestawnej sumy częściowe są obliczane dynamicznie na podstawie wiersza i kolumny, z którą jest skojarzona suma częściowa / suma, a wartości w wierszach i kolumnach są określane przez filtry używany.
Kontekst wiersza
Kontekst wiersza oznacza, że formuła języka DAX lub funkcja języka DAX w dowolnym momencie wie, do którego wiersza tabeli się odwołuje. Kontekst wiersza można traktować jako bieżący wiersz. Formuła zostanie obliczona wiersz po wierszu z kontekstem wiersza.
Niektóre funkcje języka DAX (np. Funkcje X, FILTER ()) i wszystkie kolumny obliczeniowe mają kontekst wierszowy. Na przykład, jeśli utworzysz kolumnę obliczeniową Rok z formułą języka DAX = ROK ([Data]), wartości kolumny obliczeniowej zostaną uzyskane przez zastosowanie danej formuły języka DAX w danej kolumnie tabeli, wiersz po wierszu.
Oznacza to, że jeśli utworzono kolumnę obliczeniową, kontekst wiersza składa się z wartości w poszczególnych wierszach i wartości w kolumnach, które są powiązane z bieżącym wierszem, zgodnie z używaną formułą języka DAX. Chociaż formuła języka DAX nie zawiera odwołania do wiersza, język DAX niejawnie interpretuje kontekst wiersza podczas obliczania wartości.
Język DAX tworzy kontekst wiersza automatycznie podczas definiowania kolumny obliczeniowej, a wszystkie obliczone wartości z użytą formułą języka DAX pojawią się w kolumnie obliczeniowej.
W przeciwieństwie do tego, gdy masz funkcję języka DAX, taką jak SUMX, wartości obliczone wiersz po wierszu są sumowane i wyświetlany jest tylko wynik końcowy. Oznacza to, że wartości pośrednie są odrzucane.
W przypadku powiązanych tabel kontekst wiersza określa, które wiersze w powiązanej tabeli są skojarzone z bieżącym wierszem. Jednak kontekst wiersza nie jest automatycznie propagowany przez relacje. W tym celu musisz użyć funkcji języka DAX - RELATED i RELATEDTABLE.
Kontekst wielu wierszy
Język DAX ma funkcje iteratora, takie jak SUMX. Tych funkcji można używać do zagnieżdżania kontekstów wierszy. Dzięki temu programowo możesz mieć rekursję w pętli wewnętrznej i pętli zewnętrznej, w której możesz mieć wiele bieżących wierszy i kontekstów bieżących wierszy.
Na przykład można użyć funkcji języka DAX Earlier (), która przechowuje kontekst wiersza z operacji poprzedzającej bieżącą operację. Ta funkcja przechowuje w pamięci dwa zestawy kontekstu - jeden zestaw kontekstu reprezentuje bieżący wiersz wewnętrznej pętli formuły, a inny zestaw kontekstu reprezentuje bieżący wiersz zewnętrznej pętli formuły. Język DAX automatycznie przekazuje wartości między dwiema pętlami, dzięki czemu można tworzyć złożone agregacje.
Na przykład zapoznaj się ze scenariuszem - Tworzenie formuły języka DAX, która dynamicznie klasyfikuje wartości w rozdziale Scenariusze - ranking i porównywanie wartości.
Kontekst filtru
Kontekst filtru odnosi się do dowolnego filtrowania, które jest stosowane do modelu danych w języku DAX. Kontekst filtru jest tworzony przez tabelę przestawną, a także przez funkcje języka DAX.
Kontekst filtru utworzony przez tabelę przestawną
Kontekst filtru utworzony przez tabelę przestawną to naturalne filtrowanie stosowane przez wybory dokonane w polach tabeli przestawnej z następujących elementów:
- Rows
- Columns
- Filters
- Slicers
Kontekst filtru utworzony przez tabelę przestawną filtruje podstawowe tabele w modelu danych. Jeśli tabele są powiązane, filtry przepływają z tabel przeglądowych do tabel danych. Oznacza to, że możesz filtrować tabele danych na podstawie wyników z tabel przeglądowych. Propagacja filtra nie zachodzi w drugą stronę. Możesz jednak używać formuł języka DAX do filtrowania tabel odnośników na podstawie wyników z tabel danych.
Kontekst filtru utworzony przez funkcje języka DAX
Za pomocą funkcji filtru języka DAX można definiować pola obliczeniowe i kolumny obliczeniowe zawierające wyrażenia filtru, które kontrolują wartości używane przez formułę języka DAX. Te pola obliczeniowe i kolumny obliczeniowe stają się następnie częścią listy pól tabeli przestawnej i można je dodać do tabeli przestawnej. Możesz również selektywnie czyścić filtry w określonych kolumnach za pomocą tych funkcji filtru języka DAX. Przykładem potężnej funkcji filtru języka DAX do tworzenia kontekstu filtru jest CALCULATE (). Aby zapoznać się z przykładem, zobacz rozdział Scenariusze - wykonywanie złożonych obliczeń.
Filtruj kontekst jako dodatek do kontekstu wiersza
Kontekst wiersza nie tworzy automatycznie kontekstu filtru. To samo można osiągnąć za pomocą formuł języka DAX zawierających funkcje filtru języka DAX.