Poznaj podstawy języka DAX w programie Power BI Desktop

Użytkownicy, którzy są nowi w programie Power BI Desktop, mogą używać tego artykułu jako szybkiego i łatwego wprowadzenia do sposobu używania języka DAX (Data Analysis Expressions) do rozwiązywania wielu podstawowych problemów z obliczeniami i analizą danych. Omówimy niektóre informacje koncepcyjne, serię zadań, które można wykonać, oraz test wiedzy, aby przetestować zdobytą wiedzę. Po ukończeniu tego artykułu należy dobrze zrozumieć najważniejsze podstawowe pojęcia w języku DAX.

Co to jest język DAX?

Język DAX to kolekcja funkcji, operatorów i stałych, które mogą być używane w formule lub wyrażeniu do obliczania i zwracania co najmniej jednej wartości. Język DAX ułatwia tworzenie nowych informacji na podstawie danych już w modelu.

Dlaczego język DAX jest tak ważny?

Łatwo jest utworzyć nowy plik programu Power BI Desktop i zaimportować do niego pewne dane. Możesz nawet tworzyć raporty, które pokazują cenne szczegółowe informacje bez używania żadnych formuł języka DAX. Ale co zrobić, jeśli chcesz przeanalizować procent wzrostu w różnych kategoriach produktów i dla różnych zakresów dat? Czy też musisz obliczyć wzrost rok do roku w porównaniu z trendami rynkowymi? Formuły języka DAX zapewniają tę funkcję i wiele innych ważnych funkcji. Edukacja, jak tworzyć efektywne formuły języka DAX, pomogą Ci jak najlepiej wykorzystać dane. Gdy uzyskasz potrzebne informacje, możesz rozpocząć rozwiązywanie rzeczywistych problemów biznesowych, które wpływają na najważniejsze informacje.

Wymagania wstępne

Być może znasz już tworzenie formuł w programie Microsoft Excel i ta wiedza będzie przydatna w zrozumieniu języka DAX. Ale nawet jeśli nie masz doświadczenia z formułami programu Excel, pojęcia opisane tutaj pomogą Ci rozpocząć tworzenie formuł języka DAX i rozwiązywanie rzeczywistych problemów z analizą biznesowej od razu.

Skoncentrujemy się na zrozumieniu formuł języka DAX używanych w obliczeniach, w szczególności w miarach i kolumnach obliczeniowych. Musisz już zapoznać się z importowaniem danych i dodawaniem pól do raportu przy użyciu programu Power BI Desktop, a także zapoznać się z podstawowymi pojęciami dotyczącymi miar i kolumn obliczeniowych.

Przykładowy skoroszyt

Najlepszym sposobem na nauczenie się języka DAX jest utworzenie podstawowych formuł, użycie ich z rzeczywistymi danymi i wyświetlenie wyników dla siebie. Przykłady i zadania w tym miejscu używają pliku Contoso Sales Sample dla programu Power BI Desktop. Ten przykładowy plik jest taki sam, jak używany w artykule Samouczek: tworzenie własnych miar w programie Power BI Desktop .

Zacznijmy

Poznamy język DAX wokół trzech podstawowych pojęć: Składnia, Funkcje i Kontekst. Istnieją inne ważne pojęcia w języku DAX, ale zrozumienie tych trzech pojęć zapewni najlepszą podstawę do budowania umiejętności języka DAX.

Składnia

Przed utworzeniem własnych formuł przyjrzyjmy się składni formuł języka DAX. Składnia zawiera różne elementy tworzące formułę lub po prostu sposób pisania formuły. Oto na przykład prosta formuła języka DAX dla miary:

Zrzut ekranu przedstawiający formułę języka DAX ze wskaźnikami do poszczególnych elementów składni.

Ta formuła zawiera następujące elementy składni:

Odp. Nazwa miary Total Sales( Łączna sprzedaż).

B. Operator znaku równości (=), który wskazuje początek formuły. Po obliczeniu zostanie zwrócony wynik.

C. Funkcja JĘZYKA DAX SUM, która sumuje wszystkie liczby w kolumnie Sales[SalesAmount]. Więcej informacji o funkcjach znajdziesz później.

D. Nawias (), który otacza wyrażenie zawierające co najmniej jeden argument. Większość funkcji wymaga co najmniej jednego argumentu. Argument przekazuje wartość do funkcji.

E. Tabela, do których się odwołuje, Sales.

F. Przywoływana kolumna [SalesAmount], w tabeli Sales. Za pomocą tego argumentu funkcja SUM wie, która kolumna ma agregować sumę.

Podczas próby zrozumienia formuły języka DAX często warto podzielić poszczególne elementy na język, który myślisz i mówisz codziennie. Na przykład można odczytać następującą formułę jako:

Dla miary o nazwie Total Sales (=) oblicz sumę wartości w kolumnie [SalesAmount] w tabeli Sales.

Po dodaniu do raportu ta miara oblicza i zwraca wartości, sumując kwoty sprzedaży dla każdego z pozostałych pól, które uwzględniamy, na przykład Komórki Telefon w USA.

Możesz myśleć: "Czy ta miara nie robi tego samego, co gdybym po prostu dodać pole SalesAmount do mojego raportu?" Cóż, yeah. Istnieje jednak dobry powód, aby utworzyć własną miarę, która sumuje wartości z pola SalesAmount: Możemy użyć jej jako argumentu w innych formułach. To rozwiązanie może wydawać się teraz nieco mylące, ale wraz ze wzrostem umiejętności formuł języka DAX wiedza o tym, że ta miara sprawi, że formuły i model będą wydajniejsze. W rzeczywistości miara Total Sales będzie wyświetlana jako argument w innych formułach później.

Przyjrzyjmy się jeszcze kilku rzeczom dotyczącym tej formuły. W szczególności wprowadziliśmy funkcję SUM. Funkcje to wstępnie napisane formuły, które ułatwiają wykonywanie złożonych obliczeń i manipulowania liczbami, datami, godzinami, tekstem i nie tylko. Więcej informacji o funkcjach znajdziesz później.

Zobaczysz również, że nazwa kolumny [SalesAmount] została poprzedzona tabelą Sales, do której należy kolumna. Ta nazwa jest znana jako w pełni kwalifikowana nazwa kolumny, która zawiera nazwę kolumny poprzedzoną nazwą tabeli. Kolumny, do których odwołuje się ta sama tabela, nie wymagają, aby nazwa tabeli została uwzględniona w formule, co może sprawić, że długie formuły odwołujące się do wielu kolumn będą krótsze i łatwiejsze do odczytania. Warto jednak uwzględnić nazwę tabeli w formułach miar, nawet jeśli znajdują się w tej samej tabeli.

Uwaga

Jeśli nazwa tabeli zawiera spacje, zastrzeżone słowa kluczowe lub niedozwolone znaki, musisz ująć nazwę tabeli w pojedynczy cudzysłów. Należy również ująć nazwy tabel w cudzysłowie, jeśli nazwa zawiera jakiekolwiek znaki poza zakresem znaków alfanumerycznych ANSI, niezależnie od tego, czy ustawienia regionalne obsługują zestaw znaków, czy nie.

Ważne jest, aby formuły miały poprawną składnię. W większości przypadków, jeśli składnia nie jest poprawna, zwracany jest błąd składniowy. W innych przypadkach składnia może być poprawna, ale zwracane wartości mogą nie być oczekiwane. Edytor języka DAX w programie Power BI Desktop zawiera funkcję sugestii, która służy do tworzenia składniowo poprawnych formuł, pomagając wybrać poprawne elementy.

Utwórzmy przykładową formułę. To zadanie pomoże Ci lepiej zrozumieć składnię formuł i jak funkcja sugestii na pasku formuły może Ci pomóc.

Zadanie: Tworzenie formuły miary

  1. Pobierz i otwórz plik programu Power BI Desktop z przykładu Contoso Sales Sample.

  2. W widoku Raport na liście pól kliknij prawym przyciskiem myszy tabelę Sales (Sprzedaż ), a następnie wybierz pozycję Nowa miara.

  3. Na pasku formuły zastąp ciąg Miara , wprowadzając nową nazwę miary Previous Quarter Sales.

  4. Po znaku równości wpisz kilka pierwszych liter CAL, a następnie kliknij dwukrotnie funkcję, której chcesz użyć. W tej formule chcesz użyć funkcji CALCULATE .

    Użyjesz funkcji CALCULATE, aby filtrować kwoty, które chcemy zsumować według argumentu przekazanego do funkcji CALCULATE. Ten typ funkcji jest określany jako funkcje zagnieżdżania. Funkcja CALCULATE ma co najmniej dwa argumenty. Pierwszy to wyrażenie do obliczenia, a drugi to filtr.

  5. Po nawiasie otwierającym ( dla funkcji CALCULATE wpisz SUM , a następnie inny nawias otwierający (.

    Następnie przekażemy argument do funkcji SUM.

  6. Zacznij wpisywać tekst Sal, a następnie wybierz pozycję Sales[SalesAmount], a następnie nawias zamykający ).

    Ten krok tworzy pierwszy argument wyrażenia dla naszej funkcji CALCULATE.

  7. Wpisz przecinek (,), a następnie spację, aby określić pierwszy filtr, a następnie wpisz PREVIOUSQUARTER.

    Użyjesz funkcji analizy czasowej PREVIOUSQUARTER, aby filtrować wyniki SUM według poprzedniego kwartału.

  8. Po nawiasie otwierającym ( dla funkcji PREVIOUSQUARTER wpisz Calendar[DateKey].

    Funkcja PREVIOUSQUARTER ma jeden argument, kolumnę zawierającą ciągły zakres dat. W naszym przypadku jest to kolumna DateKey w tabeli Calendar.

  9. Zamknij oba argumenty przekazywane do funkcji PREVIOUSQUARTER i funkcji CALCULATE, wpisując dwa nawiasy zamykające )))..

    Formuła powinna teraz wyglądać następująco:

    Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  10. Wybierz znacznik Ikona znacznika wyboru wyboru na pasku formuły lub naciśnij klawisz Enter, aby zweryfikować formułę i dodać ją do tabeli Sales.

Udało Ci się! Właśnie utworzono złożoną miarę przy użyciu języka DAX. To, co zrobi ta formuła, to obliczenie łącznej sprzedaży w poprzednim kwartale w zależności od filtrów zastosowanych w raporcie. Na przykład możemy umieścić miarę SalesAmount i nową miarę Previous Quarter Sales z tabeli Sales na wykres kolumnowy Grupowany. Następnie z tabeli Calendar dodaj pozycję Year jako fragmentator i wybierz pozycję 2011. Następnie dodaj pozycję QuarterOfYear jako inny fragmentator i wybierz 4, a następnie uzyskamy wykres podobny do następującego:

Wykres Previous Quarter Sales and SalesAmount

Należy pamiętać, że przykładowy model zawiera tylko niewielką ilość danych sprzedaży z 1.1.2011 do 1.19.2013. Jeśli wybierzesz rok lub kwartał, w którym nie można zsumować wartości SalesAmount lub nowa miara nie może obliczyć danych sprzedaży dla bieżącego lub poprzedniego kwartału, nie są wyświetlane żadne dane dla tego okresu. Jeśli na przykład wybierzesz wartość 2011 rok i 1 dla wartości QuarterOfYear, dla kolumny Previous Quarter Sales nie są wyświetlane żadne dane, ponieważ w czwartym kwartale 2010 r. nie ma danych.

Przedstawiono kilka ważnych aspektów formuł języka DAX:

  • Ta formuła zawierała dwie funkcje. PREVIOUSQUARTER, funkcja analizy czasowej, jest zagnieżdżona jako argument przekazywany do funkcji CALCULATE, funkcji filtru.

    Formuły języka DAX mogą zawierać maksymalnie 64 zagnieżdżone funkcje. Jest mało prawdopodobne, aby formuła kiedykolwiek zawierała tak wiele zagnieżdżonych funkcji. W rzeczywistości taka formuła byłaby trudna do utworzenia i debugowania i prawdopodobnie nie byłaby szybka.

  • W tej formule użyto również filtrów. Filtry zawężają to, co zostanie obliczone. W takim przypadku wybrano jeden filtr jako argument, który jest wynikiem innej funkcji. Więcej informacji na temat filtrów znajdziesz później.

  • Użyto funkcji CALCULATE. Ta funkcja jest jedną z najbardziej zaawansowanych funkcji w języku DAX. Podczas tworzenia modeli i tworzenia bardziej złożonych formuł prawdopodobnie będziesz używać tej funkcji wiele razy. Chociaż dalsza dyskusja na temat funkcji CALCULATE wykracza poza zakres tego artykułu, w miarę rozwoju wiedzy na temat języka DAX zwróć szczególną uwagę na tę funkcję.

Składnia QuickQuiz

  1. Co robi ten przycisk na pasku formuły?

    Wybór przycisku

  2. Co zawsze otacza nazwę kolumny w formule języka DAX?

Odpowiedzi znajdują się na końcu tego artykułu.

Funkcje

Funkcje to wstępnie zdefiniowane formuły, które wykonują obliczenia przy użyciu określonych wartości, nazywanych argumentami, w określonej kolejności lub strukturze. Argumenty mogą być innymi funkcjami, inną formułą, wyrażeniem, odwołaniami do kolumn, liczbami, tekstem, wartościami logicznymi, takimi jak TRUE lub FALSE, lub stałe.

Język DAX obejmuje następujące kategorie funkcji: Data i godzina, Analiza czasowa, Informacje, Logiczne, Matematyczne, Statystyczne, Tekstowe, Nadrzędne/Podrzędne i Inne funkcje. Jeśli znasz funkcje w formułach programu Excel, wiele funkcji w języku DAX będzie wyglądać podobnie do ciebie; jednak funkcje języka DAX są unikatowe w następujący sposób:

  • 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 musisz dostosować obliczenia na podstawie wiersza, język DAX udostępnia funkcje, które umożliwiają używanie bieżącej wartości wiersza lub powiązanej wartości jako rodzaju argumentu do wykonywania obliczeń na podstawie kontekstu. Więcej informacji na temat kontekstu znajdziesz później.

  • Język DAX zawiera wiele funkcji, które zwracają tabelę, a nie wartość. Tabela nie jest wyświetlana, ale służy do udostępniania danych wejściowych innym funkcjom. Możesz na przykład pobrać tabelę, a następnie zliczyć w niej różne wartości lub obliczyć sumy dynamiczne między przefiltrowanych tabel lub kolumn.

  • Język DAX zawiera różne funkcje analizy czasowej. Te funkcje umożliwiają definiowanie lub wybieranie zakresów dat i wykonywanie dynamicznych obliczeń na ich podstawie. Na przykład można porównać sumy w okresach równoległych.

  • Program Excel ma popularną funkcję VLOOKUP. Funkcje języka DAX nie przyjmują komórki ani zakresu komórek jako odwołania, takiego jak FUNKCJA VLOOKUP w programie Excel. Funkcje języka DAX przyjmują kolumnę lub tabelę jako odwołanie. Pamiętaj, że w programie Power BI Desktop pracujesz z modelem danych relacyjnych. Szukanie wartości w innej tabeli jest łatwe i w większości przypadków nie trzeba tworzyć żadnych formuł.

    Jak widać, funkcje w języku DAX mogą pomóc w tworzeniu zaawansowanych formuł. Omówiliśmy tylko podstawy funkcji. W miarę rozwoju umiejętności języka DAX utworzysz formuły przy użyciu wielu różnych funkcji. Jednym z najlepszych miejsc, aby dowiedzieć się więcej o poszczególnych funkcjach języka DAX, jest odwołanie funkcji języka DAX.

Funkcje — quickQuiz

  1. Do czego zawsze odwołuje się funkcja?
  2. Czy formuła może zawierać więcej niż jedną funkcję?
  3. Jakiej kategorii funkcji używasz do łączenia dwóch ciągów tekstowych w jeden ciąg?

Odpowiedzi znajdują się na końcu tego artykułu.

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. Stosuje się ją za każdym razem, gdy formuła ma funkcję, która stosuje filtry w celu zidentyfikowania pojedynczego wiersza w tabeli. Funkcja z natury zastosuje kontekst wiersza dla każdego wiersza tabeli, w którym jest filtruje. Ten typ kontekstu wiersza najczęściej dotyczy miar.

Kontekst filtru

Kontekst filtru jest nieco trudniej zrozumieć niż kontekst wiersza. Kontekst filtru można łatwo traktować jako: co najmniej jeden filtr zastosowany w obliczeniu, który określa wynik lub wartość.

Kontekst filtru nie istnieje zamiast kontekstu wiersza; zamiast tego ma zastosowanie oprócz kontekstu wiersza. Aby na przykład dokładniej zawęzić wartości do uwzględnienia w obliczeniu, można zastosować kontekst filtru, który nie tylko określa kontekst wiersza, ale także określa określoną wartość (filtr) w tym kontekście wiersza.

Kontekst filtru jest łatwo widoczny w raportach. Na przykład po dodaniu pozycji TotalCost do wizualizacji, a następnie dodaniu pozycji Year (Rok) i Region (Region) definiujesz kontekst filtru, który wybiera podzbiór danych na podstawie danego roku i regionu.

Dlaczego kontekst filtru jest tak ważny dla języka DAX? Wiesz już, że kontekst filtru można zastosować, dodając pola do wizualizacji. Kontekst filtru można również zastosować w formule języka DAX, definiując filtr z funkcjami, takimi jak ALL, RELATED, FILTER, CALCULATE, by relacje oraz inne miary i kolumny. Przyjrzyjmy się na przykład następującej formule w mierze o nazwie Store Sales:

Miara Store Sales

Aby lepiej zrozumieć tę formułę, możemy ją podzielić, podobnie jak w przypadku innych formuł.

Ta formuła zawiera następujące elementy składni:

Odp. Nazwa miary Store Sales.

B. Operator znaku równości (=), który wskazuje początek formuły.

C. Funkcja CALCULATE, która oblicza wyrażenie jako argument w kontekście zmodyfikowanym przez określone filtry.

D. Nawias (), który otacza wyrażenie zawierające co najmniej jeden argument.

E. Miara [Total Sales] w tej samej tabeli co wyrażenie. Miara Total Sales ma formułę: =SUM(Sales[SalesAmount]).

F. Przecinek (,), który oddziela pierwszy argument wyrażenia od argumentu filtru.

G. W pełni kwalifikowana kolumna Channel [ChannelName]. To jest nasz kontekst wiersza. Każdy wiersz w tej kolumnie określa kanał, taki jak Store lub Online.

H. Określona wartość Store jako filtr. To jest nasz kontekst filtru.

Ta formuła zapewnia, że tylko wartości sprzedaży zdefiniowane przez miarę Total Sales są obliczane tylko dla wierszy w kolumnie Channel[ChannelName] z wartością Store używaną jako filtr.

Jak można sobie wyobrazić, możliwość definiowania kontekstu filtru w formule ma ogromne i zaawansowane możliwości. Możliwość odwołowania się tylko do określonej wartości w powiązanej tabeli jest tylko jednym z takich przykładów. Nie martw się, jeśli nie rozumiesz kontekstu od razu. Podczas tworzenia własnych formuł lepiej zrozumiesz kontekst i dlaczego jest to tak ważne w języku DAX.

Kontekst — quickQuiz

  1. Jakie są dwa typy kontekstu?
  2. Co to jest kontekst filtru?
  3. Co to jest kontekst wiersza?

Odpowiedzi znajdują się na końcu tego artykułu.

Podsumowanie

Teraz, gdy masz podstawową wiedzę na temat najważniejszych pojęć w języku DAX, możesz rozpocząć tworzenie formuł języka DAX dla miar samodzielnie. Język DAX może być rzeczywiście trochę trudny do nauki, ale istnieje wiele zasobów dostępnych dla Ciebie. Po zapoznaniu się z tym artykułem i eksperymentowaniu z kilkoma własnymi formułami możesz dowiedzieć się więcej o innych pojęciach i formułach języka DAX, które mogą pomóc w rozwiązywaniu własnych problemów biznesowych. Dostępnych jest wiele zasobów języka DAX; Najważniejsze jest odwołanie do języka DAX (Data Analysis Expressions).

Ponieważ język DAX istnieje od kilku lat w innych narzędziach do analizy biznesowej firmy Microsoft, takich jak modele tabelaryczne usług Power Pivot i Analysis Services, istnieje wiele wspaniałych informacji o źródłach. Więcej informacji można znaleźć w książkach, oficjalny dokumentach i blogach zarówno firmy Microsoft, jak i czołowych specjalistów ds. analizy biznesowej. Centrum zasobów języka DAX jest również doskonałym miejscem do rozpoczęcia.

Odpowiedzi szybkich zapytań

Składnia:

  1. Weryfikuje i wprowadza miarę do modelu.
  2. Nawiasy kwadratowe [].

Funkcje:

  1. Tabela i kolumna.
  2. Tak. Formuła może zawierać maksymalnie 64 zagnieżdżone funkcje.
  3. Funkcje tekstowe.

Kontekst:

  1. Kontekst wiersza i kontekst filtru.
  2. Co najmniej jeden filtr w obliczeniu, który określa jedną wartość.
  3. Bieżący wiersz.