Kontekst w formułach języka DAX
Kontekst umożliwia wykonywanie analiz dynamicznych, w których wyniki formuły mogą zmieniać się w celu odzwierciedlenia bieżącego wyboru wierszy i kolumn oraz dowolnych powiązanych danych.Zrozumienie, czym jest kontekst, oraz efektywne używanie kontekstu stanowi kluczowy element tworzenia wysoko wydajnych dynamicznych analiz i rozwiązywania problemów z formułami.
W tej sekcji definiuje różne rodzaje kontekstu: kontekst wiersza, kontekst kwerendzie, i Kontekst filtru.Wyjaśniono, w jaki sposób kontekst jest określany dla formuł znajdujących się w kolumnach obliczeniowych i tabelach przestawnych.
W ostatniej części tej sekcji znajdują się łącza do szczegółowych przykładów pokazujących, jak wyniki formuł zmieniają się w zależności od kontekstu.
Wprowadzenie do kontekstu
Formuły w PowerPivot może dotyczyć filtry zastosowane tabela przestawna przez relacje między tabelami oraz przez filtry używane w formułach.Kontekst jest, co umożliwia wykonywanie analizy dynamiczne. Opis kontekstu jest ważne dla budowy i rozwiązywanie problemów z formułami.
Istnieją różne typy kontekstu: kontekst wiersza, kontekst kwerendzie, i Kontekst filtru.
Kontekst wiersza można traktować jako "bieżący wiersz." Po utworzeniu kolumna obliczeniowa kontekst wiersza składa się z wartościami każdego pojedynczego wiersza i wartości w kolumnach, które są związane z bieżącego wiersza.Istnieją również niektóre funkcje (wcześniej i EARLIEST), pobieranie wartości z bieżącego wiersza, a następnie użyć tej wartości podczas wykonywania operacji przez całą tabela.
Kontekst zapytania dotyczy podzestawu danych, który jest niejawnie tworzony dla każdej komórki w tabeli przestawnej, w zależności od nagłówków wierszy i kolumn.
Kontekst filtru jest zestaw wartości dopuszczalne w każdej kolumnie, w oparciu o ograniczenia filtru, który rozliczono wiersz, lub które są definiowane przez wyrażeń filtru w formule.
Następujący temat wyjaśnia różne typy kontekście bardziej szczegółowo: Kontekst w formułach języka DAX.
Powrót do początku
Kontekst wiersza
Jeśli tworzysz formułę kolumna obliczeniowa, kontekst wiersza dla formuły zawiera wartości z wszystkie kolumny w bieżącym wierszu.Jeśli tabela jest powiązana z inną tabelą, kontekst obejmuje też wszystkie wartości z tej innej tabeli, które są powiązane z bieżącym wierszem.
Załóżmy na przykład, utworzyć kolumna obliczeniowa, =[Freight] + [Tax], razem dodaje dwie kolumny z tej samej tabela.Ta formuła zachowuje się jak formuły w tabeli programu Excel, które automatycznie odwołują się do wartości z tego samego wiersza.Należy zauważyć, że tabele różnią się od zakresów: nie można odwoływać się wartość z wiersza przed bieżącym wierszem przy użyciu notacji zakres i nie można odwołać dowolnego pojedynczej wartości w tabela lub komórka.Zawsze trzeba pracować z tabelami i kolumnami.
Kontekst wiersza następuje automatycznie relacji między tabelami, które wiersze w tabelach pokrewnych są skojarzone z bieżącego wiersza.
Na przykład w poniższej formule funkcja RELATED jest używana w celu pobrania wartości podatku z powiązanej tabeli na podstawie regionu dostawy dla zamówienia.Wartość podatku jest ustalana dzięki użyciu wartości regionu w bieżącej tabeli, wyszukaniu regionu w powiązanej tabeli i pobraniu z powiązanej tabeli stawki podatku dla regionu.
= [Freight] + RELATED('Region'[TaxRate])
Ta formuła po prostu pobiera z tabeli Region stawkę podatku dla bieżącego regionu.Nie trzeba znać ani określać klucza łączącego te tabele.
Kontekst wielu wierszy
Język DAX zawiera także funkcje umożliwiające iteracyjne wykonywanie obliczeń w tabeli.Te funkcje mogą mieć wiele bieżących wierszy i wiele kontekstów bieżącego wiersza.Z programistycznego punktu widzenia można powiedzieć, że jest możliwe utworzenie formuły wykonywanej cyklicznie w pętli wewnętrznej i zewnętrznej.
Załóżmy, że skoroszyt zawiera produktów tabela i Sprzedaż tabela.Należy przejrzeć całą tabelę Sales, która zawiera transakcje obejmujące wiele produktów, i znaleźć największą zamówioną ilość każdego produktu w pojedynczej transakcji.
Wykonanie tego obliczenia w programie Excel wymaga wykonania serii pośrednich sumowań, które w przypadku zmiany danych trzeba będzie również zmienić.Zaawansowani użytkownicy programu Excel mogą potrafić utworzyć formuły tablicowe, które wykonają to zadanie.Z kolei w relacyjnej bazie danych można napisać zagnieżdżone instrukcje podwyboru.
Jednak za pomocą języka DAX można utworzyć pojedynczą formułę, która zwraca poprawną wartość i której wyniki są automatycznie aktualizowane w chwili dodawania danych do tabel.
=MAXX(FILTER(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])
Aby szczegółowe instruktażu tej formuły, zobacz Funkcja EARLIER (język DAX).
W skrócie funkcja EARLIER przechowuje kontekst wiersza z operacji poprzedzającej bieżącą operację.AT cały czas, funkcja przechowuje w pamięci dwa zestawy kontekstu: jeden zestaw kontekście reprezentuje bieżący wiersz pętli formuły i innego zestawu kontekście reprezentuje bieżący wiersz zewnętrzne pętli for formuły.Język DAX automatycznie przenosi wartości między tymi dwiema pętlami, dzięki czemu można tworzyć złożone agregacje.
Kontekst zapytania
Kontekst kwerendzie odnosi się do podzbiór danych, który jest niejawnie pobierana formuły.Po upuszczeniu miara lub innego pole wartość komórka tabela przestawna, PowerPivot silnik bada wiersza i kolumna nagłówki, Fragmentator i filtry raportu określić kontekst.Następnie PowerPivot dokonuje obliczeń niezbędnych do wypełnienia każdej komórka tabela przestawna.Pobierany zestaw danych jest kontekstem zapytania dla każdej komórki.
Ponieważ kontekście może się zmieniać w zależności od tego, gdzie umieścić formuły, wyniki formuły także zmieniać w zależności od tego, czy używać formuły tabela przestawna z wieloma grupowania i filtry lub kolumna obliczeniowa bez filtrów i minimalnym kontekstu.
Załóżmy na przykład, utworzyć tę prostą formułę, która sumuje wartości w zysku kolumna Sprzedaż tabela: =SUM('Sales'[Profit]).If you use this formula in a calculated column within the Sales table, the results for the formula will be the same for the entire table, because the query context for the formula is always the entire data set of the Sales table.Wyniki obejmują zyski dla wszystkich regionów, wszystkich produktów, wszystkich lat itd.
Jednak zazwyczaj nie chcesz zobaczyć ten sam wynik setki razy, ale zamiast tego chcesz uzyskać zysk dla określonego roku, danego kraju, określonego produktu lub kombinacji tych, a następnie pobrać sumy.
W tabeli przestawnej łatwo można zmienić kontekst, dodając lub usuwając nagłówki kolumn i wierszy oraz dodając i usuwając fragmentatory.Następnie w mierze można utworzyć formułę podobną do powyższej i upuścić ją w tabeli przestawnej.Każde dodanie nagłówków kolumn lub wierszy do tabeli przestawnej powoduje zmianę kontekstu zapytania, w jakim jest obliczana miara.Operacje fragmentowania i filtrowania także mają wpływ na kontekst.Dlatego tę samą formułę tabela przestawna jest oceniany w innym kontekst kwerendzie dla każdej komórka.
Kontekst filtru
Kontekst filtru dodaje się do określają ograniczenia filtru dla zestaw wartości kolumna lub w tabela przy użyciu argumentów w formule.Kontekst filtru jest stosowany po zastosowaniu innych kontekstów, takich jak kontekst wiersza lub kontekst zapytania.
Na przykład tabela przestawna oblicza wartości dla poszczególnych komórek na podstawie nagłówków wierszy i kolumn, tak jak opisano w poprzedniej sekcji dotyczącej kontekstu zapytania.Jednak w obrębie miar lub kolumn obliczeniowych dodanych do tabeli przestawnej można określić wyrażenia filtru, aby kontrolować wartości używane przez formułę.Można także selektywnie czyścić filtry w wybranych kolumnach.
Aby uzyskać więcej informacji o tworzeniu filtrów w formułach, zobacz Funkcja FILTER (język DAX).
Przykład sposobu wyczyszczone filtrów do utworzenia sumy, zobacz Funkcja ALL (język DAX).
Przykłady selektywnie wyczyść i zastosować filtry w formułach, zobacz Funkcja ALLEXCEPT (język DAX).
Dlatego konieczne jest sprawdzenie definicji miar lub formuł używanych w tabeli przestawnej, ponieważ dzięki temu podczas interpretowania wyników formuł użytkownik będzie świadomy kontekstu filtru.
Ustalanie kontekstu w formułach
Kiedy tworzysz formułę, PowerPivot for Excel najpierw sprawdza, czy ogólna składnia i następnie sprawdza nazwy kolumn i tabel, które zapewniają przeciwko możliwe kolumny tabel w bieżącym kontekście.Jeśli PowerPivot nie może odnaleźć tabele i kolumny określone przez formułę, zostanie wyświetlony błąd.
Kontekst jest określana zgodnie z opisem w poprzedniej sekcji, za pomocą tabel dostępne skoroszyt, relacje między tabelami i filtry, które zostały zastosowane.
Na przykład jeśli zaimportowano dane do nowej tabeli i nie zastosowano żadnych filtrów, cały zestaw kolumn w tabeli jest częścią bieżącego kontekstu.W przypadku wielu tabel połączonych relacjami, gdy użytkownik pracuje w tabeli przestawnej, która została przefiltrowana przez dodanie nagłówków kolumn i użycie fragmentatorów, kontekst zawiera powiązane tabele oraz dowolne filtry danych.
Koncepcja kontekstu daje duże możliwości, ale może też utrudniać rozwiązywanie problemów z formułami.Zaleca się, aby rozpocząć pracę od prostych formuł i relacji, co umożliwi poznanie zasady działania kontekstu, a następnie przejść do pracy z prostymi formułami w tabelach przestawnych.W poniższej sekcji podano kilka przykładów pokazujących, jak w formułach są używane różne typy kontekstu w celu dynamicznego zwracania wyników.
Przykłady kontekstu w formułach
Funkcja RELATED rozwija kontekst bieżącego wiersza tak, aby zawierał wartości z powiązanej kolumny.Umożliwia to wykonywanie wyszukiwań.Przykład w tym temacie pokazuje interakcję między filtrowaniem a kontekstem wiersza.
Funkcja FILTER umożliwia określenie wierszy, które mają być uwzględnione w bieżącym kontekście.Przykłady w tym temacie pokazują także sposób osadzania filtrów w innych funkcjach, które wykonują agregacje.
Funkcja ALL ustawia kontekst w obrębie formuły.Można jej użyć, aby zastąpić filtry stosowane jako wynik kontekstu zapytania.
Funkcja ALLEXCEPT umożliwia usunięcie wszystkich filtrów z wyjątkiem tych określonych przez użytkownika.Oba tematy zawierają przykłady pokazujące tworzenie formuł i złożone konteksty.
Funkcje EARLIER i EARLIEST umożliwiają tworzenie pętli w tabelach, ponieważ wykonują obliczenia, a jednocześnie odwołują się do wartości z pętli wewnętrznej.Jeśli użytkownik zna koncepcję rekursji oraz ma wiedzę dotyczącą pętli wewnętrznych i zewnętrznych, z pewnością doceni możliwości oferowane przez funkcje EARLIER i EARLIEST.Jeśli użytkownik nie zna tych koncepcji, powinien uważnie wykonać kroki opisane w tym przykładzie, aby dowiedzieć się, jak konteksty wewnętrzny i zewnętrzny są używane podczas wykonywania obliczeń.
Integralność referencyjna
W tej sekcji omówiono pewne zaawansowane pojęcia dotyczące braku wartości w tabelach programu PowerPivot, które są połączone relacjami.Ta sekcja może być użyteczna dla osób, które mają skoroszyty zawierające wiele tabel i złożonych formuł, potrzebujących pomocy w zrozumieniu wyników ich działania.
W przypadku nowych koncepcji w relacyjnej bazie danych, zaleca się przeczytanie tematu wprowadzającego Omówienie relacji.
Integralność referencyjna i relacje programu PowerPivot
PowerPivot nie wymaga wymuszane więzy integralność między dwiema tabelami w celu zdefiniowania relacji prawidłowy. Natomiast pusty wiersz na "jeden" koniec każda relacja jeden do wielu jest tworzona i jest używany do obsługi wszystkich-dopasowywania wierszy z tabela pokrewnej.Takie rozwiązanie skutecznie symuluje zachowanie sprzężenia zewnętrznego języka SQL.
W tabelach przestawnych w przypadku grupowania danych według strony „jeden” relacji wszelkie niepasujące dane po stronie „wiele” są grupowane razem i uwzględniane w sumach pod nagłówkiem wiersza pustego.Pusty nagłówek jest w przybliżeniu odpowiednikiem „nieznanego elementu członkowskiego”.
Opis typu Nieznany element członkowski
Pojęcie nieznanego elementu członkowskiego może być znane użytkownikom, którzy pracują z wielowymiarowymi systemami baz danych, takimi jak usługi SQL Server Analysis Services.Jeśli ten termin nie jest znany, następujący przykład wyjaśni, co to jest nieznany element członkowski i jak wpływa on na obliczenia.
Załóżmy, że tworzysz obliczenia, które podsumowuje miesięcznej sprzedaży dla każdego sklepu, ale kolumna w sprzedaży tabela brakuje wartości dla nazwy magazynu.Biorąc pod uwagę, tabelami dla przechowywania i Sprzedaż są połączone przez nazwę Sklepu, co powinien zostać zdarzyć się to w formule?W jaki sposób tabela przestawna powinna grupować lub wyświetlać wartości, które nie są związane z istniejącym sklepem?
Ten problem jest typowy dla magazynów danych, w których bardzo duże tabele danych o faktach muszą być logicznie powiązane z tabelami wymiarów zawierającymi informacje o sklepach, regionach i innych atrybutach używanych do klasyfikowania i obliczania faktów.Aby rozwiązać ten problem, wszelkie nowe fakty, które nie są związane z istniejącą jednostką, są tymczasowo przypisywane do nieznanego elementu członkowskiego.Dlatego niepowiązane fakty będą zgrupowane w tabeli przestawnej pod pustym nagłówkiem.
Treatment of Blank Values vs.the Blank Row
Wartości puste różnią się od pustych wierszy dodawanych w celu obsługi nieznanego elementu członkowskiego.Wartość pusta to specjalna wartość służąca do reprezentowania wartości null, ciągów pustych i innych braków wartości.Aby uzyskać więcej informacji o wartości puste, jak również inne typy danych DAX, zobacz Typy danych obsługiwane w skoroszytach programu PowerPivot.