operatory DAX
Język języka Data Analysis Expression (DAX) używa operatorów do tworzenia wyrażeń porównujących values, wykonywania obliczeń arytmetycznych, or pracy z ciągami.
Typy operatorów
Istnieją cztery różne typy operatorów obliczeń: arytmetyka, porównanie, łączenie tekstu, and logiczne.
Operatory arytmetyczne
Aby wykonywać podstawowe operacje matematyczne, takie jak dodawanie, odejmowanie, or mnożenie; łączenie liczb; and wygenerować wyniki liczbowe, użyj następujących operatorów arytmetycznych.
Operator arytmetyczny | Znaczenie | Przykład |
---|---|---|
+ (plus sign) |
Dodatek | 3+3 |
- (minus sign) |
Odejmowanie orsign | 3-1-1 |
* (gwiazdka) |
Mnożenie | 3*3 |
/ (ukośnik do przodu) |
Dzielenie | 3/3 |
^ (karetki) |
Potęgowanie | 16^4 |
Notatka
sign plus może działać zarówno jako operator binarny and, jak i jako operator jednoargumentowy . Operator binarny wymaga liczb po obu stronach operatora, and wykonuje dodawanie. Jeśli używasz values w formule DAX po obu stronach operatora binarnego, DAX próbuje rzutować values na typy danych liczbowych, if są one not już liczby. Natomiast operator jednoargumentowy można zastosować do dowolnego typu argumentu. Symbol plus not nie wpływa na typ orvalueand i jest po prostu ignorowany, podczas gdy operator minus tworzy ujemne value, if zastosowane do liczb value.
Operatory porównania
Można porównać dwie values za pomocą następujących operatorów. Gdy dwa values są porównywane przy użyciu tych operatorów, wynikiem jest wartość logiczna value, czyli TRUE
orFALSE
.
Operator porównania | Znaczenie | Przykład |
---|---|---|
= |
Równe | [Region] = "Stany Zjednoczone" |
== |
Ścisła równość | [Region] == "USA" |
> |
Większe niż | [Sales Date] > "Jan 2009" |
< |
Mniejsze niż | [Sales Date] < "1 stycznia 2009" |
>= |
Większe niż lub równe or | [Kwota] >= 20000 |
<= |
Mniejsze niż or równe | [Amount] <= 100 |
<> |
Not jest równe | [Region] <> "USA" |
All operatory porównania except == traktują BLANK równą 0, pusty ciąg "", DATE(1899, 12, 30), orFALSE
. W związku z tym [Kolumna] = 0 stanie się true, gdy value [Kolumna] jest równy 0 lub orlubBLANK. Natomiast [Kolumna] == 0 jest true tylko wtedy, gdy value [Kolumna] wynosi 0.
Operator łączenia tekstu
Użyj znaku ampersand (&
), aby połączyć, orconcatenate, co najmniej dwa or ciągi tekstowe w celu utworzenia pojedynczego fragmentu tekstu.
Operator tekstu | Znaczenie | Przykład |
---|---|---|
& (et) |
Łączy się, or łączy dwa values, aby utworzyć jeden ciągły tekst value | [Region] & ", " & [City] |
Operatory logiczne
Użyj operatorów logicznych (&&
) and (||
), 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.
If 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.
If gdy wyrażenie zwraca TRUE , to wynik jest TRUE ; tylko wtedy, gdy oba wyrażenia są FALSE , wynik to 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 w kolejności and
W niektórych przypadkach kolejność wykonywania obliczeń może mieć wpływ na valueReturn ; Dlatego ważne jest, aby zrozumieć, w jaki sposób kolejność jest określana and jak można zmienić kolejność w celu uzyskania żądanych wyników.
Kolejność obliczeń
Wyrażenie oblicza operatory andvalues w określonej kolejności. All Wyrażenia zawsze zaczynają się od znaku równości sign (=). Symbol równania sign wskazuje, że następujące znaki stanowią wyrażenie.
Po równym sign są elementy do obliczenia (operandy), które są oddzielone operatorami obliczeń. Wyrażenia są zawsze odczytywane z left do right, ale kolejność grupowania elementów może być kontrolowana w pewnym stopniu przy użyciu nawiasów.
Priorytet operatorów
If połączysz kilka operatorów w jednej formule, operacje są uporządkowane zgodnie z poniższą tabelą. If operatory mają ten sam priorytet valuei są uporządkowane od left do right. Na przykład if wyrażenie contains zarówno operator dzielenia and mnożenia, jak i w kolejności, w której są wyświetlane w wyrażeniu, od left do right.
Operator | Opis |
---|---|
^ |
Potęgowanie |
– |
Sign (na przykład –1) |
* and / |
Mnożenie and dzielenie |
+ and – |
Dodawanie and 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 tę część formuły, którą należy obliczyć first. Na przykład poniższa formuła generuje wartość 11, ponieważ mnożenie jest obliczane przed dodatkami. Formuła mnoży 2 przez 3, and następnie dodaje 5 do wyniku.
=5+2*3
Natomiast if używasz nawiasów do zmiany składni, kolejność jest zmieniana tak, aby 5 and 2 zostały dodane razem, and wynik pomnożony przez 3 w celu wygenerowania 21.
=(5+2)*3
W poniższym przykładzie nawiasy wokół first części formuły wymuszają obliczenie, aby evaluate wyrażenie (3 + 0.25)
firstand następnie divide wynik przez wynik wyrażenia, (3 - 0.25)
.
=(3 + 0.25)/(3 - 0.25)
W poniższym przykładzie operator wykładnika jest stosowany first, zgodnie z regułami pierwszeństwa dla operatorów, and następnie jest stosowany operator sign. Wynikiem tego wyrażenia jest -4.
=-2^2
Aby upewnić się, że operator sign jest stosowany do liczbowego valuefirst, możesz użyć nawiasów do kontrolowania operatorów, jak pokazano w poniższym przykładzie. Wynik dla tego wyrażenia to 4.
= (-2)^2
Zgodność
DAX łatwo obsługuje and porównuje różne typy danych, podobnie jak program Microsoft Excel. Jednak podstawowy aparat obliczeniowy jest oparty na usługach SQL Server Analysis Services and udostępnia dodatkowe zaawansowane funkcje relacyjnego magazynu danych, w tym bogatszą obsługę typów dateandtime. W związku z tym w niektórych przypadkach wyniki obliczeń or oraz zachowanie funkcji mogą not 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 bokach leftandright dowolnego operatora powinny być tym samym typem danych. Jednak if typy danych są różne, DAX przekształcimy convert 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, if 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
, and wynik może zawierać wiele miejsc dziesiętnych. Druga liczba to liczba całkowita podana jako ciąg value.
W tym przypadku DAXconvert obie liczby do liczb rzeczywistych w szeregu liczbowym format, używając największego formatu liczbowego format, który może przechowywać oba rodzaje liczb. Następnie DAX zastosuje mnożenie.
W zależności od kombinacji typu danych, wymuszanie typu może not być stosowane w operacjach porównawczych. Aby uzyskać pełną listę typów danych obsługiwanych przez DAX, zobacz typy danych obsługiwane w modelach tabelarycznychandTypy danych w programie Power BI Desktop.
Liczba całkowita, liczba rzeczywista, Currency, Date/timeandBlank są traktowane jako liczbowe do celów porównania. Blank oblicza wartość zero podczas przeprowadzania porównania. Następujące kombinacje typów danych są obsługiwane w przypadku operacji porównania.
typ danych po stronie Left | Typ danych dodatkowych Right |
---|---|
Numeryczny | Numeryczny |
boolowski | boolowski |
Struna | Struna |
Pozostałe mieszane porównania typów danych zwracają error. Na przykład formuła taka jak ="1" > 0 zwraca error z informacją, że operacje porównania DAXnot obsługują porównywanie values typu Tekst z values 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 |
Currency | Currency |
Różnice w kolejności pierwszeństwa
Kolejność pierwszeństwa operacji w formułach DAX jest w zasadzie taka sama jak w Excelu, ale niektóre operatory programu Excel, takie jak procent, są not obsługiwane. Ponadto zakresy not są obsługiwane.
Dlatego podczas kopiowania and wklejania formuł z programu Excel należy dokładnie przejrzeć formułę, ponieważ niektóre operatory or elementów w formułach mogą not prawidłowe. Jeśli istnieją jakiekolwiek wątpliwości co do kolejności wykonywania operacji, zaleca się użycie nawiasów do kontrolowania kolejności operacji, and usunąć wszelkie niejednoznaczności dotyczące wyniku.