Pisanie formuł języka DAX
Każdy typ obliczenia modelu — tabela obliczeniowa, kolumna obliczeniowa lub miara — jest definiowany przez jego nazwę, po której następuje symbol równości (=) i formuła języka DAX. Użyj następującego szablonu, aby utworzyć obliczenie modelu:
<Calculation name> = <DAX formula>
Na przykład definicja tabeli obliczeniowej Ship Date (Data wysyłki ), która duplikuje dane tabeli Date (Data) to:
Ship Date = 'Date'
Formuła języka DAX składa się z wyrażeń, które zwracają wynik. Wynik jest obiektem tabeli lub wartością skalarną. Formuły tabeli obliczeniowej muszą zwracać obiekt tabeli; formuły kolumn obliczeniowych i miar muszą zwracać wartość skalarną (pojedynczą wartość).
Formuły składają się z:
- funkcji języka DAX;
- operatorów języka DAX;
- odwołań do obiektów modelu;
- Wartości stałe, takie jak liczba 24 lub tekst literału "FY" (skrót roku obrachunkowego)
- zmiennych języka DAX;
- odstępów.
Porada
Podczas wprowadzania formuł języka DAX w Power BI Desktop korzyści wynikające z funkcji IntelliSense. Funkcja IntelliSense to ułatwienie umożliwiające uzupełnianie kodu, które wyświetla listę funkcji i zasobów modelu. Po wybraniu funkcji języka DAX dostępna jest również definicja i opis. Zalecamy korzystanie z funkcji IntelliSense w celu szybkiego tworzenia dokładnych formuł.
funkcji języka DAX;
Podobnie jak w programie Microsoft Excel, język DAX jest językiem funkcjonalnym, co oznacza, że formuły opierają się na funkcjach w celu osiągnięcia określonych celów. Zazwyczaj funkcje języka DAX mają argumenty, które umożliwiają przekazywanie zmiennych. W formułach można używać wielu wywołań funkcji, a funkcje są często zagnieżdżane w innych funkcjach.
W formule po nazwach funkcji muszą następować nawiasy. W nawiasach przekazywane są zmienne.
Uwaga
Niektóre funkcje nie przyjmują argumentów lub argumenty mogą być opcjonalne.
Korzystanie z funkcji języka DAX opisano w dalszej części tego modułu.
operatorów języka DAX;
Formuły opierają się również na operatorach, które mogą wykonywać obliczenia arytmetyczne, porównywać wartości, pracować z ciągami lub warunki testowe.
Operatory języka DAX opisano bardziej szczegółowo w dalszej części tego modułu.
odwołań do obiektów modelu;
Formuły mogą odwoływać się tylko do trzech typów obiektów modelu: tabel, kolumn lub miar. Formuła nie może odwoływać się do hierarchii lub poziomu hierarchii. (Pamiętaj, że poziom hierarchii jest oparty na kolumnie, dlatego formuła może odwoływać się do kolumny poziomu hierarchii).
Odwołania do tabel
Podczas odwołowania się do tabeli w formule oficjalnie nazwa tabeli jest ujęta w pojedynczy cudzysłów. W poniższej definicji tabeli obliczeniowej zwróć uwagę, że tabela Date jest ujęta w pojedynczy cudzysłów.
Ship Date = 'Date'
Jednak pojedyncze cudzysłowy można pominąć, gdy spełnione są oba następujące warunki:
- Nazwa tabeli nie zawiera osadzonych spacji.
- Nazwa tabeli nie jest zastrzeżonym słowem używanym przez język DAX. Wszystkie nazwy funkcji i operatory języka DAX są słowami zarezerwowanymi. Date to nazwa funkcji języka DAX, która wyjaśnia, dlaczego podczas odwoływania się do tabeli o nazwie Date należy ująć ją w pojedynczy cudzysłów.
W poniższej definicji tabeli obliczeniowej podczas odwoływania się do tabeli Airport można pominąć pojedyncze cudzysłów:
Arrival Airport = Airport
Odwołania do kolumn
Jeśli odwołujesz się do kolumny w formule, nazwa kolumny musi być ujęta w nawiasy kwadratowe. Opcjonalnie można ją poprzedzić nazwą tabeli. Na przykład następująca definicja miary odwołuje się do kolumny Sales Amount (Kwota sprzedaży).
Revenue = SUM([Sales Amount])
Nazwy kolumn są unikatowe w obrębie tabeli, ale nie muszą być unikatowe w obrębie modelu, dlatego można ujednoznacznić odwołanie do kolumny, poprzedzając ją nazwą tabeli. Ujednoznaczniona kolumna jest nazywana w pełni kwalifikowaną kolumną. Niektóre funkcje języka DAX wymagają przekazywania w pełni kwalifikowanych kolumn.
Porada
W celu poprawienia czytelności formuł zalecamy zawsze poprzedzanie odwołań do kolumn nazwą tabeli.
Definicję miary z poprzedniego przykładu można zapisać jako:
Revenue = SUM(Sales[Sales Amount])
Odwołania do miar
Jeśli odwołujesz się do miary w formule, na przykład odwołania do nazwy kolumny, nazwa miary musi być ujęta w nawiasy kwadratowe. Na przykład następująca definicja miary odwołuje się do miar Revenue (Przychód) i Cost (Koszt).
Profit = [Revenue] - [Cost]
Jeśli jesteś początkującym użytkownikiem języka DAX, fakt, że odwołania do kolumn i miar są zawsze ujęte w nawiasy kwadratowe, mogą powodować zamieszanie podczas próby odczytania formuły. Jednak w miarę umiejętności korzystania z podstaw języka DAX będziesz w stanie określić, jakiego typu obiekt jest, ponieważ w formułach języka DAX, kolumnach i miarach są używane na różne sposoby.
Porada
Odwołanie do miary można poprzedzić nazwą tabeli. Jednak miary są obiektami na poziomie modelu. Są przypisane do tabeli głównej, jednak jest to jedynie kosmetyczna relacja mająca na celu uporządkowanie miar w okienku Fields (Pola).
Dlatego, mimo że zalecamy zawsze poprzedzanie odwołań do kolumn nazwą tabeli, w przypadku miar jest odwrotnie: Zalecamy, aby nigdy nie poprzedzać odwołań do miar nazwą tabeli.
Aby uzyskać więcej informacji, zobacz Odwołania do kolumn i miar.
zmiennych języka DAX;
Formuły mogą deklarować zmienne języka DAX do przechowywania wyników.
Jak i kiedy należy używać zmiennych języka DAX, omówiono w dalszej części tego modułu.
Odstępy
Odstępy są znakami, których można używać do formatowania formuł w taki sposób, aby można było je szybko i łatwo zrozumieć. Znaki odstępu to:
- spacje,
- tabulatory,
- znaki powrotu karetki.
Odstępy są opcjonalne i nie modyfikują logiki formuły ani nie wpływają negatywnie na jej wydajność. Zdecydowanie zalecamy wdrożenie stylu formatowania i stosowanie go spójnie oraz uwzględnienie następujących zaleceń:
- Używaj spacji między operatorami.
- Używaj tabulatorów, aby wciąć zagnieżdżone wywołania funkcji.
- Użyj znaków powrotu karetki, aby oddzielić argumenty funkcji, zwłaszcza gdy jest zbyt długa, aby zmieścić je w jednym wierszu. Formatowanie w ten sposób ułatwia rozwiązywanie problemów, szczególnie gdy w formule brakuje nawiasu.
- Lepiej jest stosować za dużo znaków odstępu niż za mało.
Porada
Na pasku formuły, aby wprowadzić powrót karetki, naciśnij klawisze Shift+Enter. Naciśnięcie klawisza Enter samodzielnie spowoduje zatwierdzenie formuły.
Rozważmy następującą definicję miary, która jest zapisana w jednym wierszu i zawiera pięć wywołań funkcji języka DAX:
Revenue YoY % = DIVIDE([Revenue] - CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])))
Poniższy przykład przedstawia tę samą definicję miary, ale sformatowaną, co poprawia czytelność i ułatwia zrozumienie:
Revenue YoY % =
DIVIDE(
[Revenue]
- CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
),
CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
)
)
Spróbuj samodzielnie sformatować miarę. Otwórz plik Power BI Desktop Adventure Works DW 2020 M02.pbix, a następnie w okienku Pola rozwiń tabelę Sales (Sprzedaż), a następnie wybierz miarę Revenue YoY % (Przychód w % rok do roku). Na pasku formuły użyj znaków zwracanych tabulatora i karetki, aby wygenerować ten sam wynik co w poprzednim przykładzie. Po dodaniu powrotu karetki pamiętaj, aby nacisnąć klawisze Shift+Enter.
Tę definicję miary można dodatkowo poprawić w celu zapewnienia czytelności i wydajności, co zostanie wyjaśnione w dalszej części tego modułu.
Porada
Doskonałym narzędziem do formatowania z innego źródła, które może pomóc w formatowaniu obliczeń, jest program DAX Formatter. To narzędzie pozwala wkleić obliczenia i sformatować je. Następnie możesz skopiować sformatowane obliczenie do schowka i wkleić je z powrotem do Power BI Desktop.