Udostępnij za pośrednictwem


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 TRUEorFALSE.

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:

  1. Oba operandy są konwertowane na największy możliwy typ danych.
  2. 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.

DAX składnia
DAX nazewnictwa parametrów