Korzystanie z operatorów języka DAX

Ukończone

Formuły języka DAX mogą używać operatorów do tworzenia wyrażeń wykonujących obliczenia arytmetyczne, porównywania wartości, pracy z ciągami lub warunków testowych.

Porada

Wiele operatorów języka DAX i kolejność wykonywania działań są takie same, jak w programie Excel.

Operatory arytmetyczne

W poniższej tabeli przedstawiono operatory arytmetyczne.

Operator Opis
+ Dodawanie
- Odejmowanie
* Mnożenie
/ Dzielenie
^ Potęgowanie

Pamiętaj, że podczas dzielenia dwóch wyrażeń, a gdy mianownik może zwrócić zero lub BLANK, jest bardziej wydajny i bezpieczniejszy do korzystania z DIVIDE funkcji języka DAX.

Operatory porównania

Poniższa tabela zawiera listę operatorów porównania, które są używane do porównywania dwóch wartości. Wynik jest wartością TRUE lub FALSE.

Operator Opis
= Jest równe
== Jest ściśle równe
> Większe niż
< Mniejsze niż
>= Większe niż lub równe
<= Mniejsze niż lub równe
<> Nie jest równe

Wszystkie operatory porównania z wyjątkiem jest ściśle równe (==) traktują wartość BLANK jako równą zero, pusty ciąg (""), datę 30 grudnia 1899 r. lub wartość FALSE. Oznacza to, że wyrażenie [Revenue] = 0 będzie prawdziwe, gdy wartość [Revenue] ma wartość zero lub BLANK. Natomiast wartość TRUE jest równa TRUE tylko wtedy, [Revenue] == 0 gdy wartość ma wartość [Revenue] zero.

Operator łączenia tekstu

Użyj znaku handlowego „i” (&), aby połączyć dwie wartości tekstowe w celu utworzenia jednej ciągłej wartości tekstowej. Rozważmy na przykład następującą definicję kolumny obliczeniowej:

Model Color = 'Product'[Model] & "-" & 'Product'[Color]

Operatory logiczne

Operatory logiczne służą do łączenia wyrażeń generujących pojedynczy wynik. W poniższej tabeli wymieniono wszystkie operatory logiczne.

Operator Opis
&& Tworzy warunek ORAZ między dwoma wyrażeniami, z których każde zwraca wartość logiczną. Jeśli oba wyrażenia zwracają wartość TRUE, kombinacja wyrażeń zwraca również wartość TRUE; w przeciwnym razie kombinacja zwraca wartość FALSE.
|| (podwójna rura) Tworzy warunek OR między dwoma wyrażeniami logicznymi. Jeśli któreś z wyrażeń zwraca wartość TRUE, wynikiem jest wartość TRUE; tylko gdy oba wyrażenia mają wartość FALSE, wynikiem jest wartość FALSE.
IN Tworzy logiczny warunek LUB między poszczególnymi wierszami, które są porównywane z tabelą. Uwaga: W składni konstruktora tabeli używane są nawiasy klamrowe.
NOT Odwraca stan wyrażenia warunkowego (FALSE na TRUE i odwrotnie).

Przykładem, który używa operatora logicznego IN , jest definicja miary ANZ Revenue , która używa CALCULATE funkcji języka DAX do wymuszania określonego filtru dwóch krajów: Australii i Nowej Zelandii.

Uwaga

Po zapoznaniu się z zaawansowaną CALCULATE funkcją dowiesz się, jak zmodyfikować kontekst filtru.

ANZ Revenue =
CALCULATE(
    [Revenue],
    Customer[Country-Region] IN {
        "Australia",
        "New Zealand"
    }
)

Kolejność wykonywania działań

Gdy formuła języka DAX zawiera wiele operatorów, w języku DAX są używane reguły w celu określenia kolejności obliczania, która jest znana jako kolejność wykonywania działań. Operacje są wykonywane w kolejności zgodnej z poniższą tabelą.

Operator Opis
^ Potęgowanie
- Znak (jako -1)
* i / Mnożenie i dzielenie
NOT NOT
+ i - Dodawanie i odejmowanie
& Łączenie dwóch ciągów tekstu
=,==,<,><=,>=,<> Porównanie

Gdy operatory mają taką samą wartość pierwszeństwa, są uporządkowane od lewej do prawej.

Ogólnie rzecz biorąc, kolejność wykonywania działań jest taka sama, jak w programie Excel. Jeśli zachodzi potrzeba przesłonięcia kolejności obliczania, należy zgrupować operacje w nawiasach.

Rozważmy na przykład następującą definicję kolumny obliczeniowej:

Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]

Ta przykładowa definicja kolumny obliczeniowej generuje niepoprawny wynik, ponieważ mnożenie następuje przed odejmowaniem. W poniższej poprawnej definicji kolumny obliczeniowej użyto nawiasów, aby upewnić się, że odejmowanie następuje przed mnożeniem.

Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])

Porada

Zapamiętanie reguł kolejności wykonywania działań może być trudne, szczególnie w przypadku początkujących użytkowników języka DAX. W związku z tym zalecamy dokładne testowanie formuł. Gdy formuły nie generują poprawnego wyniku z powodu nieprawidłowej kolejności obliczania, można eksperymentować, dodając nawiasy, aby dostosować kolejność obliczania. Można również dodać nawiasy, aby poprawić czytelność formuł.

Aby uzyskać więcej informacji na temat operatorów języka DAX i kolejności pierwszeństwa, zobacz Operatory języka DAX.

Niejawna konwersja

Podczas pisania formuły języka DAX, w której operatory są używane do łączenia różnych typów danych, nie trzeba jawnie konwertować typów. Zwykle język DAX automatycznie identyfikuje typy danych obiektów modelu, do których istnieją odwołania, i wykonuje niejawne konwersje, gdy jest to niezbędne do ukończenia określonej operacji.

Mogą jednak istnieć pewne ograniczenia dotyczące wartości, które można pomyślnie przekonwertować. Jeśli wartość lub kolumna zawiera typ danych, który jest niezgodny z bieżącą operacją, język DAX zwraca błąd. Na przykład próba pomnożenia wartości daty spowoduje wystąpienie błędu, ponieważ nie jest to logiczne.

Funkcja BLANK jest obsługiwana inaczej, w zależności od używanego operatora. Jest ona obsługiwana podobnie wartość BLANK w programie Excel, ale różni się w zależności od tego, w jaki sposób baza danych (SQL) traktuje wartość NULL. Wartość BLANK jest traktowana w działaniach jako zero przez operatory arytmetyczne oraz jako pusty ciąg podczas łączenia z ciągiem.

Porada

Zapamiętanie sposobu obsługi wartości BLANK może być trudne, szczególnie w przypadku początkujących użytkowników języka DAX. W związku z tym zalecamy dokładne testowanie formuł. Gdy zestawy BLAN tworzą nieoczekiwane wyniki, rozważ użycie IF funkcji języka DAX i ISBLANK do testowania wartości BLANK, a następnie odpowiadanie w odpowiedni sposób.