operatory DAX
Język języka Data Analysis Expression (DAX) używa operatorów do tworzenia wyrażeń porównujących wartości, wykonywania obliczeń arytmetycznych lub pracy z ciągami.
Typy operatorów
Istnieją cztery różne typy operatorów obliczeń: arytmetyka, porównanie, łączenie tekstu i logiczne.
Operatory arytmetyczne
Aby wykonywać podstawowe operacje matematyczne, takie jak dodawanie, odejmowanie lub mnożenie; łączenie liczb; i wygeneruj wyniki liczbowe, użyj następujących operatorów arytmetycznych.
Operator arytmetyczny | Znaczenie | Przykład |
---|---|---|
+ (znak plus) |
Dodatek | 3+3 |
- (znak minus) |
Odejmowanie lub znak | 3-1-1 |
* (gwiazdka) |
Mnożenie | 3*3 |
/ (ukośnik do przodu) |
Dzielenie | 3/3 |
^ (karetki) |
Potęgowanie | 16^4 |
Notatka
Znak plus może działać zarówno jako operator binarny , jak i jako operator jednoargumentowy . Operator binarny wymaga liczb po obu stronach operatora i wykonuje dodawanie. Jeśli używasz wartości w formule DAX po obu stronach operatora binarnego, DAX próbuje rzutować wartości na typy danych liczbowych, jeśli nie są jeszcze liczbami. Natomiast operator jednoargumentowy można zastosować do dowolnego typu argumentu. Symbol plus nie ma wpływu na typ lub wartość i jest po prostu ignorowany, podczas gdy operator minus tworzy wartość ujemną, jeśli zostanie zastosowana do wartości liczbowej.
Operatory porównania
Można porównać dwie wartości z następującymi operatorami. Gdy dwie wartości są porównywane przy użyciu tych operatorów, wynik jest wartością logiczną, TRUE
lub FALSE
.
Operator porównania | Znaczenie | Przykład |
---|---|---|
= |
Równe | [Region] = "Stany Zjednoczone" |
== |
Ścisła równość | [Region] == "USA" |
> |
Większe niż | [Data sprzedaży] > "Jan 2009" |
< |
Mniejsze niż | [Data sprzedaży] < "1 stycznia 2009" |
>= |
Większe niż lub równe | [Kwota] >= 20000 |
<= |
Mniejsze niż lub równe | [Amount] <= 100 |
<> |
Nie równa się | [Region] <> "USA" |
Wszystkie operatory porównania z wyjątkiem == traktują BLANK równe 0, pusty ciąg "", DATE(1899, 12, 30) lub FALSE
. W związku z tym, [Kolumna] = 0 będzie prawdziwe, gdy wartość [Kolumna] wynosi 0 lub BLANK. Natomiast wartość [Column] == 0 jest prawdziwa tylko wtedy, gdy wartość [Kolumna] wynosi 0.
Operator łączenia tekstu
Użyj znaku ampersand (&
), aby sprzężć lub połączyć dwa lub więcej ciągów tekstowych w celu utworzenia pojedynczego fragmentu tekstu.
Operator tekstu | Znaczenie | Przykład |
---|---|---|
& (et) |
Łączy lub łączy dwie wartości w celu utworzenia jednej ciągłej wartości tekstowej | [Region] & ", " & [City] |
Operatory logiczne
Użyj operatorów logicznych (&&
) i (||
), aby połączyć wyrażenia w celu wygenerowania pojedynczego wyniku.
Operator tekstu | Znaczenie | Przykłady |
---|---|---|
&& (podwójny znak i) |
Tworzy warunek AND między dwoma wyrażeniami, z których oba mają wynik typu Boolean. Jeśli oba wyrażenia zwracają TRUE , kombinacja wyrażeń zwraca również TRUE ; w przeciwnym razie kombinacja zwraca FALSE . |
([Region] = "France") && ([BikeBuyer] = "yes")) |
|| (podwójny symbol potoku) |
Tworzy warunek OR między dwoma wyrażeniami logicznymi. Jeśli którekolwiek z wyrażeń zwraca TRUE , wynik jest TRUE ; tylko wtedy, gdy oba wyrażenia są FALSE jest wynikiem FALSE . |
(([Region] = "France") || ([BikeBuyer] = "yes")) |
IN |
Tworzy warunek logiczny OR między każdym wierszem porównywanym z tabelą. Uwaga: składnia konstruktora tabeli używa nawiasów klamrowych. | 'Product'[Color] IN { "Red", "Blue", "Black" } |
Operatory i kolejność pierwszeństwa
W niektórych przypadkach kolejność wykonywania obliczeń może mieć wpływ na wartość Zwracaną; dlatego ważne jest, aby zrozumieć, w jaki sposób kolejność jest określana i jak można zmienić kolejność w celu uzyskania żądanych wyników.
Kolejność obliczeń
Wyrażenie oblicza operatory i wartości w określonej kolejności. Wszystkie wyrażenia zawsze zaczynają się od znaku równości (=). Znak równości wskazuje, że następujące znaki tworzą wyrażenie.
Po znaku równości są elementy do obliczenia (operandy), które są oddzielone operatorami obliczeń. Wyrażenia są zawsze odczytywane od lewej do prawej, ale kolejność grupowania elementów może być kontrolowana w pewnym stopniu przy użyciu nawiasów.
Priorytet operatorów
Jeśli połączysz kilka operatorów w jednej formule, operacje są uporządkowane zgodnie z poniższą tabelą. Jeśli operatory mają taką samą wartość pierwszeństwa, są uporządkowane od lewej do prawej. Jeśli na przykład wyrażenie zawiera zarówno operator mnożenia, jak i dzielenia, są obliczane w kolejności, w której są wyświetlane w wyrażeniu od lewej do prawej.
Operator | Opis |
---|---|
^ |
Potęgowanie |
– |
Znak (na przykład –1) |
* i / |
Mnożenie i dzielenie |
+ i – |
Dodawanie i odejmowanie |
& |
Łączy dwa ciągi tekstu (łączenie) |
=,==,<,>,<=,>=,<>,IN |
Porównanie |
NOT |
NOT (operator jednoargumentowy) |
Używanie nawiasów do kontrolowania kolejności obliczeń
Aby zmienić kolejność obliczania, należy ująć w nawiasy tej części formuły, która musi być obliczana jako pierwsza. Na przykład poniższa formuła generuje wartość 11, ponieważ mnożenie jest obliczane przed dodatkami. Formuła mnoży 2 przez 3, a następnie dodaje 5 do wyniku.
=5+2*3
Natomiast jeśli używasz nawiasów do zmiany składni, kolejność zostanie zmieniona tak, aby 5 i 2 zostały dodane razem, a wynik pomnożony przez 3 w celu utworzenia 21.
=(5+2)*3
W poniższym przykładzie nawiasy wokół pierwszej części formuły wymuszają obliczenie, aby najpierw ocenić wyrażenie (3 + 0.25)
, a następnie podzielić wynik przez wynik wyrażenia, (3 - 0.25)
.
=(3 + 0.25)/(3 - 0.25)
W poniższym przykładzie najpierw stosowany jest operator potęgowania zgodnie z regułami pierwszeństwa dla operatorów, a następnie operator zmiany znaku. Wynikiem tego wyrażenia jest -4.
=-2^2
Aby upewnić się, że operator znaku jest najpierw stosowany do wartości liczbowej, można użyć nawiasów do sterowania operatorami, jak pokazano w poniższym przykładzie. Wynik dla tego wyrażenia to 4.
= (-2)^2
Zgodność
DAX łatwo obsługuje i porównuje różne typy danych, podobnie jak program Microsoft Excel. Jednak podstawowy aparat obliczeniowy jest oparty na usługach SQL Server Analysis Services i udostępnia dodatkowe zaawansowane funkcje relacyjnego magazynu danych, w tym bogatszą obsługę typów dat i godzin. W związku z tym w niektórych przypadkach wyniki obliczeń lub zachowanie funkcji mogą nie być takie same jak w programie Excel. Ponadto DAX obsługuje więcej typów danych niż program Excel. W tej sekcji opisano kluczowe różnice.
Wymuszanie typów danych operandów
Ogólnie rzecz biorąc, dwa operandy po lewej i prawej stronie dowolnego operatora powinny być tego samego typu danych. Jeśli jednak typy danych są różne, DAX przekonwertuje je na wspólny typ danych, aby zastosować operator w niektórych przypadkach:
- Oba operandy są konwertowane na największy możliwy typ danych.
- Operator jest stosowany, jeśli to możliwe.
Załóżmy na przykład, że masz dwie liczby, które chcesz połączyć. Jedna liczba wynika z formuły, takiej jak =[Price] * .20
, a wynik może zawierać wiele miejsc dziesiętnych. Druga liczba to liczba całkowita, która została podana jako wartość ciągu.
W takim przypadku DAX przekonwertuje obie liczby na liczby rzeczywiste w formacie liczbowym, używając największego formatu liczbowego, który może przechowywać oba rodzaje liczb. Następnie DAX zastosuje mnożenie.
W zależności od kombinacji typu danych nie można zastosować przymusu typu do operacji porównania. Aby uzyskać pełną listę typów danych obsługiwanych przez DAX, zobacz typy danych obsługiwane w modelach tabelarycznych i typy danych w programie Power BI Desktop.
Liczba całkowita, liczba rzeczywista, waluta, data/godzina i wartość pusta są traktowane jako liczbowe do celów porównania. Wartość pusta daje wartość zero podczas porównywania. Następujące kombinacje typów danych są obsługiwane w przypadku operacji porównania.
Typ danych po lewej stronie | Typ danych po prawej stronie |
---|---|
Numeryczny | Numeryczny |
boolowski | boolowski |
Struna | Struna |
Inne mieszane porównania typów danych zwracają błąd. Na przykład formuła taka jak ="1" > 0 zwraca błąd informujący, że operacje porównania DAX nie obsługują porównywania wartości typu Text z wartościami typu Liczba całkowita.
Typy danych używane w DAX | Typy danych używane w programie Excel |
---|---|
Liczby (I8, R8) | Liczby (R8) |
Struna | Struna |
boolowski | boolowski |
Data/godzina | Wariant |
Waluta | Waluta |
Różnice w kolejności pierwszeństwa
Kolejność pierwszeństwa operacji w formułach DAX jest w zasadzie taka sama jak w przypadku programu Microsoft Excel, ale niektóre operatory programu Excel nie są obsługiwane, na przykład procent. Ponadto zakresy nie są obsługiwane.
Dlatego za każdym razem, gdy skopiujesz i wklejasz formuły z programu Excel, pamiętaj, aby dokładnie przejrzeć formułę, ponieważ niektóre operatory lub elementy w formułach mogą być nieprawidłowe. Jeśli istnieją jakiekolwiek wątpliwości co do kolejności wykonywania operacji, zaleca się używanie nawiasów do kontrolowania kolejności operacji i usuwania wszelkich niejednoznaczności dotyczących wyniku.