Ten przewodnik Szybki start jest przeznaczony dla użytkowników, którzy nie znają dodatku Power Pivot w programie Excel lub projektów modeli tabelarycznych utworzonych w narzędziach danych programu SQL Server. Ma on na celu szybkie i łatwe wprowadzenie do sposobu, w jaki można używać języka DAX (Data Analysis Expressions) do rozwiązywania podstawowych problemów związanych z modelowaniem danych i analizą. Ten temat zawiera informacje koncepcyjne, serię zadań do wykonania i kilka testów sprawdzających zdobytą wiedzę. Po zapoznaniu się z tym tematem należy dobrze zrozumieć najbardziej podstawowe pojęcia w języku DAX.
Co to jest język DAX?
Język DAX to zbiór funkcji, operatorów i stałych, których można używać w formułach lub wyrażeniach w celu obliczania i zwracania jednej lub wielu wartości. Mówiąc prościej, język DAX ułatwia tworzenie nowych informacji na podstawie danych już znajdujących się w modelu.
Dlaczego język DAX jest tak ważny?
Utworzenie skoroszytu i zaimportowanie do niego danych jest łatwe. Możesz nawet tworzyć tabele przestawne lub wykresy przestawne wyświetlające ważne informacje bez używania formuł języka DAX. A co, jeśli trzeba przeanalizować krytyczne dane sprzedaży w kilku kategoriach produktów i dla różnych zakresów dat? A może chcesz połączyć ważne dane zapasów z kilku tabel w różnych źródłach danych? Formuły języka DAX zapewniają tę funkcję, a także wiele innych ważnych funkcji. Wiedza o tym, jak tworzyć efektywne formuły języka DAX, pomoże Ci w pełni wykorzystać dane. Po uzyskaniu potrzebnych informacji można przystąpić do rozwiązywania rzeczywistych problemów biznesowych, które mają wpływ na wyniki finansowe. To jest analiza biznesowa, a język DAX pomoże Ci to osiągnąć.
Wymagania wstępne
Być może wiesz już, jak tworzyć formuły w programie Microsoft Excel. Ta wiedza będzie pomocna w zrozumieniu języka DAX, ale nawet jeśli nie masz doświadczenia w pracy z formułami programu Excel, opisane tutaj pojęcia ułatwią Ci szybkie rozpoczęcie tworzenia formuł języka DAX i rozwiązywania rzeczywistych problemów z analizą biznesową.
Skoncentrujemy się w szczególności na zrozumieniu formuł języka DAX używanych w obliczeniach. Należy już znać podstawowe pojęcia dotyczące kolumn obliczeniowych i miar (nazywanych również polami obliczeniowymi), które zostały opisane w Pomocy dodatku Power Pivot. Należy również zapoznać się ze środowiskiem i narzędziami do tworzenia dodatku Power Pivot w programie Excel.
Przykładowy skoroszyt
Najlepszym sposobem na poznanie języka DAX jest utworzenie kilku podstawowych formuł, używanie ich z rzeczywistymi danymi i zobaczenie wyników na własne oczy. W przedstawionych tu przykładach i zadaniach użyto przykładowego skoroszytu Formulas.xlsx języka DAX firmy Contoso. Skoroszyt można pobrać pod adresem http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Po pobraniu skoroszytu na komputer otwórz go, a następnie otwórz okno dodatku Power Pivot.
Zaczynamy!
Skupimy się na języku DAX w oparciu o trzy bardzo ważne podstawowe pojęcia: składnię, funkcje i kontekst. Oczywiście istnieją inne ważne koncepcje związane z językiem DAX, ale zrozumienie tych trzech pojęć zapewni najlepszą podstawę do budowania umiejętności w zakresie języka DAX.
Składnia
Przed utworzeniem własnych formuł przyjrzyjmy się składni formuły języka DAX. Składnia obejmuje różne elementy, które składają się na formułę, lub mówiąc prościej, sposób jej zapisu. Przyjrzyjmy się na przykład prostej formule języka DAX używanej do tworzenia nowych danych (wartości) dla każdego wiersza w kolumnie obliczeniowej o nazwie Marża w tabeli SprzedażRzeczywista: (kolory tekstu formuły służą tylko do celów ilustracyjnych)
Składnia tej formuły obejmuje następujące elementy:
- Operator znaku równości (=) wskazuje początek formuły, a podczas obliczania formuły zwraca wynik lub wartość. Wszystkie formuły służące do obliczania wartości zaczynają się od znaku równości.
- Kolumna [KwotaSprzedaży], do której prowadzi odwołanie, zawiera wartości, od których mają zostać odjęte wartości. Odwołanie do kolumny w formule jest zawsze ujęte w nawiasy kwadratowe []. W przeciwieństwie do formuł programu Excel, które odwołują się do komórek, formuła języka DAX zawsze odwołuje się do kolumny.
- Operator matematyczny odejmowania (-).
- Kolumna [KosztCałkowity], do której prowadzi odwołanie, zawiera wartości, które mają zostać odjęte od wartości w kolumnie [KwotaSprzedaży].
Próbując zrozumieć, jak czytać formułę języka DAX, często pomocne jest podzielenie każdego z elementów na język, który myślisz i mówisz na co dzień. Na przykład możesz przeczytać tę formułę jako:
W tabeli SprzedażRzeczywista dla każdego wiersza kolumny obliczeniowej Marża oblicz (=) wartość, odejmując wartości (-) w kolumnie [KosztCałkowity] od wartości w kolumnie [KwotaSprzedaży].
Przyjrzyjmy się innemu typowi formuły — używanej w miarze:
Ta formuła zawiera następujące elementy składni:
- Nazwa miary Suma kwoty sprzedaży. Formuły miar mogą zawierać nazwę miary, następnie dwukropek i formułę obliczeniową.
- Operator znaku równości (=) wskazuje początek formuły obliczeniowej. Po obliczeniu zwróci wynik.
- Funkcja SUMA sumuje wszystkie liczby w kolumnie [KwotaSprzedaży]. Później dowiesz się więcej o funkcjach.
- Co najmniej jeden argument jest ujęty w nawias (). Wszystkie funkcje wymagają co najmniej jednego argumentu. Argument przekazuje wartość do funkcji.
- Tabela SprzedażRzeczywista, do której prowadzi odwołanie.
- Kolumna [KwotaSprzedaży] objęta odwołaniem w tabeli SprzedażRzeczywista. Dzięki temu argumentowi funkcja SUMA wie, w której kolumnie zagregować funkcję SUMA.
Tę formułę można odczytać w następujący sposób:
W przypadku miary o nazwie Suma kwoty sprzedaży oblicz (=) sumę wartości w kolumnie [KwotaSprzedaży] w tabeliSprzedażRzeczywista.
Po umieszczeniu w strefie upuszczania wartości na liście pól tabeli przestawnej miara ta oblicza i zwraca wartości zdefiniowane przez każdą komórkę tabeli przestawnej, na przykład Telefony komórkowe w USA.
Zauważ, że ta formuła różni się kilkoma cechami w porównaniu z formułą użytą dla kolumny obliczeniowej Margines. W szczególności wprowadziliśmy funkcję SUMA. Funkcje to wstępnie napisane formuły, które ułatwiają wykonywanie złożonych obliczeń i wykonywanie operacji na liczbach, datach, godzinach, tekście i innych elementach. Później dowiesz się więcej o funkcjach.
W przeciwieństwie do wcześniejszej kolumny obliczeniowej Marża, kolumna [KwotaSprzedaży] była poprzedzona tabelą SprzedażRzeczywista, do której należała. Jest ona nazywana w pełni kwalifikowaną nazwą kolumny, ponieważ zawiera nazwę kolumny poprzedzoną nazwą tabeli. W przypadku kolumn, do których odwołuje się ta tabela, nazwa tabeli nie musi być zawarta w formule. Dzięki temu długie formuły odwołujące się do wielu kolumn stają się krótsze i łatwiejsze do odczytania. Warto jednak zawsze umieszczać nazwę tabeli w formułach miar, nawet jeśli jest to jedna tabela.
Uwaga
Jeśli nazwa tabeli zawiera spacje, zastrzeżone słowa kluczowe lub niedozwolone znaki, należy ją ująć w pojedynczy cudzysłów. Nazwy tabel należy ująć w cudzysłów także wtedy, gdy nazwa zawiera znaki spoza zakresu znaków alfanumerycznych ANSI, niezależnie od tego, czy dane ustawienia regionalne obsługują dany zestaw znaków.
Bardzo ważna jest poprawna składnia formuł. W większości przypadków, jeśli składnia jest niepoprawna, zostanie zwrócony błąd składni. W innych przypadkach składnia może być poprawna, ale zwracane wartości mogą nie być zgodne z oczekiwaniami. Dodatek Power Pivot (i narzędzia danych programu SQL Server) zawiera funkcję IntelliSense, która umożliwia tworzenie poprawnych składniowo formuł, ułatwiając wybieranie właściwych elementów.
Utwórzmy prostą formułę. To zadanie pomoże Ci lepiej zrozumieć składnię formuły i możliwości funkcji IntelliSense na pasku formuły.
Zadanie: tworzenie prostej formuły dla kolumny obliczeniowej
- Jeśli okno dodatku Power Pivot nie jest jeszcze wyświetlone, w programie Excel na wstążce dodatku Power Pivot kliknij pozycję Okno dodatku Power Pivot.
- W oknie dodatku Power Pivot kliknij tabelę SprzedażRzeczywista (karta).
- Przewiń do pierwszej kolumny z prawej strony, a następnie w nagłówku kolumny kliknij pozycję Dodaj kolumnę.
- Kliknij pasek formuły w górnej części okna projektanta modeli.
Kursor zostanie wyświetlony na pasku formuły. Na pasku formuły można wpisać formułę dla kolumny obliczeniowej lub pola obliczeniowego.
Poświęćmy chwilę i przyjrzyjmy się trzem przyciskom po lewej stronie paska formuły.
Gdy kursor jest aktywny na pasku formuły, te trzy przyciski stają się aktywne. Skrajny lewy przycisk (X) to po prostu przycisk anulowania. Śmiało, kliknij go. Kursor nie będzie już wyświetlany na pasku formuły, a przyciski Anuluj i przycisk znacznika wyboru nie będą już wyświetlane. Kontynuuj i kliknij ponownie na pasku formuły. Przycisk Anuluj i przycisk znacznika wyboru pojawią się ponownie. Oznacza to, że można rozpocząć wprowadzanie formuły.
Przycisk znacznika wyboru to przycisk sprawdzania formuły. Dopóki nie wprowadzisz formuły, nie zrobi się to niewiele. Wrócimy do tego za chwilę.
Kliknij przycisk Fx . Zostanie wyświetlone nowe okno dialogowe; okno dialogowe Wstawianie funkcji. Najłatwiejszym sposobem rozpoczęcia wprowadzania formuły języka DAX jest okno dialogowe Wstawianie funkcji. Funkcję do formuły dodamy nieco później, ale na razie nie trzeba dodawać funkcji do formuły kolumny obliczeniowej. Zamknij okno dialogowe Wstawianie funkcji. - Na pasku formuły wpisz znak równości (=), a następnie wpisz otwierający nawias kwadratowy [. Zostanie wyświetlone małe okno ze wszystkimi kolumnami z tabeli SprzedażRzeczywista. Oto działanie funkcji IntelliSense.
Ponieważ kolumny obliczeniowe są zawsze tworzone w bieżącej tabeli, nie ma potrzeby poprzedzania nazwy kolumny nazwą tabeli. Przewiń listę w dół, a następnie kliknij dwukrotnie tabelę [SalesQuantity]. Możesz również przewinąć do odpowiedniej nazwy kolumny, a następnie nacisnąć klawisz Tab.
Kursor jest teraz aktywny po prawej stronie pola [SprzedażIlość]. - Wpisz spację, operator odejmowania - (znak minus) i kolejną spację.
- Teraz wpisz inny otwierający nawias kwadratowy [. Tym razem zaznacz kolumnę [ReturnQuantity], a następnie naciśnij klawisz Enter.
Jeśli zostanie wyświetlony komunikat o błędzie, przyjrzyj się dokładnie składni. W razie potrzeby porównaj ją z opisaną wcześniej formułą w kolumnie obliczeniowej Marża.
Po naciśnięciu klawisza Enter w celu uzupełnienia formuły na pasku stanu u dołu okna dodatku Power Pivot zostanie wyświetlony wyraz Obliczanie . Proces przebiega szybko, mimo że właśnie obliczono nowe wartości dla ponad trzech milionów wierszy. - Kliknij prawym przyciskiem myszy nagłówek kolumny i zmień jej nazwę na SprzedażNetTo.
To wszystko! Właśnie utworzono prostą, ale bardzo wydajną formułę języka DAX. Dla każdego wiersza w tabeli SprzedażRzeczywista formuła NetSales oblicza wartość, odejmując wartość w kolumnie [ReturnQuantity] od wartości w kolumnie [SalesQuantity]. Zwróć uwagę, że przed chwilą powiedzieliśmy "Dla każdego wiersza". Jest to rzut oka na kolejną bardzo ważną koncepcję w języku DAX; Kontekst wiersza. Później dowiesz się więcej o kontekście wiersza.
Podczas wpisywania operatora w formule języka DAX bardzo ważne jest określenie typu danych w używanych argumentach. Na przykład po wpisaniu następującej formuły = 1 & 2 zwrócona wartość będzie wartością tekstową "12". Jest tak, ponieważ operator handlowego "i" (&) służy do łączenia tekstów. Język DAX interpretuje tę formułę w następujący sposób: Oblicz wynik, przyjmując wartość 1 jako tekst i dodając wartość 2 jako tekst. Gdyby teraz wpisać = 1 + 2, język DAX odczyta tę formułę następująco: Oblicz wynik, dodając wartość liczbową 1 do wartości liczbowej 2. Wynikiem jest oczywiście "3", wartość liczbowa. Język DAX oblicza wartości wynikowe w zależności od operatora w formule, a nie na podstawie typu danych kolumn użytego w argumencie. Typy danych w języku DAX są bardzo ważne, ale wykraczają poza zakres tego przewodnika Szybki start. Aby dowiedzieć się więcej na temat typów danych i operatorów w formułach języka DAX, zobacz dokumentację języka DAX (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) w witrynie Books Online.
Spróbujmy innego. Tym razem utworzysz miarę, wpisując formułę i używając technologii IntelliSense. Nie przejmuj się zbytnio, jeśli nie rozumiesz w pełni formuły. Ważne jest, aby dowiedzieć się, jak utworzyć formułę przy użyciu kilku elementów razem w poprawnej składni.
Zadanie: tworzenie formuły miary
- W tabeli SprzedażRzeczywista kliknij dowolną pustą komórkę w obszarze obliczeń. Jest to obszar pustych komórek tuż pod tabelą w oknie dodatku Power Pivot.
- Na pasku formuły wpisz nazwę Sprzedaż w poprzednim kwartale:.
- Wpisz znak równości ("="), aby rozpocząć formułę obliczeniową.
- Wpisz kilka pierwszych liter nazwy CAL, a następnie kliknij dwukrotnie funkcję, której chcesz użyć. W tej formule ma zostać użyta funkcja CALCULATE .
- Wpisz nawias otwierający (, aby rozpocząć przekazywanie argumentów do funkcji CALCULATE.
Zwróć uwagę, że po wpisaniu nawiasu otwierającego funkcja IntelliSense pokazuje argumenty wymagane dla funkcji CALCULATE. O kłótniach dowiesz się za chwilę. - Wpisz kilka pierwszych liter tabeli SprzedażRzeczywista, a następnie na liście rozwijanej kliknij dwukrotnie tabelę SprzedażRzeczywista[Sprzedaż].
- Wpisz średnik (,), aby określić pierwszy filtr, wpisz PRE, a następnie kliknij dwukrotnie funkcję PREVIOUSQUARTER .
Po wybraniu funkcji PREVIOUSQUARTER pojawi się kolejny nawias otwierający, wskazujący, że wymagany jest kolejny argument; tym razem dla funkcji POPRZEDNIA.CZĘŚĆ. - Wpisz kilka pierwszych liter Dim, a następnie kliknij dwukrotnie ciąg WymiarData[KluczDaty].
- Zamknij zarówno argument przekazywany do funkcji PREVIOUSQUARTER, jak i do funkcji CALCULATE, wpisując dwa nawiasy zamykające )).
Formuła powinna teraz wyglądać następująco:
Sprzedaż w poprzednim kwartale:=CALCULATE(SprzedażRzeczywista[Sprzedaż], PREVIOUSQUARTER(DimDate[DateKey])) - Kliknij przycisk sprawdzania formuły na pasku formuły, aby sprawdzić poprawność formuły. Jeśli zostanie wyświetlony komunikat o błędzie, sprawdź każdy element składni.
Gotowe! Miara została właśnie utworzona przy użyciu języka DAX i nie jest to łatwa metoda. Ta formuła spowoduje obliczenie całkowitej sprzedaży w poprzednim kwartale, w zależności od filtrów zastosowanych w tabeli przestawnej lub na wykresie przestawnym.
Właśnie zapoznałeś się z kilkoma ważnymi aspektami formuł języka DAX. Po pierwsze, formuła ta zawierała dwie funkcje. Zwróć uwagę, że funkcja POPRZEDNIA.CZWARTA jest zagnieżdżona jako argument przekazywany do funkcji CALCULATE . Formuły języka DAX mogą zawierać maksymalnie 64 funkcje zagnieżdżone. Jest mało prawdopodobne, aby formuła kiedykolwiek zawierała tak wiele funkcji zagnieżdżonych. W rzeczywistości taka formuła byłaby bardzo trudna do utworzenia i debugowania, a także prawdopodobnie nie byłaby zbyt szybka.
W tej formule również użyto filtrów. Filtry zawężają zakres obliczeń. W tym przypadku jako argument został wybrany jeden filtr, który w rzeczywistości jest inną funkcją. Później dowiesz się więcej o filtrach.
Na końcu użyto funkcji CALCULATE. Jest to jedna z najbardziej zaawansowanych funkcji w języku DAX. Podczas tworzenia modeli danych i tworzenia bardziej złożonych formuł prawdopodobnie będziesz używać tej funkcji wiele razy. Omówienie funkcji CALCULATE wykracza poza zakres tego przewodnika Szybki start, ale wraz ze wzrostem wiedzy na temat języka DAX zwróć szczególną uwagę na tę pozycję.
Uwaga
Zazwyczaj, aby używać funkcji analizy czasowej w formułach języka DAX, należy określić unikatową kolumnę dat przy użyciu okna dialogowego Oznaczanie jako tabeli dat. W skoroszycie Samples.xlsx Formuła języka DAX firmy Contoso kolumna KluczDaty w tabeli DimDate jest wybrana jako unikatowa kolumna daty.
Extra Credit
Być może zastanawiasz się, jaka jest najprostsza formuła języka DAX, jaką mogę utworzyć? Cóż, odpowiedź na to pytanie brzmi: "formuła, której nie musisz". I to jest dokładnie to, co można zrobić, używając standardowej funkcji agregacji w miarze. Niemal każdy model danych musi filtrować i wykonywać obliczenia na danych zagregowanych. Na przykład funkcja SUMA zastosowana wcześniej w miarze Suma kwoty sprzedaży jest używana do sumowania wszystkich liczb w określonej kolumnie. Język DAX zawiera także kilka innych funkcji agregujących wartości. Formuły można tworzyć automatycznie przy użyciu standardowych funkcji agregacji, korzystając z funkcji Autosumowanie.
Dodatkowe zadanie kredytowe: Tworzenie formuły miary przy użyciu funkcji Autosumowanie
- W tabeli SprzedażRzeczywista przewiń do kolumny ZwracanaIlość, a następnie kliknij nagłówek kolumny, aby zaznaczyć całą kolumnę.
- Na karcie Narzędzia główne na wstążce w grupie Obliczenia kliknij przycisk Autosumowanie.
Kliknij strzałkę w dół obok przycisku Autosumowanie, a następnie kliknij pozycję Średnia (zwróć uwagę na inne standardowe funkcje agregacji, których można również używać).
Natychmiast tworzona jest nowa miara o nazwie Średnia z ReturnQuantity:, po której następuje formuła =AVERAGE([ReturnQuantity]).
Czyż to nie było proste? Oczywiście nie wszystkie formuły, które utworzysz, będą takie proste. Jednak za pomocą funkcji Autosumowanie można szybko i łatwo tworzyć formuły przy użyciu standardowych obliczeń agregacji.
Pozwoli to w miarę dobrze zrozumieć składnię używaną w formułach języka DAX. Zapoznano Cię również z naprawdę ciekawymi funkcjami, takimi jak IntelliSense i Autosumowanie, które ułatwiają szybkie, łatwe i dokładne tworzenie formuł. Oczywiście o składni można dowiedzieć się o wiele więcej. Aby dowiedzieć się więcej, warto zapoznać się z dokumentacją języka DAX lub książką SQL Books Online.
Składnia QuickQuiz
- Do czego służy ten przycisk na pasku formuły?
- Co zawsze otacza nazwę kolumny w formule języka DAX?
- Oto jak można napisać formułę dla następujących elementów:
Czy oblicz wartość w tabeli WymiarProdukt dla każdego wiersza w kolumnie obliczeniowej UnitMargin, odejmując wartości w kolumnie UnitCost od wartości w kolumnie UnitPrice?
Odpowiedzi znajdują się na końcu tego tematu.
Funkcje
Funkcje to wstępnie zdefiniowane formuły wykonujące obliczenia z wykorzystaniem określonych wartości, zwanych argumentami, w określonej kolejności lub strukturze. Argumentami mogą być inne funkcje, inne formuły, odwołania do kolumn, liczby, tekst, wartości logiczne, takie jak PRAWDA lub FAŁSZ, lub stałe.
Język DAX obejmuje następujące kategorie funkcji: data i godzina, informacyjne, funkcje logiczne, matematyczne, statystyczne, tekstowe i analizy czasowej. Jeśli znasz funkcje w formułach programu Excel, wiele funkcji w języku DAX będzie wyglądać podobnie do Ciebie. Unikatowość funkcji języka DAX polega jednak na następujących cechach:
- Funkcja języka DAX zawsze odwołuje się do pełnej kolumny lub tabeli. Jeśli chcesz użyć tylko określonych wartości z tabeli lub kolumny, możesz dodać filtry do formuły.
- Jeśli trzeba dostosować obliczenia wiersz po wierszu, język DAX udostępnia funkcje umożliwiające użycie bieżącej wartości wiersza lub powiązanej wartości jako rodzaju argumentu w celu wykonywania obliczeń różniących się w zależności od kontekstu. Później dowiesz się więcej o kontekście.
- Język DAX zawiera wiele funkcji, które zwracają tabelę, a nie wartość. Tabela nie jest wyświetlana, ale służy do wprowadzania danych dla innych funkcji. Można na przykład pobrać tabelę, a następnie policzyć zawarte w niej różne wartości lub obliczyć sumy dynamiczne dla przefiltrowanych tabel lub kolumn.
- Język DAX zawiera wiele różnych funkcji analizy czasowej. Funkcje te umożliwiają definiowanie lub wybieranie zakresów dat i wykonywanie na ich podstawie dynamicznych obliczeń. Można na przykład porównać sumy dla równoległych okresów.
Czasami trudno jest określić, których funkcji należy użyć w formule. Dodatek Power Pivot i projektant modeli tabelarycznych w narzędziach danych programu SQL Server zawierają funkcję Wstaw funkcję, okno dialogowe, które ułatwia wybieranie funkcji według kategorii i udostępnia krótkie opisy poszczególnych funkcji.
Utwórzmy nową formułę zawierającą funkcję, którą wybierzesz za pomocą funkcji wstawiania funkcji:
Zadanie: dodawanie funkcji do formuły przy użyciu polecenia Wstaw funkcję
- W tabeli SprzedażRzeczywista przewiń do pierwszej kolumny wysuniętej w prawo, a następnie w nagłówku kolumny kliknij pozycję Dodaj kolumnę.
- Na pasku formuły wpisz znak równości (=).
- Kliknij przycisk Wstaw funkcję .
Spowoduje to otwarcie okna dialogowego Wstawianie funkcji . - W oknie dialogowym Wstawianie funkcji kliknij pole listy Wybierz kategorię . Domyślnie zaznaczona jest opcja Wszystkie , a poniżej wymieniono wszystkie funkcje z kategorii Wszystkie . To dużo funkcji, więc warto je filtrować, aby łatwiej znaleźć typ funkcji, którego szukasz.
- W przypadku tej formuły chcesz zwrócić dane, które już istnieją w innej tabeli. W tym celu użyjesz funkcji w kategorii Filtruj. Kliknij kategorię Filtr , a następnie w obszarze Wybierz funkcję przewiń w dół i kliknij dwukrotnie funkcję POWIĄZANE. Kliknij przycisk OK , aby zamknąć okno dialogowe Wstawianie funkcji .
- Skorzystaj z funkcji IntelliSense, aby łatwiej znaleźć i wybrać kolumnę WymiarKanał[nazwa_kanału].
- Zamknij formułę, a następnie naciśnij klawisz Enter.
- Po naciśnięciu klawisza Enter w celu uzupełnienia formuły na pasku stanu u dołu okna dodatku Power Pivot zostanie wyświetlony wyraz Obliczanie. Zobaczysz, że właśnie została utworzona nowa kolumna w tabeli SprzedażRzeczywista z informacjami o kanałach z tabeli WymiarKanał.
- Zmień nazwę kolumny Kanał.
Odpowiednia formuła powinna wyglądać następująco: =RELATED(DimChannel[ChannelName])
Właśnie zapoznano Cię z inną bardzo ważną funkcją języka DAX — funkcją RELATED . Funkcja RELATED zwraca wartości z innej tabeli. Klauzuli RELATED można użyć pod warunkiem, że istnieje relacja między tabelą, w której aktualnie się znajdujesz, a tabelą zawierającą wartości, które chcesz uzyskać. Oczywiście funkcja RELATED ma ogromne możliwości. W takim przypadku możesz teraz uwzględnić kanał sprzedaży dla każdej sprzedaży w tabeli SprzedażRzeczywista. Teraz można ukryć tabelę WymiarKanał na liście pól tabeli przestawnej, co ułatwia nawigację i wyświetlanie tylko najważniejszych informacji, których naprawdę potrzebujesz. Podobnie jak opisana wcześniej funkcja OBLICZ, funkcja POWIĄZANE jest bardzo ważna i prawdopodobnie będziesz jej używać wielokrotnie.
Jak widać, funkcje języka DAX ułatwiają tworzenie bardzo zaawansowanych formuł. Tak naprawdę dotknęliśmy tylko podstaw funkcji. Wraz z poprawą umiejętności języka DAX będziesz tworzyć formuły przy użyciu wielu różnych funkcji. Jednym z najlepszych miejsc do uzyskiwania szczegółowych informacji o wszystkich funkcjach języka DAX jest dokumentacja języka DAX (Data Analysis Expressions).
Szybki test dotyczący funkcji
- Do czego funkcja zawsze się odwołuje?
- Czy formuła może zawierać więcej niż jedną funkcję?
- Jakiej kategorii funkcji można użyć do łączenia dwóch ciągów tekstowych w jeden?
Odpowiedzi znajdują się na końcu tego tematu.
Kontekst
Kontekst jest jednym z najważniejszych pojęć języka DAX, które należy zrozumieć. Istnieją dwa typy kontekstu w języku DAX; Kontekst wiersza i kontekst filtru. Najpierw przyjrzymy się kontekstowi wiersza.
Kontekst wiersza
Kontekst wiersza jest najłatwiej traktować jako bieżący wiersz. Pamiętasz na przykład kolumnę obliczeniową Marża, którą widziałeś wcześniej, gdy uczyłeś się o składni? Formuła =[KwotaSprzedaży] - [KosztCałkowity] oblicza wartość w kolumnie Marża dla każdego wiersza w tabeli. Wartości dla każdego wiersza są obliczane na podstawie wartości w dwóch innych kolumnach: [KwotaSprzedaży] i [KosztCałkowity] w tym samym wierszu. Język DAX może obliczać wartości dla każdego wiersza w kolumnie Marża, ponieważ ma kontekst: W każdym wierszu pobiera wartości z kolumny [KosztCałkowity] i odejmuje je od wartości w kolumnie [KwotaSprzedaży].
W zaznaczonej komórce, pokazanej poniżej, wartość 49,54 zł w bieżącym wierszu została obliczona przez odjęcie wartości 51,54 zł w kolumnie [KosztCałkowity] od wartości 101,08 zł w kolumnie [KwotaSprzedaży].
Kontekst wiersza dotyczy nie tylko kolumn obliczeniowych. Kontekst wiersza ma zastosowanie również wtedy, gdy formuła zawiera funkcję stosującą filtry identyfikujące pojedynczy wiersz w tabeli. Funkcja z natury zastosuje kontekst wiersza dla każdego wiersza tabeli, według którego filtruje. Ten typ kontekstu wiersza najczęściej dotyczy miar.
Kontekst filtru
Kontekst filtru jest nieco trudniejszy do zrozumienia niż kontekst wiersza. Kontekst filtru można najprościej traktować jako: Co najmniej jeden filtr zastosowany w obliczeniach, które określają wynik lub wartość.
Kontekst filtru nie istnieje zamiast kontekstu wiersza; Ma on raczej zastosowanie jako dodatek do kontekstu wiersza. Aby na przykład jeszcze bardziej zawęzić wartości uwzględniane w obliczeniach, można zastosować kontekst filtru, który nie tylko określa kontekst wiersza, ale także określa tylko określoną wartość (filtr) w kontekście tego wiersza.
Kontekst filtru jest łatwo widoczny w tabelach przestawnych. Na przykład dodanie tabeli KosztCałkowity do obszaru Wartości oraz dodanie kolumn Year i Region do wiersza lub kolumn powoduje zdefiniowanie kontekstu filtru, który wybiera podzbiór danych na podstawie danego roku i regionu.
Dlaczego kontekst filtru jest tak ważny dla języka DAX? Ponieważ kontekst filtru można najłatwiej zastosować, dodając etykiety kolumn i wierszy oraz fragmentatory w tabeli przestawnej, ale kontekst filtru można również zastosować w formule języka DAX, definiując filtr przy użyciu funkcji, takich jak ALL, RELATED, FILTER, CALCULATE, według relacji oraz według innych miar i kolumn. Przyjrzyjmy się na przykład następującej formule w mierze o nazwie SprzedażSklepu:
Ta formuła jest oczywiście bardziej złożona niż niektóre inne formuły, które widzisz. Jednak aby lepiej zrozumieć tę formułę, można ją podzielić, podobnie jak w przypadku innych formuł.
Ta formuła zawiera następujące elementy składni:
- Nazwa miary SprzedażSklepu, po której następuje dwukropek :.
- Operator znaku równości (=) wskazuje początek formuły.
- Funkcja CALCULATE oblicza wyrażenie jako argument w kontekście zmodyfikowanym przez określone filtry.
- Co najmniej jeden argument jest ujęty w nawias ().
- Miara [Sales] w tej samej tabeli co wyrażenie. Miara Sprzedaż zawiera formułę: =SUMA(SprzedażRzeczywista[KwotaSprzedaży]).
- Każdy filtr jest oddzielony przecinkiem (;).
- Kolumna, której dotyczy odwołanie, i określona wartość, WymiarKanał[nazwa_kanału] ="Store", jako filtr.
Ta formuła zapewni, że tylko wartości sprzedaży zdefiniowane przez miarę Sprzedaż jako filtr będą obliczane tylko dla wierszy w kolumnie WymiarKanał[nazwa_kanału] z wartością "Sklep" jako filtrem.
Jak możesz sobie wyobrazić, możliwość definiowania kontekstu filtru w formule daje ogromne i zaawansowane możliwości. Możliwość odwoływania się tylko do określonej wartości w powiązanej tabeli to tylko jeden z takich przykładów. Nie przejmuj się, jeśli nie od razu do końca rozumiesz kontekst. Tworząc własne formuły, lepiej zrozumiesz kontekst i zrozumiesz, dlaczego jest on tak ważny w języku DAX.
Szybki test kontekstowy
- Jakie są dwa typy kontekstu?
- Co to jest kontekst filtru?
- Co to jest kontekst wiersza?
Odpowiedzi znajdują się na końcu tego tematu.
Podsumowanie
Teraz, gdy znasz już podstawy najważniejszych pojęć w języku DAX, możesz zacząć samodzielnie tworzyć formuły języka DAX dla kolumn obliczeniowych i miar. Nauka języka DAX rzeczywiście może być nieco trudna, ale dostępnych jest wiele zasobów. Po kilkukrotnym przeczytaniu tego tematu i wypróbowaniu kilku własnych formuł możesz dowiedzieć się więcej o innych koncepcjach i formułach języka DAX, które mogą pomóc w rozwiązywaniu problemów biznesowych. Istnieje wiele zasobów dotyczących języka DAX dostępnych w pomocy dodatku Power Pivot, książkach online programu SQL Server, oficjalnych dokumentach i blogach zarówno firmy Microsoft, jak i czołowych specjalistów w dziedzinie analizy biznesowej. Witryna Wiki Centrum zasobów DAX (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) to dobre miejsce, aby zacząć. Dokumentację języka DAX (Data Analysis Expressions) jest również cennym zasobem. Pamiętaj, aby zapisać go w ulubionych.
Język DAX w oficjalnym dokumencie modelu tabelarycznego analizy biznesowej, który jest dostępny do pobrania (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409), zapewnia bardziej szczegółowe omówienie przedstawionych tu pojęć, a także wielu innych zaawansowanych pojęć i formuł. W tym oficjalnym dokumencie użyto już tego samego skoroszytu z Formulas.xlsx języka DAX firmy Contoso.
Odpowiedzi do szybkiego quizu
Składnia:
- Otwiera operację Wstaw funkcję.
- Nawiasy kwadratowe [].
- =[CenaJednostkowa] - [KosztJednostkowy]
Funkcje:
- Tabela i kolumna.
- Tak. Formuła może zawierać maksymalnie 64 funkcje zagnieżdżone.
- Funkcje tekstowe.
Kontekst:
- Kontekst wiersza i kontekst filtru.
- Co najmniej jeden filtr w obliczeniu, który określa pojedynczą wartość.
- Bieżący wiersz.