operatorów języka DAX;

Język Języka DAX (Data Analysis Expression) używa operatorów do tworzenia wyrażeń, które porównują wartości, wykonują obliczenia arytmetyczne lub pracują 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) Wydział 3/3
^ (daszek) Potęgowanie 16^4

Uwaga

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 języka DAX po obu stronach operatora binarnego, język 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, wynikiem jest wartość logiczna, PRAWDA lub FAŁSZ.

Operator porównania Znaczenie Przykład
= Równa się [Region] = "USA"
== Jest ściśle równe [Region] == "USA"
> Większe niż [Data sprzedaży] > "Styczeń 2009"
< Mniejsze niż [Data sprzedaży] < "1 stycznia 2009"
>= Większe niż lub równe [Amount] >= 20000
<= Mniejsze niż lub równe [Amount] <= 100
<> Nierówne [Region] <> "USA"

Wszystkie operatory porównania z wyjątkiem == traktują wartości BLANK jako równe 0, pusty ciąg "", DATE(1899, 12, 30) lub FALSE. W związku z tym wartość [Column] = 0 będzie mieć wartość true, gdy wartość kolumny [Column] 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
& (znak) Połączenie lub łączy dwie wartości w celu utworzenia jednej ciągłej wartości tekstowej [Region] & ", " & [Miasto]

Operatory logiczne

Użyj operatorów logicznych (&&) i (||), aby połączyć wyrażenia w celu wygenerowania pojedynczego wyniku.

Operator tekstu Znaczenie Przykłady
& (double ampersand) Tworzy warunek AND między dwoma wyrażeniami, z których każdy ma wynik logiczny. Jeśli oba wyrażenia zwracają wartość TRUE, kombinacja wyrażeń zwraca również wartość TRUE; w przeciwnym razie kombinacja zwraca wartość FALSE. ([Region] = "Francja") && ([BikeBuyer] = "yes"))
|| (symbol podwójnej rury) Tworzy warunek OR między dwoma wyrażeniami logicznymi. Jeśli którekolwiek z wyrażeń zwraca wartość TRUE, wynik ma wartość TRUE; tylko wtedy, gdy oba wyrażenia mają wartość FALSE, jest wynikiem FALSE. (([Region] = "Francja") || ([BikeBuyer] = "yes"))
IN Tworzy logiczny warunek 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 pomyślne znaki stanowią 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.

Kolejność wykonywania działań

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
Zaloguj się (tak jak w –1)
*I/ Mnożenie i dzielenie
+ i – Dodawanie i odejmowanie
& Połączenie dwa ciągi tekstu (łączenie)
=,==,<,>=,<>=,<>,IN Porównanie
NIE 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 operator wykładnika jest stosowany najpierw zgodnie z regułami pierwszeństwa dla operatorów, a następnie jest stosowany operator podpisywania. 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ść

Język 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 język DAX obsługuje więcej typów danych niż program Excel. W tej sekcji opisano kluczowe różnice.

Coercing 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, język DAX przekonwertuje 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, 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, i 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 język DAX przekonwertuje obie liczby na liczby rzeczywiste w formacie liczbowym przy użyciu największego formatu liczbowego, który może przechowywać oba rodzaje liczb. Następnie język 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 język DAX, zobacz Typy danych obsługiwane w modelach tabelarycznych i typach 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
Liczbowe Liczbowe
Wartość logiczna Wartość logiczna
String String

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 języka DAX nie obsługują porównywania wartości typu Text z wartościami typu Liczba całkowita.

Typy danych używane w języku DAX Typy danych używane w programie Excel
Liczby (I8, R8) Liczby (R8)
String String
Wartość logiczna Wartość logiczna
DateTime Wariant
Waluta Waluta

Różnice w kolejności pierwszeństwa

Kolejność pierwszeństwa operacji w formułach języka DAX jest w zasadzie taka sama jak ta używana przez program 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.

Składnia języka DAX
Nazewnictwo parametrów języka DAX