Udostępnij przez


DAX składnia

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

Wymagania dotyczące składni

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

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

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

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

  • Wynik funkcji i jej wymaganych argumentów. Niektóre DAX funkcje zwracają tabelę zamiast wartości skalarnej i muszą być opakowane w funkcję, która oblicza tabelę i zwraca wartość skalarną, chyba że tabela jest tabelą jednokolumnową, jednorzędową; w takim przypadku jest traktowana jako wartość skalarna.

    Większość DAX funkcji wymaga co najmniej jednego argumentu, który może zawierać tabele, kolumny, wyrażenia i wartości. Jednak niektóre funkcje, takie jak PI, nie wymagają żadnych argumentów, ale zawsze wymagają nawiasów, aby wskazać argument null. Na przykład zawsze musisz wpisać PI(), a nie PI. Funkcje można również zagnieżdżać w innych funkcjach.

  • Expressions. Wyrażenie może zawierać dowolne lub wszystkie następujące elementy: operatory, stałe lub odwołania do kolumn.

Na przykład wszystkie prawidłowe formuły są następujące.

Formuła Wynik
= 3 3
= "Sales" Sprzedaż
= 'Sales'[Amount] Jeśli używasz tej formuły w tabeli Sprzedaż, uzyskasz wartość kolumny Kwota w tabeli Sprzedaż dla bieżącego wiersza.
= (0.03 *[Amount])

=0.03 * [Amount]
Trzy procent wartości z kolumny „Amount” w bieżącej tabeli.

Chociaż ta formuła może służyć do obliczania wartości procentowej, wynik nie jest wyświetlany jako wartość procentowa, chyba że zastosujesz formatowanie w tabeli.
= PI() Wartość stałej pi.

Formuły mogą zachowywać się inaczej w zależności od sposobu ich użycia. Zawsze musisz pamiętać o kontekście i sposobie, w jaki dane używane w formule są powiązane z innymi danymi, które mogą być używane w obliczeniach.

Wymagania dotyczące nazewnictwa

Model danych często zawiera wiele tabel. Razem tabele i ich kolumny składają się na bazę danych przechowywaną w silniku analitycznym w pamięci (VertiPaq). W tej bazie danych wszystkie tabele muszą mieć unikatowe nazwy. Nazwy kolumn muszą być również unikatowe w każdej tabeli. Wszystkie nazwy obiektów są bez uwzględniania wielkości liter; na przykład nazwy SALES i Sales będą reprezentować tę samą tabelę.

Każda kolumna i miara dodana do istniejącego modelu danych musi należeć do określonej tabeli. Należy określić tabelę zawierającą kolumnę niejawnie, podczas tworzenia kolumny obliczeniowej w tabeli lub jawnie podczas tworzenia miary i określania nazwy tabeli, w której ma być przechowywana definicja miary.

W przypadku używania tabeli lub kolumny jako danych wejściowych funkcji należy ogólnie zakwalifikować nazwę kolumny. W w pełni kwalifikowana nazwa kolumny to nazwa tabeli, po której następuje 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 funkcji, VALUES

  • Jako argument funkcji ALL lub ALLEXCEPT

  • W parametrze filtra dla funkcji CALCULATE lub CALCULATETABLE

  • Jako argument funkcji, RELATEDTABLE

  • Jako argument funkcji analizy czasowej

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

Jeśli nazwa tabeli zawiera spacje, zastrzeżone słowa kluczowe lub niedozwolone znaki, musisz ująć nazwę tabeli w pojedynczy cudzysłów. Nazwy tabel należy również ująć w cudzysłów, jeśli nazwa zawiera jakiekolwiek znaki poza zakresem znaków alfanumerycznych ANSI, niezależnie od tego, czy ustawienia regionalne obsługują zestaw znaków, czy nie. Jeśli na przykład otworzysz skoroszyt zawierający nazwy tabel zapisane w znakach cyrylica, takich jak "Таблица", nazwa tabeli musi być ujęta w znaki cudzysłowu, mimo że nie zawiera spacji.

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, jeśli zawierają spacje, inne znaki specjalne lub znaki alfanumeryczne inne niż angielskie.

Środki

  • Nazwy miar muszą być zawsze w nawiasach.

  • Nazwy miar mogą zawierać spacje.

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

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, można odwoływać się do kolumn bez odwoływania się do tabeli podstawowej, do której należą, z wyjątkiem sytuacji, gdy może wystąpić konflikt nazw w celu rozwiązania lub niektórych funkcji, które wymagają, aby nazwy kolumn były w pełni kwalifikowane.

Zastrzeżone słowa kluczowe

Jeśli nazwa używana dla tabeli jest taka sama jak zastrzeżone słowo kluczowe usług Analysis Services, zostanie zgłoszony błąd i musisz zmienić nazwę tabeli. Można jednak użyć słów kluczowych w nazwach obiektów, jeśli nazwa obiektu jest ujęta w nawiasy (dla kolumn) lub cudzysłowów (dla tabel).

Notatka

Znaki cudzysłowu mogą być reprezentowane przez kilka różnych znaków, w zależności od aplikacji. Jeśli wklejasz formuły z zewnętrznego dokumentu lub strony sieci Web, sprawdź kod ASCII znaku, który jest używany do otwierania i zamykania cudzysłowów, 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 znaki i typy znaków nie są prawidłowe w nazwach tabel, kolumn lub miar:

  • Spacje wiodące lub końcowe; chyba że spacje są ujęte w ograniczniki nazw, nawiasy kwadratowe lub pojedyncze apostrofy.

  • Znaki sterujące

  • Następujące znaki, które nie są 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ż Jeśli nazwa tabeli nie zawiera spacji ani innych znaków specjalnych, nazwa nie musi być ujęta w znaki cudzysłowu.
Nazwa tabeli "Sprzedaż w Kanadzie" Jeśli nazwa zawiera spacje, tabulatory lub inne znaki specjalne, należy ująć nazwę w pojedyncze cudzysłowy.
W pełni kwalifikowana nazwa kolumny Sprzedaż[Kwota] Nazwa tabeli poprzedza nazwę kolumny, a nazwa kolumny jest ujęta w nawiasy kwadratowe ( [ ] ).
W pełni kwalifikowana nazwa miary Sprzedaż[Zysk] Nazwa tabeli poprzedza nazwę miary, a nazwa miary 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 tylko nazwa kolumny w nawiasach kwadratowych. Konteksty, w których można użyć niekwalifikowanej nazwy, obejmują formuły w kolumnie obliczeniowej w tej samej tabeli lub w funkcji agregacji, która skanuje tę samą tabelę.
W pełni określona kolumna w tabeli, która zawiera spacje "Sprzedaż w Kanadzie" [Ilość] Nazwa tabeli zawiera spacje, więc musi być otoczona pojedynczymi cudzysłowami.

Inne ograniczenia

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

  • DAX formuły i wyrażenia nie mogą modyfikować ani wstawiać pojedynczych wartości w tabelach.

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

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

  • DAX ma kilka funkcji, które zwracają tabelę. Zazwyczaj wartości zwracane przez te funkcje są używane jako dane wejściowe do innych funkcji, które wymagają tabeli jako danych wejściowych.

DAX operatory i stałe

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 Symbol i użycie
Operator nawiasów () kolejności pierwszeństwa i grupowania 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)

<= (mniejsze lub równe)

<> (nie równa się)
Operator łączenia tekstu & (łączenie)
Operatory logiczne && (i)

|| (lub)

typy danych

Nie trzeba rzutować, konwertować ani określać w inny sposób typu danych kolumny lub wartości DAX używanej w formule. Gdy używasz danych w DAX formule, DAX automatycznie identyfikuje typy danych w kolumnach, do których się odwołujesz, i wartości wpisywanych, i wykonuje niejawne konwersje, jeśli jest to konieczne, aby ukończyć określoną operację.

Jeśli na przykład spróbujesz dodać liczbę do wartości daty, aparat zinterpretuje operację w kontekście funkcji i przekonwertuje liczby na wspólny typ danych, a następnie przedstawi wynik w zamierzonym formacie, datę.

Istnieją jednak pewne ograniczenia dotyczące wartości, które można pomyślnie przekonwertować. Jeśli wartość lub kolumna ma typ danych niezgodny z bieżącą operacją, DAX zwraca błąd. Ponadto DAX nie udostępnia funkcji, które umożliwiają jawną zmianę, konwersję lub rzutowanie typu danych istniejących danych zaimportowanych do modelu danych.

Ważny

DAX nie obsługuje użycia typu danych wariantu. W związku z tym podczas ładowania lub importowania danych do modelu danych oczekuje się, że dane w każdej kolumnie są zwykle spójne.

Niektóre funkcje zwracają wartości skalarne, w tym ciągi, podczas gdy inne funkcje działają z liczbami, zarówno liczbami całkowitymi, jak i liczbami rzeczywistymi, lub datami i godzinami. Typ danych wymagany dla każdej funkcji jest opisany w sekcji DAX funkcje.

Tabele zawierające wiele kolumn i wiele wierszy danych można użyć jako argumentu funkcji. Niektóre funkcje zwracają również tabele, które są przechowywane w pamięci i mogą być używane jako argumenty do innych funkcji.

Data i godzina

DAX przechowuje wartości daty i godziny przy użyciu typu danych data/godzina używanego przez program Microsoft SQL Server. Format datetime używa liczby zmiennoprzecinkowych, w której wartości daty odpowiadają części całkowitej reprezentującej liczbę dni od 30 grudnia 1899 roku. Wartości czasu odpowiadają części dziesiętnej wartości daty, w której godziny, minuty i sekundy są reprezentowane przez ułamki dziesiętne dnia. DAX Funkcje daty i godziny niejawnie konwertują argumenty na typ danych data/godzina.

Notatka

Dokładna maksymalna wartość daty i czasu obsługiwana przez DAX to 31 grudnia 9999 00:00:00.

Literał daty i godziny

Począwszy od wersji programu Power BI Desktop z sierpnia 2021 r., wartości daty i godziny DAX można określić jako literał w formacie dt"YYYY-MM-DD", dt"YYYY-MM-DDThh:mm:ss", lub dt"YYYY-MM-DD hh:mm:ss". Gdy są określone jako literał, użycie funkcji DATE, TIME, DATEVALUE, TIMEVALUE w wyrażeniu nie jest konieczne.

Na przykład następujące wyrażenie używa funkcji DATE i TIME do filtrowania według wartości 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 filtru można określić jako literał:

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

Notatka

Format DAX literału typu data i data/godzina nie jest obsługiwany w żadnej wersji programu Power BI Desktop, usług Analysis Services ani dodatku Power Pivot w programie Excel. Nowe i zaktualizowane DAX funkcje są zwykle najpierw wprowadzane w programie Power BI Desktop, a następnie dostępne w Analysis Services i Power Pivot w programie Excel.