Informacje dotyczące operatorów języka DAX używanych w programie PowerPivot
W języku DAX (Data Analysis Expression) operatory służą do tworzenia wyrażeń, które porównują wartości, przeprowadzają obliczenia arytmetyczne i wykonują operacje na ciągach. W tej sekcji opisano użycie poszczególnych operatorów.
Typy operatorów
Istnieją cztery typy operatorów obliczeniowych: arytmetyczne, porównania, łączenia tekstu i logiczne.
Operatory arytmetyczne
Do wykonywania podstawowych operacji matematycznych, takich jak dodawanie, odejmowanie lub mnożenie, do łączenia liczb, a także do generowania wyników liczbowych można używać poniższych operatorów arytmetycznych.
Operator arytmetyczny |
Znaczenie |
Przykład |
---|---|---|
+ (znak plus) |
Dodawanie |
3+3 |
– (znak minus) |
Odejmowanie lub znak |
3–1–1 |
* (gwiazdka) |
Mnożenie |
3*3 |
/ (ukośnik) |
Dzielenie |
3/3 |
^ (daszek) |
Potęgowanie |
16^4 |
[!UWAGA]
Znak plus może pełnić funkcję zarówno operatora binarnego, jak i operatora jednoargumentowego. Operator binarny wymaga liczb po obu stronach operatora i wykonuje operację dodawania. Jeśli w formule języka DAX zostaną użyte wartości po obu stronach operatora binarnego, następuje próba zrzutowania wartości na liczbowe typy danych, o ile wartości te nie są już liczbami. Tymczasem operator jednoargumentowy może zostać zastosowany do dowolnego typu argumentu. Symbol plus nie wpływa na typ ani wartość i jest po prostu ignorowany, podczas gdy operator minus tworzy wartość ujemną w przypadku zastosowania go do wartości liczbowej.
Operatory porównania
Dwie wartości można porównać za pomocą poniższych operatorów. Przeprowadzenie takiego porównania za pomocą tych operatorów daje w wyniku wartość logiczną PRAWDA lub FAŁSZ.
Operator porównania |
Znaczenie |
Przykład |
---|---|---|
= |
Równa się |
[Region] = "USA" |
> |
Większe niż |
[Data sprzedaży] > "Sty 2009" |
< |
Mniejsze niż |
[Data sprzedaży] < "1 sty 2009" |
>= |
Większe lub równe |
[Kwota] >= 20000 |
<= |
Mniejsze lub równe |
[Kwota] <= 100 |
<> |
Nie równa się |
[Region] <> "USA" |
Operator łączenia tekstu
Aby połączyć co najmniej dwa ciągi tekstowe w pojedynczy blok tekstu, należy użyć znaku handlowego „i” (&).
Operator tekstowy |
Znaczenie |
Przykład |
---|---|---|
& (handlowe „i”) |
Umożliwia łączenie dwóch wartości, dając w wyniku jedną, ciągłą wartość tekstową. |
[Region] & ", " & [Miasto] |
Operatory logiczne
Operatory logiczne (&& i ||) służą do łączenia wyrażeń, tak by dawały jeden wynik.
Operator tekstowy |
Znaczenie |
Przykłady |
---|---|---|
&& (podwójne handlowe „i”) |
Umożliwia tworzenie warunku ORAZ między dwoma wyrażeniami, których wynikiem jest wartość logiczna. Jeśli oba wyrażenia zwracają wartość PRAWDA, kombinacja tych wyrażeń również zwraca wartość PRAWDA; w przeciwnym wypadku kombinacja zwraca wartość FAŁSZ. |
([Region] = "Francja") && ([NabywcaRoweru] = "tak")) |
|| (podwójny symbol potoku) |
Umożliwia tworzenie warunku LUB między dwoma wyrażeniami logicznymi. Jeśli którekolwiek z wyrażeń zwraca wartość PRAWDA, wynik jest wartością PRAWDA; wynik jest wartością FAŁSZ tylko wtedy, gdy oba wyrażenia zwracają wartość FAŁSZ. |
(([Region] = "Francja") || ([NabywcaRoweru] = "tak")) |
Operatory i ich hierarchia ważności
W niektórych przypadkach kolejność wykonywania obliczeń może wpływać na zwracaną wartość, dlatego warto wiedzieć, jak ta kolejność jest ustalana i jak można ją zmienić, aby uzyskać żądany wynik.
Kolejność obliczeń
W wyrażeniu operatory i wartości są stosowane w określonej kolejności. Wszystkie wyrażenia zawsze rozpoczynają się od znaku równości (=). Znak równości wskazuje, że następujące po nim znaki stanowią wyrażenie.
Po znaku równości następują elementy obliczane (argumenty operacji), które są rozdzielone operatorami obliczeniowymi. Wyrażenia są zawsze odczytywane od lewej do prawej, ale kolejnością grupowania elementów można do pewnego stopnia sterować za pomocą nawiasów.
Hierarchia ważności operatorów
W przypadku połączenia kilku operatorów w jedną formułę kolejność operacji jest ustalana zgodnie z poniższą tabelą. Jeśli operatory mają równą wartość priorytetu, są stosowane od lewej do prawej. Jeśli na przykład wyrażenie zawiera zarówno operator mnożenia, jak i dzielenia, są one stosowane w kolejności ich pojawiania się w wyrażeniu, od lewej do prawej.
Operator |
Opis |
---|---|
^ |
Potęgowanie |
– |
Znak (jak w przypadku liczby –1) |
* i / |
Mnożenie i dzielenie |
! |
NIE (operator jednoargumentowy) |
+ i – |
Dodawanie i odejmowanie |
& |
Łączenie dwóch ciągów tekstu (łączenie) |
=< ><=>=<> |
Porównywanie |
Używanie nawiasów do sterowania kolejnością obliczeń
Aby zmienić kolejność obliczeń, należy ująć w nawias tę część formuły, która ma być obliczona jako pierwsza. Na przykład poniższa formuła daje wynik 11, ponieważ mnożenie jest wykonywane przed dodawaniem. Formuła mnoży wartość 2 przez wartość 3, a następnie dodaje do wyniku wartość 5.
=5+2*3
W przypadku użycia nawiasów w celu zmiany składni kolejność zostaje zmieniona w taki sposób, że najpierw są dodawane wartości 5 i 2, a następnie wynik jest mnożony przez 3, dając wartość 21.
=(5+2)*3
W poniższym przykładzie nawias otaczający pierwszą część formuły powoduje, że najpierw jest obliczane wyrażenie (3 + 0.25), a następnie wynik jest dzielony przez wynik wyrażenia 3 - 0.25).
=(3 + 0.25)/(3 - 0.25)
W poniższym przykładzie, zgodnie z regułami pierwszeństwa operatorów, najpierw jest stosowany operator potęgowania, a następnie operator znaku. Wynikiem tego wyrażenia jest liczba -4.
=-2^2
Aby operator znaku był najpierw stosowany do wartości liczbowej, można użyć nawiasów służących do sterowania operatorami, tak jak pokazano w poniższym przykładzie. Wynikiem tego wyrażenia jest liczba 4.
= (-2)^2
Uwagi dotyczące zgodności
Aparat języka DAX z łatwością obsługuje i porównuje różne typy danych, zachowując się podobnie jak program Microsoft Excel. Jednak jego aparat obliczeniowy jest oparty na usługach SQL Server Analysis Services i oferuje dodatkowe zaawansowane funkcje relacyjnego magazynu danych, w tym bardziej rozbudowaną obsługę typów daty i godziny. Dlatego w niektórych przypadkach wyniki obliczeń i zachowanie funkcji mogą nie być takie same jak w programie Excel. Ponadto język DAX obsługuje więcej typów danych niż program Excel. W tej sekcji opisano najważniejsze różnice.
Konwersja typów danych argumentów operacji
Ogólnie dwa argumenty operacji po lewej i prawej stronie dowolnego operatora powinny mieć ten sam typ danych. Jeśli jednak będą mieć różne typy danych, aparat języka DAX przekonwertuje je na wspólny typ danych w celu wykonania porównania, tak jak opisano poniżej:
Najpierw oba argumenty operacji są konwertowane na największy możliwy wspólny typ danych.
Następnie argumenty operacji są porównywane.
Na przykład użytkownik chce połączyć dwie liczby. Jedna liczba jest wynikiem formuły, takiej jak =[Price] * .20, i może zawierać wiele miejsc dziesiętnych. Druga liczba jest liczbą całkowitą, która została podana jako wartość ciągu.
W tym przypadku aparat języka DAX wykona konwersję obu liczb na liczby rzeczywiste w formacie liczbowym, używając największego formatu liczbowego, w którym mogą być przechowywane oba te rodzaje liczb. Następnie aparat języka DAX porówna te wartości.
Tymczasem w programie Excel nastąpiłaby próba porównania wartości różnych typów bez uprzedniego konwertowania ich na typ wspólny. Z tego powodu to samo wyrażenie porównania może dawać inne wyniki w języku DAX niż w programie Excel.
Typy danych używane w języku DAX |
Typy danych używane w programie Excel |
---|---|
Liczby (I8, R8) Wartość logiczna Ciąg Data i godzina Waluta |
Liczby (R8) Wartość logiczna Ciąg Wariant Waluta |
Aby uzyskać więcej informacji dotyczących niejawnej konwersji typów danych, zobacz temat Typy danych obsługiwane w skoroszytach programu PowerPivot.
Różnice w hierarchii ważności
Kolejność wykonywania operacji w formułach języka DAX jest zasadniczo taka sama jak w programie Microsoft Excel, ale niektóre operatory programu Excel, na przykład procent, nie są obsługiwane. Nie są również obsługiwane zakresy.
Dlatego przy kopiowaniu i wklejaniu formuły z programu Excel należy pamiętać o dokładnym przeanalizowaniu formuły, ponieważ niektóre jej operatory lub elementy mogą być nieprawidłowe. W przypadku jakichkolwiek wątpliwości dotyczących kolejności wykonywania operacji zaleca się użycie nawiasów w celu ustalenia tej kolejności i wyeliminowania wszelkich niejednoznaczności wyniku.