Specyfikacja składni języka DAX dla programu PowerPivot

Data Analysis Expressions (DAX) to biblioteka funkcji, operatorów i stałych, które można łączyć w celu tworzenia formuł i wyrażeń w programie PowerPivot for Excel. W tej sekcji zamieszczono informacje dotyczące składni i wymagań języka DAX.

Aby zapoznać się z przykładami rodzajów formuł, które można tworzyć, oraz sposobem używania wyrażeń do filtrowania tabel i zmieniania kontekstu, zobacz temat Omówienie języka DAX (Data Analysis Expressions). Ten temat zawiera następujące sekcje:

Wymagania dotyczące składni

Wymagania dotyczące nazewnictwa

Funkcje

Operatory i stałe

Typy danych

Wymagania dotyczące składni

Formuły języka DAX są bardzo podobne do formuł wpisywanych w tabelach programu Excel, ale istnieje kilka kluczowych różnic.

  • W programie Microsoft Excel można odwoływać się do pojedynczych komórek lub tablic; w programie PowerPivot można odwoływać się tylko do pełnych tabel lub kolumn danych. Jeśli jednak zachodzi konieczność pracy tylko z częścią kolumny lub z unikatowymi wartościami z kolumny, można wymusić podobne zachowanie za pomocą funkcji języka DAX, które filtrują kolumnę lub zwracają unikatowe wartości.

  • Formuły języka DAX nie obsługują dokładnie tych samych typów danych co program Microsoft Excel. Na ogół język DAX zapewnia więcej typów danych niż program Excel i podczas importu są przeprowadzane niejawne konwersje niektórych typów danych. Aby uzyskać więcej informacji, zobacz temat Data Types in DAX.

Formuła języka DAX zawsze zaczyna się od znaku równości (=). Po znaku równości można podać dowolne wyrażenie, którego wynikiem jest wartość skalarna, lub które może zostać przekonwertowane na wartość skalarną. Należą do nich:

  • Stała skalarna lub wyrażenie, w którym jest stosowany operator skalarny (+,-,*,/,>=,...,&&, ...)

  • Odwołania do kolumn lub tabel. W języku DAX jako dane wejściowe funkcji są zawsze używane tabele i kolumny, a nie tablice ani dowolne zestawy wartości.

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

  • Wynik funkcji i jej wymagane argumenty. Niektóre funkcje języka DAX zwracają tabelę zamiast wartości skalarnej i muszą być umieszczone w otoce w funkcji wykonującej obliczenia na tabeli i zwracającej wartość skalarną. Jeśli tabela zawiera jedną kolumnę i jeden wiersz, jest traktowana jako wartość skalarna.

    Większość funkcji w programie PowerPivot wymaga co najmniej jednego argumentu, którym może być tabela, kolumna, wyrażenie lub wartość. Jednak niektóre funkcje, na przykład PI, nie wymagają żadnych argumentów, ale zawsze wymagają nawiasu wskazującego argument o wartości null. Należy na przykład wpisać funkcję PI(), a nie PI. Funkcje można również zagnieżdżać w innych funkcjach.

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

Poniżej pokazano przykłady prawidłowych formuł.

Formuła

Wynik

=3

3

="Sales"

Sprzedaż

='Sales'[Amount]

W przypadku użycia tej formuły w tabeli Sales otrzymuje się wartość kolumny Amount w tabeli Sales dla bieżącego wiersza.

=(0,03 *[Amount])

=0,03 * [Amount]

Trzy procent wartości w kolumnie Amount w bieżącej tabeli.

Chociaż tej formuły można użyć do obliczenia procentu, wynik nie jest pokazywany jako wartość procentowa, chyba że w tabeli zostanie zastosowane formatowanie.

=PI()

Wartość stałej pi.

[!UWAGA]

Formuły mogą zachowywać się w różny sposób zależnie od tego, czy są używane w kolumnie obliczeniowej, czy w mierze w obrębie tabeli przestawnej. Użytkownik musi zawsze znać kontekst i wiedzieć, w jaki sposób dane używane w formule są związane z innymi danymi, które mogą być używane w obliczeniach. Aby uzyskać więcej informacji, zobacz temat Kontekst w formułach języka DAX.

Wymagania dotyczące nazewnictwa

Okno programu PowerPivot może zawierać wiele tabel, z których każda znajduje się na własnej karcie. Tabele i ich kolumny tworzą razem bazę danych przechowywaną w aparacie analizy w pamięci xVelocity (VertiPaq) programu PowerPivot. W tej bazie danych wszystkie tabele muszą mieć unikatowe nazwy. Nazwy kolumn muszą być również unikatowe w każdej tabeli. W przypadku wszystkich nazw obiektów nie jest rozróżniana wielkość znaków; na przykład nazwy SPRZEDAŻ i Sprzedaż reprezentują tę samą tabelę.

Każda kolumna i miara dodawana do istniejącej bazy danych programu PowerPivot musi należeć do określonej tabeli. Tabelę zawierającą kolumnę można określić niejawnie, tworząc kolumnę obliczeniową w tabeli, lub jawnie, tworząc miarę i określając nazwę tabeli, w której ma być przechowywana definicja miary.

W przypadku używania tabel lub kolumn jako danych wejściowych funkcji na ogół trzeba kwalifikować nazwy kolumn. W pełni kwalifikowana nazwa kolumny to nazwa tabeli, po której następuje nazwa kolumny ujęta w nawias kwadratowy, na przykład 'U.S. Sales'[Products]. W pełni kwalifikowana nazwa jest zawsze wymagana, gdy odwołanie do kolumny jest używane w następujących kontekstach:

  • Jako argument funkcji VALUES.

  • Jako argument funkcji ALL lub ALLEXCEPT.

  • W argumencie „filtr” funkcji CALCULATE lub CALCULATETABLE.

  • Jako argument funkcji RELATEDTABLE.

  • Jako argument dowolnej funkcji analizy czasowej.

Niekwalifikowana nazwa kolumny to sama nazwa kolumny ujęta w nawias kwadratowy, na przykład [Sales Amount]. Na przykład niekwalifikowanej nazwy kolumny można użyć przy odwoływaniu się do wartości skalarnej z tego samego wiersza bieżącej tabeli.

Jeśli nazwa tabeli zawiera spacje, zastrzeżone słowa kluczowe lub niedozwolone znaki, trzeba ją ująć w apostrofy. Nazwy tabel należy też ujmować w apostrofy, jeśli zawierają znaki spoza zakresu znaków alfanumerycznych ANSI niezależnie od tego, czy ustawienia regionalne obsługują dany znak, czy nie. Na przykład jeśli otwarty skoroszyt zawiera nazwy tabel zapisane za pomocą znaków cyrylicy, takie jak Таблица, nazwę tabeli należy ująć w apostrofy, nawet jeśli nie zawiera spacji.

[!UWAGA]

Wprowadzanie w pełni kwalifikowanych nazw kolumn ułatwia funkcja autouzupełniania formuł w kliencie.

Tabele

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

  • Nazwy tabel trzeba ujmować w apostrofy, jeśli zawierają one spacje, inne znaki specjalne lub znaki alfanumeryczne z języków innych niż angielski.

Miary

  • Nazwy miar muszą być zawsze ujęte w nawias kwadratowy.

  • Nazwy miar mogą zawierać spacje.

  • Każda nazwa miary musi być unikatowa w bazie danych. Dlatego nazwa tabeli jest opcjonalna przed nazwą miary przy odwoływaniu się do istniejącej miary. Jednak podczas tworzenia miary należy zawsze określić tabelę, w której ma być przechowywana definicja miary.

Kolumny

Nazwy kolumn muszą być unikatowe w kontekście tabeli, ale wiele tabel może zawierać kolumny o takich samych nazwach (rozróżnienie pochodzi z nazwy tabeli).

Ogólnie do kolumn można odwoływać się bez odwoływania się do tabeli podstawowej, do której należą, z wyjątkiem sytuacji, w której może wystąpić konflikt nazw, albo użycia funkcji wymagających w pełni kwalifikowanych nazw kolumn.

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, pojawia się błąd i trzeba zmienić nazwę tabeli. Można jednak używać słów kluczowych w nazwach obiektów, jeśli nazwa obiektu jest ujęta w nawias kwadratowy (w przypadku kolumn) lub cudzysłów (w przypadku tabel).

[!UWAGA]

Należy zauważyć, że cudzysłowy mogą być reprezentowane przez różne znaki, w zależności od aplikacji. W przypadku wklejania formuł z dokumentu zewnętrznego lub strony sieci Web należy sprawdzić kody ASCII znaków używanych jako cudzysłów otwierający i zamykający, aby upewnić się, że są takie same. W przeciwnym razie aparat języka DAX może nie rozpoznać symboli jako znaków cudzysłowu, co spowoduje, że odwołanie będzie nieprawidłowe.

Znaki specjalne

Następujące znaki i typy znaków są nieprawidłowe w nazwach tabel, kolumn i miar:

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

  • Znaki kontrolne.

  • Następujące znaki są nieprawidłowe w nazwach obiektów programu PowerPivot:

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

Przykłady nazw obiektów

W poniższej tabeli pokazano przykłady nazw obiektów:

Typy obiektów

Przykłady

Komentarz

Nazwa tabeli

Sprzedaż

Jeśli nazwa tabeli nie zawiera spacji ani innych znaków specjalnych, nie trzeba ujmować jej w cudzysłów.

Nazwa tabeli

'Sprzedaż w Kanadzie'

Jeśli nazwa zawiera spacje, tabulatory lub inne znaki specjalne, należy ująć ją w apostrofy.

W pełni kwalifikowana nazwa kolumny

Sprzedaż[Kwota]

Nazwa tabeli poprzedza nazwę kolumny, a nazwa kolumny jest ujęta w nawias kwadratowy.

W pełni kwalifikowana nazwa miary

Sprzedaż[Zysk]

Nazwa tabeli poprzedza nazwę miary, a nazwa miary jest ujęta w nawias kwadratowy. W pewnych kontekstach w pełni kwalifikowana nazwa jest zawsze wymagana.

Niekwalifikowana nazwa kolumny

[Kwota]

Niekwalifikowana nazwa to po prostu nazwa kolumny w nawiasach. Konteksty, w których można używać niekwalifikowanych nazw, to m.in. formuły w kolumnie obliczeniowej znajdującej się w tej samej tabeli lub w funkcji agregacji, która skanuje tę samą tabelę.

W pełni kwalifikowana nazwa kolumny w tabeli o nazwie zawierającej spacje

‘Sprzedaż w Kanadzie’[Ilość]

Nazwa tabeli zawiera spacje, więc musi być ujęta w apostrofy.

[!UWAGA]

Wprowadzanie w pełni kwalifikowanych nazw kolumn podczas tworzenia formuł ułatwia funkcja autouzupełniania. Aby uzyskać więcej informacji, zobacz temat Tworzenie formuł na potrzeby obliczeń.

Różne ograniczenia

Składnia wymagana przez każdą funkcję oraz typ możliwej do wykonania operacji zmieniają się znacznie w zależności od funkcji. Na ogół jednak następujące reguły dotyczą wszystkich formuł i wyrażeń:

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

  • Za pomocą języka DAX nie można tworzyć wierszy obliczeniowych. Można tworzyć wyłącznie kolumny obliczeniowe i miary.

  • Podczas definiowania kolumn obliczeniowych można zagnieżdżać funkcje do dowolnego poziomu.

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

Funkcje w języku DAX

W języku DAX są dostępne poniższe typy funkcji.

Operatory i stałe w języku DAX

W poniższej tabeli wymieniono operatory obsługiwane przez język DAX. Na ogół operatory w języku DAX zachowują się w taki sam sposób jak w programie Microsoft Excel, z pewnymi niewielkimi wyjątkami. Aby uzyskać więcej informacji dotyczących składni poszczególnych operatorów, zobacz temat Informacje dotyczące operatorów języka DAX używanych w programie PowerPivot.

Typ operatora

Symbol i użycie

Operator nawiasu

() hierarchia ważności i grupowanie argumentów

Operatory arytmetyczne

+ (dodawanie)

- (odejmowanie/

znak)

* (mnożenie)

/ (dzielenie)

^ (potęgowanie)

Operatory porównania

= (równa się)

> (większe niż)

< (mniejsze niż)

>= (większe lub równe)

<= (mniejsze lub równe)

<> (nie równa się)

Operator łączenia tekstu

& (łączenie)

Operatory logiczne

&& (oraz)

|| (lub)

Typy danych w języku DAX

Nie ma potrzeby rzutowania, konwertowania ani określania w inny sposób typu danych kolumny lub wartości używanej w formule języka DAX. W przypadku używania danych w formule języka DAX następuje automatyczna identyfikacja typów danych w kolumnach, do których występują odwołania, oraz typów danych wpisywanych wartości i przeprowadzane są niejawne konwersje, jeśli jest to konieczne do wykonania określonej operacji.

Na przykład przy próbie dodania liczby do wartości daty program PowerPivot, podobnie jak program Excel, interpretuje operację w kontekście funkcji i konwertuje liczby na wspólny typ danych, a następnie przedstawia wynik w zakładanym formacie, czyli jako datę.

Istnieją jednak pewne ograniczenia dotyczące wartości, które mogą być pomyślnie konwertowane. Jeśli wartość lub kolumna ma typ danych, który jest niezgodny z bieżącą operacją, w języku DAX jest zwracany błąd. Ponadto język DAX nie zawiera funkcji, które pozwalałyby jawnie zmienić, przekonwertować lub zrzutować typ istniejących danych zaimportowanych do skoroszytu programu PowerPivot.

Ważna informacjaWażne:

Program PowerPivot nie obsługuje stosowania typu danych Wariant używanego w programie Excel. Dlatego podczas ładowania lub importowania danych przyjmowane jest założenie, że dane w każdej kolumnie będą miały zgodny typ danych.

Niektóre funkcje zwracają wartości skalarne, w tym ciągi, podczas gdy inne operują na liczbach, zarówno całkowitych, jak i rzeczywistych, lub datach i godzinach. Typy danych wymagane w przypadku poszczególnych funkcji opisano w temacie Funkcje języka DAX — kompendium.

Tabele są nowym typem danych w programie PowerPivot. Tabel zawierających wiele kolumn i wierszy danych można używać jako argumentu funkcji. Niektóre funkcje również zwracają tabele, które są przechowywane w pamięci i mogą być używane jako argumenty innych funkcji.

Aby uzyskać więcej informacji dotyczących różnych typów danych liczbowych i data/godzina oraz obsługi ciągów o wartości null i pustych, zobacz temat Data Types Supported in PowerPivot Workbooks.

Zobacz także

Koncepcje

Tworzenie formuł na potrzeby obliczeń