Udostępnij za pośrednictwem


składnia DAX

W tym artykule opisano wymagania dotyczące składni and języka wyrażeń formuły DAX.

Wymagania dotyczące składni

Formuła DAX zawsze zaczyna się od równej sign (=). Po wartości równej signmożna podać dowolne wyrażenie, które daje w wyniku wartość skalarną, or wyrażenie, które można przekonwertować na skalarny. Należą do nich następujące elementy:

  • Stała skalarna, wyrażenie or używające operatora skalarnego (+,-,*,/,>=,...,&&, ...)

  • Odwołania do kolumn tabel or. Język DAX zawsze używa kolumn tabel and jako danych wejściowych do funkcji, nigdy tablicy or ani dowolnego zestawu values.

  • Operatory, stałe andvalues podane jako część wyrażenia.

  • Wynik funkcji and zależy od jej wymaganych argumentów. Niektóre funkcje DAX zwracają tabelę zamiast skalarną, and muszą być opakowane w funkcję, która oblicza tabelę, and zwraca wartość skalarną; chyba że tabela jest jedną kolumną, pojedynczą tabelą wierszy, a następnie jest traktowana jako skalarna value.

    Większość funkcji DAX wymaga o jeden or więcej argumentów, które mogą obejmować tabele, kolumny, wyrażenia, andvalues. Jednak niektóre funkcje, takie jak PI, not wymagają argumentów, ale zawsze wymagają nawiasów, aby wskazać argument null. Na przykład zawsze musisz wpisać PI(), notPI. Funkcje można również zagnieżdżać w innych funkcjach.

  • Wyrażenia. Wyrażenie może zawierać jeden z następujących elementów: orall operatory, stałe, or odwołania do kolumn.

Na przykład poniżej przedstawiono all prawidłowych formuł.

Formuła Wynik
= 3 3
= "Sales" Sprzedaż
= 'Sales'[Amount] If użyjesz tej formuły w tabeli Sprzedaż, uzyskasz value kolumny Kwota w tabeli Sprzedaż dla bieżącego wiersza.
= (0.03 *[Amount])

=0.03 * [Amount]
Trzy procent value w kolumnie Amount bieżącej tabeli.

Mimo że ta formuła może służyć do calculate wartości procentowej, wynik jest not wyświetlany jako wartość procentowa, chyba że zastosowano formatowanie w tabeli.
= PI() value stałej pi.

Formuły mogą zachowywać się inaczej w zależności od sposobu ich użycia. Zawsze należy pamiętać o kontekście and oraz o tym, w jaki sposób dane używane w formule mają się related do innych danych, które mogą być używane w obliczeniach.

Wymagania dotyczące nazewnictwa

Model danych często contains wielu tabel. Razem tabele and ich kolumny składają się z bazy danych przechowywanej w silniku analityki w pamięci (VertiPaq). W tej bazie danych all tabele muszą mieć unikatowe nazwy. Nazwy kolumn muszą być również unikatowe w każdej tabeli. All nazwy obiektów są bez uwzględniania wielkości liter; na przykład nazwy SALESandSales będą reprezentować tę samą tabelę.

Każda kolumna andmeasure dodaną do istniejącego modelu danych musi należeć do określonej tabeli. Należy określić tabelę, która contains kolumnę niejawnie, podczas tworzenia kolumny obliczeniowej w tabeli, or jawnie podczas tworzenia measureand określić nazwę tabeli, w której powinna być przechowywana definicja measure.

W przypadku używania kolumny or tabeli jako danych wejściowych funkcji należy zazwyczaj kwalifikować nazwę kolumny. w pełni kwalifikowana nazwa kolumny to nazwa tabeli, a następnie nazwa kolumny w nawiasach kwadratowych: na przykład 'U.S. Sales'[Products]. W pełni kwalifikowana nazwa jest zawsze wymagana, gdy odwołujesz się do kolumny w następujących kontekstach:

  • Jako argument do funkcji VALUES

  • Jako argument do funkcji ALLorALLEXCEPT

  • W argumencie filter dla funkcji CALCULATEorCALCULATETABLE

  • Jako argument do funkcji RELATEDTABLE

  • Jako argument do dowolnej funkcji inteligencji time

niekwalifikowaną nazwą kolumny jest tylko nazwa kolumny, ujęta w nawiasy: na przykład [Sales Amount]. Na przykład, gdy odwołujesz się do skalarnej wartości value z tego samego wiersza w bieżącej tabeli, możesz użyć niekwalifikowanej nazwy kolumny.

If nazwę tabeli contains spacje, zastrzeżone słowa kluczowe, or niedozwolone znaki, należy ująć nazwę tabeli w pojedynczy cudzysłów. Należy również ująć nazwy tabel w cudzysłowie if nazwę contains wszelkie znaki poza znakiem alfanumerycznym ANSI range, niezależnie od tego, czy ustawienia regionalne obsługują zestaw znaków ornot. Na przykład, if gdy otwierasz skoroszyt, w którym contains nazwy tabel zapisane są cyrylicą, takie jak "Таблица", nazwa tabeli musi być ujęta w cudzysłów, even ponieważ not zawiera spacje.

Notatka

Aby ułatwić wprowadzanie w pełni kwalifikowanych nazw kolumn, użyj funkcji Autouzupełnianie w edytorze formuł.

Tabele

  • Nazwy tabel są wymagane, gdy kolumna pochodzi z innej tabeli niż bieżąca tabela. Nazwy tabel muszą być unikatowe w bazie danych.

  • Nazwy tabel muszą być ujęte w znaki pojedynczego cudzysłowu, if zawierają spacje, inne znaki specjalne or żadnych znaków alfanumerycznych innych niż angielski.

Środki

  • Measure nazwy muszą być zawsze w nawiasach.

  • Measure nazwy mogą zawierać spacje.

  • Każda nazwa measure musi być unikatowa w modelu. Dlatego nazwa tabeli jest opcjonalna przed nazwą measure podczas odwoływania się do istniejącej measure. Jednak podczas tworzenia measure należy zawsze określić tabelę, w której będzie przechowywana definicja measure.

Kolumny

Nazwy kolumn muszą być unikatowe w kontekście tabeli; jednak wiele tabel może zawierać kolumny o tych samych nazwach (uściślanie pochodzi z nazwy tabeli).

Ogólnie rzecz biorąc, kolumny można odwoływać się bez odwoływania się do tabeli podstawowej, do której należą, except, gdy może wystąpić konflikt nazw, aby rozwiązać or z niektórymi funkcjami, które wymagają, aby nazwy kolumn były w pełni kwalifikowane.

Zastrzeżone słowa kluczowe

If Jeśli nazwa używana dla tabeli jest taka sama jak zarezerwowane słowo kluczowe w Analysis Services, wtedy występuje błąd error i and musisz zmienić nazwę tabeli. Można jednak użyć słów kluczowych w nazwach obiektów, if nazwa obiektu jest ujęta w nawiasy (dla kolumn) or cudzysłowów (dla tabel).

Notatka

Znaki cudzysłowu mogą być reprezentowane przez kilka różnych znaków, w zależności od aplikacji. If wklejania formuł z zewnętrznego dokumentu or stronie sieci Web, upewnij się, że kod ASCII znaku używany do otwierania and cudzysłowów zamykających, aby upewnić się, że są one takie same. W przeciwnym razie DAX może nie być w stanie rozpoznać symboli jako cudzysłowów, co sprawia, że odwołanie jest nieprawidłowe.

Znaki specjalne

Następujące typy znaków and są not prawidłowe w nazwach tabel, kolumn oraz or miar:

  • Wiodące or spacje końcowe; chyba że spacje są ujęte w separatorem nazw, nawiasy, or pojedynczym apostrofem.

  • Znaki sterujące

  • Następujące znaki, które są not prawidłowe w nazwach obiektów:

    .,;':/\\*|?&%$!+=()[]{}<>

Przykłady nazw obiektów

W poniższej tabeli przedstawiono przykłady niektórych nazw obiektów:

Typy obiektów Przykłady Komentarz
Nazwa tabeli Sprzedaż If nazwa tabeli not zawiera spacje or innych znaków specjalnych, nazwa not musi być ujęta w znaki cudzysłowu.
Nazwa tabeli "Sprzedaż w Kanadzie" If nazwy contains spacje, tabulatory or inne znaki specjalne, ujmij nazwę w pojedyncze cudzysłowy.
W pełni kwalifikowana nazwa kolumny Sprzedaż[Kwota] Nazwa tabeli poprzedza nazwę kolumny, and nazwa kolumny jest ujęta w nawiasy kwadratowe.
W pełni kwalifikowana nazwa measure Sprzedaż[Zysk] Nazwa tabeli poprzedza nazwę measure, and nazwa measure jest ujęta w nawiasy kwadratowe. W niektórych kontekstach zawsze wymagana jest w pełni kwalifikowana nazwa.
Niekwalifikowana nazwa kolumny [Amount] Niekwalifikowana nazwa to po prostu nazwa kolumny umieszczona w nawiasach kwadratowych. Konteksty, w których można użyć niekwalifikowanej nazwy, obejmują formuły w kolumnie obliczeniowej w tej samej tabeli, or w funkcji agregacji, która skanuje w tej samej tabeli.
W pełni kwalifikowana kolumna w tabeli z spacjami "Sprzedaż w Kanadzie" [Ilość] Nazwa tabeli contains zawiera spację, więc musi być otoczona pojedynczymi apostrofami.

Inne ograniczenia

Składnia wymagana dla każdej funkcji, and typu operacji, jaką może wykonać, różni się znacznie w zależności od funkcji. Ogólnie jednak następujące reguły dotyczą formuł alland wyrażeń:

  • DAX formuły and wyrażenia nie mogą modyfikować or wstawiania pojedynczych elementów values w tabelach.

  • Nie można utworzyć wierszy obliczeniowych przy użyciu DAX. Można tworzyć tylko kolumny obliczeniowe i miary and.

  • Podczas definiowania kolumn obliczeniowych można zagnieżdżać funkcje na dowolnym poziomie.

  • DAX ma kilka funkcji, które zwracają tabelę. Zazwyczaj używasz values zwracanych przez te funkcje jako danych wejściowych do innych funkcji, które wymagają tabeli jako danych wejściowych.

Operatory DAX, stałe and

W poniższej tabeli wymieniono operatory obsługiwane przez DAX. Aby uzyskać więcej informacji na temat składni poszczególnych operatorów, zobacz DAX operatory.

Typ operatora Użycie symbolu and
Operator nawiasów () kolejności pierwszeństwa and grupowanie argumentów
Operatory arytmetyczne + (dodawanie)

- (odejmowanie)

* (mnożenie)

/ (dzielenie)

^ (potęgowanie)
Operatory porównania = (równe)

> (większe niż)

< (mniejsze niż)

>= (większe lub równe or)

<= (mniejsze lub równe or)

<> (not równe)
Operator łączenia tekstu & (łączenie)
Operatory logiczne && (and)

|| (or)

typy danych

Należy not rzutować, convert, or w przeciwnym razie określić typ danych kolumny orvalue używanej w formule DAX. Gdy używasz danych w formule DAX, DAX automatycznie identyfikuje typy danych w przywoływanych kolumnach and arkusza, które wpisujesz do values, a and wykonuje niejawne konwersje, gdy jest to konieczne, aby ukończyć określoną operację.

Na przykład if, kiedy próbujesz dodać liczbę do datevalue, silnik zinterpretuje tę operację w kontekście funkcji, andconvert liczby na wspólny typ danych, and, a następnie przedstawi wynik w zamierzonym format, jako date.

Istnieją jednak pewne ograniczenia dotyczące values, które można pomyślnie przekonwertować. If value or kolumna ma typ danych niezgodny z bieżącą operacją, DAX zwraca error. Ponadto DAXnot udostępnia funkcje, które umożliwiają jawną zmianę, convertor rzutowanie typu danych istniejących danych zaimportowanych do modelu danych.

Ważny

DAX not obsługuje użycie typu danych wariantu. W związku z tym, podczas ładowania danych importu or do modelu danych, oczekuje się, że dane w każdej kolumnie mają zazwyczaj jednolity typ danych.

Niektóre funkcje zwracają skalarne values, w tym ciągi, podczas gdy inne funkcje działają z liczbami, zarówno liczby całkowite and, jak i rzeczywiste or, a także daty and oraz czas. Typ danych wymagany dla każdej funkcji jest opisany w sekcji DAX funkcje.

Tabele zawierające wiele kolumn and wielu wierszy danych jako argument funkcji. Niektóre funkcje zwracają również tabele, które są przechowywane w pamięci and mogą służyć jako argumenty do innych funkcji.

Date and time

DAX przechowuje dateandtimevalues przy użyciu typu danych datetime używanego przez program Microsoft SQL Server. Data/godzina format używa liczby zmiennoprzecinkowej, w której Datevalues odpowiadają części całkowitej reprezentującej liczbę dni od 30 grudnia 1899 r. Time values odpowiadają części dziesiętnej datevalue, gdzie godziny, minuty, and sekundy są reprezentowane przez ułamki dziesiętne day. DAX date and time funkcje konwertują niejawnie convert argumenty na typ danych datetime.

Notatka

Maksymalna exact data/godzina value obsługiwana przez DAX to 31 grudnia 9999 00:00:00.

literał Dateandtime

Począwszy od wersji programu Power BI Desktop z sierpnia 2021 r., DAXdateand data/godzina values można określić jako literał w formatdt"YYYY-MM-DD", dt"YYYY-MM-DDThh:mm:ss", ordt"YYYY-MM-DD hh:mm:ss". W przypadku określenia jako literału użycie funkcji DATE, TIME, DATEVALUE, TIMEVALUE w wyrażeniu jest not konieczne.

Na przykład następujące wyrażenie używa funkcji DATEandTIME do filter w kolumnie OrderDate:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)

To samo wyrażenie filter można określić jako literał:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)

Notatka

Literał typu data/godzina DAXdateandformat jest not obsługiwany w all wersjach programu Power BI Desktop, Analysis Services, andPower Pivot w programie Excel. Nowe and zaktualizowane funkcje DAX są zazwyczaj first wprowadzone w programie Power BI Desktop and, a później uwzględnione w usłudze Analysis Services andPower Pivot w programie Excel.