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 różne typy operatorów obliczeń: operacje arytmetyczne, porównania, łączenie 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/Znak

3–1–1

* (gwiazdka)

Mnożenie

3*3

/ (ukośnik)

Dzielenie

3/3

^ (daszek)

Potęgowanie

16^4

Ostrzeżenie

Znak plus można funkcja zarówno jako operatora dwuargumentowego i jako operator jednoargumentowy.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 Stycznia 2009"

>=

Większe lub równe

[Ilość] >= 20000

<=

Mniejsze lub równe

[Ilość] <= 100

<>

Nie równa się

[Region] <> "USA"

Operator łączenia tekstu

Należy wykorzystać znak (&) do łączyć, lub złączyć dwie lub więcej tekstu ciągi w celu utworzenia pojedynczego fragmentu tekstu.

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 (|) do wyrażeń do wyprodukowania pojedynczy wynik.

Operator tekstowy

Znaczenie

Przykłady

&& (podwójna 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") && ([BikeBuyer] = "yes"))

|| (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 wyrażeniu –1)

* i /

Mnożenie i dzielenie

+ 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 nawiasy otaczające pierwszą część formuły wymusić Obliczanie wyrażenie (3 + 0.25) pierwszy, a następnie podzielił wynik przez wynik wyrażenie (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:

  1. Po pierwsze oba operandy są konwertowane na typ danych wspólnej możliwie największą.

  2. Następnie operandy są porównywane.

Na przykład użytkownik chce połączyć dwie liczby.Jeden numer wyniki z formuły, takie jak =[Price] * .20, a wynik 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)

Boolean

String

DateTime

Waluta

Liczby (R8)

Boolean

String

Variant

Waluta

Aby uzyskać więcej informacji na temat danych niejawna konwersja typu Zobacz 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.