Udostępnij za pośrednictwem


DAX omówienie

Data Analysis Expressions (DAX) to język wyrażeń formuł używany w usługach Analysis Services, Power BI i Power Pivot w programie Excel. DAX Formuły obejmują funkcje, operatory i wartości do wykonywania zaawansowanych obliczeń i zapytań dotyczących danych w powiązanych tabelach i kolumnach w tabelarycznych modelach danych.

Ten artykuł zawiera tylko podstawowe wprowadzenie do najważniejszych pojęć w programie DAX. Opisuje DAX, jak ma zastosowanie do wszystkich produktów, które z niego korzystają. Niektóre funkcje mogą nie mieć zastosowania do niektórych produktów lub przypadków użycia. Zapoznaj się z dokumentacją produktu opisującą jego konkretną implementację .DAX

Obliczenia

DAX Formuły są używane w miarach, kolumnach obliczeniowych, tabelach obliczeniowych i zabezpieczeniach na poziomie wiersza.

Środki

Miary to formuły obliczeń dynamicznych, w których wyniki zmieniają się w zależności od kontekstu. Miary są używane w raportowaniu, które obsługują łączenie i filtrowanie danych modelu przy użyciu wielu atrybutów, takich jak raport usługi Power BI lub tabela przestawna programu Excel lub wykres przestawny. Miary są tworzone przy użyciu DAX paska formuły w projektancie modelu.

Formuła w mierze może używać standardowych funkcji agregacji, jak COUNT lub SUM, utworzonych automatycznie z wykorzystaniem funkcji Autosumowania, lub można zdefiniować własną formułę przy użyciu paska formuły DAX. Nazwane środki można przekazać jako argument dla innych środków.

Podczas definiowania formuły miary na pasku formuły funkcja podpowiedzi wyświetla podgląd wyników dla sumy w bieżącym kontekście, jednak poza tym wyniki nie są wyświetlane od razu w żadnym miejscu. Powodem, dla którego nie możesz natychmiast zobaczyć (filtrowanych) wyników obliczenia, jest to, że wynik miary nie może być określony bez kontekstu. Aby ocenić miarę, wymagana jest aplikacja kliencka raportowania, która może dostarczyć kontekst potrzebny do pobrania danych odpowiednich dla każdej komórki, a następnie ocenić wyrażenie dla każdej komórki. Ten klient może być tabelą przestawną programu Excel lub wykresem przestawnym, raportem Microsoft Power BI lub wyrażeniem tabeli w zapytaniu w programie SQL Server Management Studio (SSMS).

Niezależnie od klienta, dla każdej komórki w wynikach jest uruchamiane oddzielne zapytanie. Oznacza to, że każda kombinacja nagłówków wierszy i kolumn w tabeli przestawnej lub każdy wybór fragmentatorów i filtrów w raporcie usługi Power BI generuje inny podzbiór danych, nad którymi jest obliczana miara. Na przykład przy użyciu tej bardzo prostej formuły miary:

Total Sales = SUM([Sales Amount])

Gdy użytkownik umieszcza miarę TotalSales w raporcie, a następnie umieszcza kolumnę Kategoria produktu z tabeli Produkt do pozycji Filtry, suma wartości Kwoty sprzedaży jest obliczana i wyświetlana dla każdej kategorii produktów.

W przeciwieństwie do kolumn obliczeniowych składnia miary zawiera nazwę miary poprzedzającą formułę. W podanym przykładzie nazwa Total Sales pojawia się przed formułą. Po utworzeniu miary, jej nazwa i definicja są wyświetlane na liście "Pola" aplikacji klienckiej raportowania, a w zależności od perspektyw i ról są dostępne dla wszystkich użytkowników modelu.

Aby dowiedzieć się więcej, zobacz: Miary w programie Power BI DesktopMiary w usługach Analysis ServicesMiary w dodatku Power Pivot

Kolumny obliczeniowe

Kolumna obliczeniowa to kolumna, którą dodajesz do istniejącej tabeli (w projektancie modelu), a następnie tworzysz formułę DAX, która definiuje wartości kolumny. Gdy kolumna obliczeniowa zawiera prawidłową DAX formułę, wartości są obliczane dla każdego wiersza natychmiast po wprowadzeniu formuły. Wartości są następnie przechowywane w modelu danych w pamięci. Na przykład w tabeli dat (Date), po wprowadzeniu formuły w pasku formuły:

= [Calendar Year] & " Q" & [Calendar Quarter]

Wartość dla każdego wiersza w tabeli jest obliczana przez pobranie wartości z kolumny Rok kalendarzowy (w tej samej tabeli Date), dodanie spacji i wielkiej litery Q, a następnie dodanie wartości z kolumny Calendar Quarter (w tej samej tabeli Date). Wynik dla każdego wiersza w kolumnie obliczeniowej jest obliczany natychmiast i pojawia się na przykład jako 2017 Q1. Wartości kolumn są ponownie obliczane tylko wtedy, gdy tabela lub jakakolwiek powiązana tabela jest przetwarzana (odświeżanie) lub model jest zwalniany z pamięci, a następnie ponownie ładowany, na przykład podczas zamykania i ponownego otwierania pliku programu Power BI Desktop.

Aby dowiedzieć się więcej, zobacz: Kolumny obliczeniowe w programie Power BI DesktopKolumny obliczeniowe w usługach Analysis ServicesKolumny obliczeniowe w dodatku Power Pivot.

Tabele obliczeniowe

Tabela obliczeniowa jest obiektem obliczeniowym opartym na wyrażeniu formuły pochodzącym ze wszystkich lub części innych tabel w tym samym modelu. Zamiast wykonywać zapytania i ładować wartości do kolumn nowej tabeli ze źródła danych, formuła DAX definiuje wartości tabeli.

Tabele obliczeniowe mogą być przydatne w symulacyjnym wymiarze. Przykładem jest tabela Data, jak Data zamówienia (OrderDate), Data wysyłki (ShipDate) lub Data ukończenia (DueDate), w zależności od relacji klucza obcego. Tworząc jawnie tabelę obliczeniową ShipDate, uzyskasz autonomiczną tabelę dostępną dla zapytań, która jest w pełni sprawna, jak każda inna tabela. Tabele obliczeniowe są również przydatne podczas konfigurowania zestawu filtrowanych wierszy, który jest podzestawem lub nadzbiorem kolumn z innych, istniejących tabel. Dzięki temu można zachować oryginalną tabelę bez zmian podczas tworzenia odmian tej tabeli w celu obsługi określonych scenariuszy.

Tabele obliczeniowe obsługują relacje z innymi tabelami. Kolumny w tabeli obliczeniowej mają typy danych, formatowanie i mogą należeć do kategorii danych. Tabele obliczeniowe mogą być nazwane i widoczne lub ukryte tak samo jak każda inna tabela. Tabele obliczeniowe są obliczane ponownie, jeśli którakolwiek z tabel, z których pobiera dane, są odświeżane lub aktualizowane.

Aby dowiedzieć się więcej, zobacz: Tabele obliczeniowe w Power BI DesktopTabele obliczeniowe w Analysis Services.

Zabezpieczenia na poziomie wiersza

W przypadku zabezpieczeń na poziomie wiersza formuła DAX musi obliczyć TRUE/FALSE warunek logiczny, definiując, które wiersze mogą być zwracane przez wyniki zapytania przez członków określonej roli. Na przykład dla członków roli Sprzedaż, tabela Klienci z następującą DAX formułą:

= Customers[Country] = "USA"

Osoby pełniące rolę w sprzedaży będą mogły wyświetlać dane tylko dla klientów w Stanach Zjednoczonych oraz agregacje, takie jak SUM, są zwracane tylko dla klientów w Stanach Zjednoczonych. Zabezpieczenia na poziomie wiersza nie są dostępne w dodatku Power Pivot w programie Excel.

Podczas definiowania secuirty na poziomie wiersza przy użyciu DAX formuły tworzysz dozwolony zestaw wierszy. Nie blokuje to dostępu do innych wierszy; raczej nie są one po prostu zwracane w ramach dozwolonego zestawu wierszy. Inne role mogą zezwalać na dostęp do wierszy wykluczonych przez formułę DAX . Jeśli użytkownik jest członkiem innej roli, a zabezpieczenia na poziomie wiersza tej roli umożliwiają dostęp do tego określonego zestawu wierszy, użytkownik może wyświetlać dane dla tego wiersza.

Formuły zabezpieczeń na poziomie wiersza dotyczą określonych wierszy, a także powiązanych wierszy. Gdy tabela ma wiele relacji, filtry stosują zabezpieczenia dla relacji, która jest aktywna. Formuły zabezpieczeń na poziomie wiersza będą przecinane z innymi formułami zdefiniowanymi dla powiązanych tabel.

Aby dowiedzieć się więcej, zobacz: Zabezpieczenia na poziomie wiersza (RLS) z Power BIRole w Analysis Services

Kwerendy

DAX zapytania można tworzyć i uruchamiać w programie SQL Server Management Studio (SSMS) i narzędziach typu open source, takich jak DAX Studio (daxstudio.org). W przeciwieństwie do DAX formuł obliczeń, które można tworzyć tylko w modelach danych tabelarycznych, DAX zapytania mogą być również uruchamiane względem modeli wielowymiarowych usług Analysis Services. DAX zapytania są często łatwiejsze do zapisu i bardziej wydajne niż zapytania MDX (Multidimensional Data Expressions).

Zapytanie DAX jest instrukcją podobną do instrukcji SELECT w języku T-SQL. Najbardziej podstawowym typem DAX zapytania jest instrukcja evaluate . Na przykład

EVALUATE
 ( FILTER ( 'DimProduct', [SafetyStockLevel] < 200 ) )
ORDER BY [EnglishProductName] ASC

Zwraca w kolumnie Wyniki tabelę zawierającą tylko te produkty z wartością SafetyStockLevel mniejszą niż 200 w kolejności rosnącej według englishProductName.

Miary można tworzyć w ramach zapytania. Miary istnieją tylko przez czas trwania zapytania. Aby dowiedzieć się więcej, zobacz DAX zapytania.

Formuły

DAX Formuły są niezbędne do tworzenia obliczeń w kolumnach obliczeniowych i miarach oraz zabezpieczania danych przy użyciu zabezpieczeń na poziomie wiersza. Aby utworzyć formuły dla kolumn obliczeniowych i miar, użyj paska formuły u góry okna projektanta modelu lub Edytora DAX . Aby utworzyć formuły na potrzeby zabezpieczeń na poziomie wiersza, użyj okna dialogowego Menedżer ról lub Zarządzanie rolami. Informacje w tej sekcji mają na celu rozpoczęcie pracy z podstawami DAX formuł.

Podstawy formuł

DAX formuły mogą być bardzo proste lub dość złożone. W poniższej tabeli przedstawiono kilka przykładów prostych formuł, które mogą być używane w kolumnie obliczeniowej.

Formuła Definicja
= TODAY() Wstawia bieżącą datę w każdym wierszu kolumny obliczeniowej.
= 3 Wstawia wartość 3 w każdym wierszu kolumny obliczeniowej.
= [Column1] + [Column2] Dodaje wartości w tym samym wierszu [Column1] i [Column2] i umieszcza wyniki w kolumnie obliczeniowej tego samego wiersza.

Niezależnie od tego, czy tworzona formuła jest prosta, czy złożona, możesz użyć następujących kroków podczas tworzenia formuły:

  1. Każda formuła musi zaczynać się od znaku równości (=).

  2. Możesz wpisać lub wybrać nazwę funkcji albo wpisać wyrażenie.

  3. Zacznij wpisywać pierwsze kilka liter funkcji lub nazwy, a autouzupełnianie wyświetla listę dostępnych funkcji, tabel i kolumn. Naciśnij TAB, aby dodać element z listy Autouzupełniania do formuły.

    Możesz również kliknąć przycisk Fx, aby wyświetlić listę dostępnych funkcji. Aby wybrać funkcję z listy rozwijanej, użyj strzałek, aby wyróżnić element, a następnie kliknij przycisk OK, aby dodać funkcję do formuły.

  4. Podaj argumenty funkcji, wybierając je z listy rozwijanej możliwych tabel i kolumn lub wpisując wartości.

  5. Sprawdź błędy składni: upewnij się, że wszystkie nawiasy są zamknięte, a tabele i wartości są poprawnie przywoływanych.

  6. Naciśnij ENTER, aby zaakceptować formułę.

Uwaga

W kolumnie obliczeniowej, gdy tylko wprowadzisz formułę i zostanie zweryfikowana formuła, kolumna zostanie wypełniona wartościami. W miarie naciśnięcie ENTER powoduje zapisanie definicji miary z tabelą. Jeśli formuła jest nieprawidłowa, zostanie wyświetlony błąd.

W tym przykładzie przyjrzyjmy się pewnej formule w mierze o nazwie Days in Current Quarter:

Days in Current Quarter = COUNTROWS( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER( LASTDATE('Date'[Date])), ENDOFQUARTER('Date'[Date])))

Ta miara służy do tworzenia współczynnika porównania między niepełnym okresem a poprzednim okresem. Formuła musi uwzględniać proporcję okresu, który upłynął, i porównać ją z taką samą proporcją w poprzednim okresie. W tym przypadku [Dni bieżącego kwartału do daty]/[Dni w bieżącym kwartale] daje proporcję upływu w bieżącym okresie.

Ta formuła zawiera następujące elementy:

Element formuły Opis
Days in Current Quarter Nazwa miary.
= Znak równości (=) rozpoczyna formułę.
COUNTROWS COUNTROWS zlicza wiersze w tabeli Date
() Nawias otwarty i zamykający określa argumenty.
DATESBETWEEN Funkcja DATESBETWEEN zwraca daty między ostatnią datą dla każdej wartości w kolumnie Date w tabeli Date.
'Date' Określa tabelę daty. Tabele są w pojedynczych apostrofach.
[Date] Określa kolumnę Data w tabeli Data. Kolumny znajdują się w nawiasach.
,
STARTOFQUARTER Funkcja STARTOFQUARTER zwraca datę rozpoczęcia kwartału.
LASTDATE Funkcja LASTDATE zwraca ostatnią datę kwartału.
'Date' Określa tabelę daty.
[Date] Określa kolumnę Data w tabeli Data.
,
ENDOFQUARTER Funkcja ENDOFQUARTER
'Date' Określa tabelę daty.
[Date] Określa kolumnę Data w tabeli Data.

Używanie autouzupełniania formuły

Autouzupełnianie pomaga wprowadzić prawidłową składnię formuły, udostępniając opcje dla każdego elementu w formule.

  • Możesz użyć autouzupełniania formuły w środku istniejącej formuły z zagnieżdżonych funkcji. Tekst bezpośrednio przed punktem wstawiania jest używany do wyświetlania wartości na liście rozwijanej, a cały tekst po punkcie wstawiania pozostaje niezmieniony.

  • Autouzupełnianie nie dodaje nawiasu zamykającego dla funkcji ani nie dopasowuje nawiasów automatycznie. Upewnij się, że każda funkcja jest poprawna składniowo lub nie można zapisać ani użyć formuły.

Używanie wielu funkcji w formule

Funkcje można zagnieżdżać, co oznacza, że wyniki z jednej funkcji są używane jako argument innej funkcji. W kolumnach obliczeniowych można zagnieżdżać maksymalnie 64 poziomy funkcji. Jednak zagnieżdżanie może utrudnić tworzenie formuł lub rozwiązywanie problemów. Wiele funkcji zaprojektowano tak, aby były używane wyłącznie jako funkcje zagnieżdżone. Te funkcje zwracają tabelę, której nie można zapisać bezpośrednio w wyniku; musi być podana jako dane wejściowe funkcji tabeli. Na przykład funkcje SUMX, AVERAGEXi MINX wszystkie wymagają tabeli jako pierwszego argumentu.

Funkcje

Funkcja jest nazwaną formułą w wyrażeniu. Większość funkcji ma wymagane i opcjonalne argumenty, znane również jako parametry jako dane wejściowe. Po wykonaniu funkcji zwracana jest wartość. DAX Zawiera funkcje, których można używać do wykonywania obliczeń przy użyciu dat i godzin, tworzenia wartości warunkowych, pracy z ciągami, wykonywania odnośników na podstawie relacji oraz możliwości iteracji w tabeli w celu wykonywania obliczeń cyklicznych. Jeśli znasz formuły programu Excel, wiele z tych funkcji będzie wyglądać bardzo podobnie; jednak DAX formuły różnią się w następujący sposób:

  • DAX Funkcja zawsze odwołuje się do pełnej kolumny lub tabeli. Jeśli chcesz użyć tylko określonych wartości z tabeli lub kolumny, możesz dodać filtry do formuły.

  • Jeśli musisz dostosować obliczenia dla poszczególnych wierszy, udostępnia funkcje, DAX które umożliwiają używanie bieżącej wartości wiersza lub powiązanej wartości jako rodzaju parametru do wykonywania obliczeń, które różnią się w zależności od kontekstu. Aby dowiedzieć się, jak działają te funkcje, zobacz Kontekst w tym artykule.

  • DAX zawiera wiele funkcji, które zwracają tabelę, a nie wartość. Tabela nie jest wyświetlana w kliencie raportowania, ale służy do udostępniania danych wejściowych innym funkcjom. Możesz na przykład pobrać tabelę, a następnie zliczyć w niej różne wartości lub obliczyć sumy dynamiczne między przefiltrowanych tabel lub kolumn.

  • DAX funkcje obejmują różne funkcje analizy czasowej . Te funkcje umożliwiają definiowanie lub wybieranie zakresów dat oraz wykonywanie dynamicznych obliczeń na podstawie tych dat lub zakresów. Na przykład można porównać sumy w okresach równoległych.

Funkcje agregacji

Funkcje agregacji obliczają (skalarną) wartość, taką jak liczba, suma, średnia, minimum lub maksimum dla wszystkich wierszy w kolumnie lub tabeli zgodnie z definicją wyrażenia. Aby dowiedzieć się więcej, zobacz funkcje agregacji .

Funkcje daty i godziny

Funkcje daty i godziny w programie DAX Są podobne do funkcji daty i godziny w programie Microsoft Excel. DAX Jednak funkcje są oparte na typie danych data/godzina od 1 marca 1900 r. Aby dowiedzieć się więcej, zobacz funkcje daty i godziny .

Funkcje filtrowania

Funkcje filtru w DAX zwracają określone typy danych, wyszukują wartości w powiązanych tabelach i filtrują według powiązanych wartości. Funkcje wyszukiwania działają przy użyciu tabel i relacji, takich jak baza danych. Funkcje filtrowania umożliwiają manipulowanie kontekstem danych w celu tworzenia dynamicznych obliczeń. Aby dowiedzieć się więcej, zobacz funkcje filtrowania .

Funkcje finansowe

Funkcje finansowe w programie DAX są używane w formułach, które wykonują obliczenia finansowe, takie jak wartość bieżąca netto i stopa zwrotu. Te funkcje są podobne do funkcji finansowych używanych w programie Microsoft Excel. Aby dowiedzieć się więcej, zobacz Funkcje finansowe.

Funkcje informacyjne

Funkcja informacyjna analizuje komórkę lub wiersz podany jako argument i informuje, czy wartość jest zgodna z oczekiwanym typem. Na przykład funkcja ISERROR zwraca TRUE, jeśli wartość, do której odwołujesz się, zawiera błąd. Aby dowiedzieć się więcej, zobacz funkcje informacyjne .

Funkcje logiczne

Funkcje logiczne działają na wyrażeniu, aby zwracać informacje o wartościach w wyrażeniu. Na przykład funkcja TRUE informuje, czy wyrażenie, które oceniasz, zwraca wartość TRUE. Aby dowiedzieć się więcej, zobacz Funkcje logiczne.

Funkcje matematyczne i trygonometryczne

Funkcje matematyczne w programie DAX są bardzo podobne do funkcji matematycznych i trygonometrycznych programu Excel. Niektóre drobne różnice istnieją w typach danych liczbowych używanych przez DAX funkcje. Aby dowiedzieć się więcej, zobacz funkcje matematyczne i trygonometryczne.

Inne funkcje

Te funkcje wykonują unikatowe akcje, których nie można zdefiniować w żadnej z kategorii, do których należą większość innych funkcji. Aby dowiedzieć się więcej, zobacz Inne funkcje.

Funkcje relacji

Funkcje relacji w programie DAX umożliwiają zwracanie wartości z innej powiązanej tabeli, określanie określonej relacji do użycia w wyrażeniu i określanie kierunku filtrowania krzyżowego. Aby dowiedzieć się więcej, zobacz funkcje relacji .

Funkcje statystyczne

Funkcje statystyczne obliczają wartości związane z rozkładami statystycznymi i prawdopodobieństwem, takimi jak odchylenie standardowe i liczba permutacji. Aby dowiedzieć się więcej, zobacz funkcje statystyczne .

Funkcje tekstowe

Funkcje tekstowe w DAX są bardzo podobne do ich odpowiedników w programie Excel. Możesz zwrócić część ciągu, wyszukać tekst w ciągu lub połączyć wartości ciągu. DAX Udostępnia również funkcje do kontrolowania formatów dat, godzin i liczb. Aby dowiedzieć się więcej, zobacz funkcje tekstowe .

Funkcje analizy czasowej

Funkcje analizy czasowej udostępniane w programie DAX umożliwiają tworzenie obliczeń, które korzystają z wbudowanej wiedzy na temat kalendarzy i dat. Używając zakresów godzin i dat w połączeniu z agregacjami lub obliczeniami, można tworzyć znaczące porównania w porównywalnych okresach czasu sprzedaży, spisu itd. Aby dowiedzieć się więcej, zobacz Funkcje analizy czasowej (DAX).

Funkcje manipulowania tabelami

Te funkcje zwracają tabelę lub manipulują istniejącymi tabelami. Na przykład za pomocą ADDCOLUMNS polecenia można dodać kolumny obliczeniowe do określonej tabeli lub zwrócić tabelę podsumowania dla zestawu grup z funkcją SUMMARIZECOLUMNS . Aby dowiedzieć się więcej, zobacz funkcje manipulowania tabelami .

Zmienne

Zmienne w wyrażeniu można tworzyć przy użyciu polecenia VAR. VAR technicznie nie jest funkcją, jest to słowo kluczowe do przechowywania wyniku wyrażenia jako nazwanej zmiennej. Ta zmienna może następnie zostać przekazana jako argument do innych wyrażeń miary. Na przykład:

VAR
    TotalQty = SUM ( Sales[Quantity] )

Return

    IF (
        TotalQty > 1000,
        TotalQty * 0.95,
        TotalQty * 1.25
        )

W tym przykładzie wartość TotalQty może być przekazywana jako nazwana zmienna do innych wyrażeń. Zmienne mogą być dowolnymi typami danych skalarnych, w tym tabelami. Używanie zmiennych w DAX formułach może być niezwykle wydajne.

Typy danych

Dane można zaimportować do modelu z wielu różnych źródeł danych, które mogą obsługiwać różne typy danych. Podczas importowania danych do modelu dane są konwertowane na jeden z typów danych modelu tabelarycznego. Gdy dane modelu są używane w obliczeniu, dane są następnie konwertowane na DAX typ danych na czas trwania obliczenia i jego wyniku. Podczas tworzenia DAX formuły terminy używane w formule automatycznie określają zwracany typ danych wartości.

DAX obsługuje następujące typy danych:

Typ danych w modelu Typ danych w DAX Opis
Whole Number 64-bitowa (osiem bajtów) wartość całkowita 1, 2 Liczby, które nie mają miejsc dziesiętnych. Liczby całkowite mogą być liczbami dodatnimi lub ujemnymi, ale muszą być liczbami całkowitymi z zakresu od -9 223 372 036 854 775 808 (-2^63) do 9 223 372 036 854 775 807 (2^63-1).
Decimal Number Liczba rzeczywista 64-bitowa (osiem bajtów) 1, 2 Liczby rzeczywiste to liczby, które mogą mieć miejsca dziesiętne. Liczby rzeczywiste obejmują szeroki zakres wartości:

Wartości ujemne z -1,79E +308 do -2,23E -308

Zero

Wartości dodatnie od 2,23E -308 do 1,79E + 308

Jednak liczba cyfr znaczących jest ograniczona do 17 cyfr dziesiętnych.
Boolean logiczny Wartość albo Prawda, albo Fałsz.
Text Struna Ciąg danych znaków Unicode. Może to być ciągi, liczby lub daty reprezentowane w formacie tekstowym.
Date Data i godzina Daty i godziny w zaakceptowanej reprezentacji daty i godziny.

Prawidłowe daty to wszystkie daty po 1 marca 1900 r.
Currency Waluta Typ danych waluty umożliwia wartości z zakresu od -922 337 203 685 477,5808 do 922 337 203 685 477,5807 z czterema cyframi dziesiętnymi o stałej dokładności.
Variant Wariant Służy do wyrażeń, takich jak DAX miary, które mogą zwracać różne typy danych. Na przykład miara DAX zwracająca liczbę całkowitą lub ciąg znaków będzie typu wariant.
N/A Pusty Pusta wartość to typ danych w DAX, który reprezentuje i zastępuje wartości null SQL. Pustą wartość można utworzyć przy użyciu funkcji BLANK oraz przetestować pod kątem pustych wartości przy użyciu funkcji logicznej ISBLANK.

Modele danych tabelarycznych obejmują również typ danych tabeli jako dane wejściowe lub wyjściowe dla wielu DAX funkcji. Na przykład FILTER funkcja przyjmuje tabelę jako dane wejściowe i generuje inną tabelę zawierającą tylko wiersze spełniające warunki filtrowania. Łącząc funkcje tabeli z funkcjami agregacji, można wykonywać złożone obliczenia w dynamicznie zdefiniowanych zestawach danych.

Podczas gdy typy danych są zwykle ustawiane automatycznie, ważne jest, aby zrozumieć typy danych i sposób ich stosowania, w szczególności, do DAX formuł. Błędy w formułach lub nieoczekiwane wyniki są często spowodowane użyciem określonego operatora, który nie może być używany z typem danych określonym w argumencie. Na przykład formuła, = 1 & 2, zwraca wynik ciągu 12. Formuła = "1" + "2"jednak zwraca wynik liczby całkowitej 3.

Uwaga

Obliczenia dotyczące typów danych ciągów mogą być ograniczone do 64 kb.

Kontekst

Kontekst jest ważnym pojęciem, które należy zrozumieć podczas tworzenia DAX formuł. Kontekst umożliwia przeprowadzanie analizy dynamicznej, ponieważ wyniki zmiany formuły odzwierciedlają bieżące zaznaczenie wiersza lub komórki, a także wszelkie powiązane dane. Zrozumienie kontekstu i efektywne używanie kontekstu ma kluczowe znaczenie dla tworzenia wysokiej wydajności, analiz dynamicznych i rozwiązywania problemów w formułach.

Formuły w modelach tabelarycznych można oceniać w innym kontekście, w zależności od innych elementów projektu:

  • Filtry zastosowane w tabeli przestawnej lub raporcie
  • Filtry zdefiniowane w formule
  • Relacje określone przy użyciu specjalnych funkcji w formule

Istnieją różne typy kontekstu: kontekst wiersza , kontekst zapytania i kontekst filtru .

Kontekst wiersza

kontekst wiersza można traktować jako "bieżący wiersz". Jeśli tworzysz formułę w kolumnie obliczeniowej, kontekst wiersza dla tej formuły zawiera wartości ze wszystkich kolumn w bieżącym wierszu. Jeśli tabela jest powiązana z inną tabelą, zawartość zawiera również wszystkie wartości z innej tabeli, które są powiązane z bieżącym wierszem.

Załóżmy na przykład, że tworzysz kolumnę obliczeniową, = [Freight] + [Tax], która dodaje wartości z dwóch kolumn, Freight i Tax z tej samej tabeli. Ta formuła automatycznie pobiera tylko wartości z bieżącego wiersza w określonych kolumnach.

Kontekst wiersza jest również zgodny z relacjami zdefiniowanymi między tabelami, w tym relacjami zdefiniowanymi w kolumnie obliczeniowej przy użyciu DAX formuł, aby określić, które wiersze w powiązanych tabelach są skojarzone z bieżącym wierszem.

Na przykład poniższa formuła używa RELATED funkcji do pobierania wartości podatkowej z powiązanej tabeli na podstawie regionu, do którego wysłano zamówienie. Wartość podatku jest określana przy użyciu wartości dla regionu w bieżącej tabeli, wyszukania regionu w powiązanej tabeli, a następnie pobrania stawki podatkowej dla tego regionu z powiązanej tabeli.

= [Freight] + RELATED('Region'[TaxRate])

Ta formuła pobiera stawkę podatku dla bieżącego regionu z tabeli Region i dodaje ją do wartości kolumny Freight. W DAX formułach nie trzeba wiedzieć ani określać określonej relacji łączącej tabele.

Kontekst wielu wierszy

DAX zawiera funkcje iterujące obliczenia w tabeli. Te funkcje mogą mieć wiele bieżących wierszy, z których każdy z nich ma własny kontekst wiersza. W istocie te funkcje umożliwiają tworzenie formuł, które wykonują operacje rekursywnie w wewnętrznej i zewnętrznej pętli.

Załóżmy na przykład, że model zawiera tabelę Products i tabelę Sales. Użytkownicy mogą chcieć przejść przez całą tabelę sprzedaży, która jest pełna transakcji obejmujących wiele produktów, i znaleźć największą ilość zamówioną dla każdego produktu w jednej transakcji.

Za pomocą DAX polecenia można utworzyć pojedynczą formułę, która zwraca poprawną wartość, a wyniki są automatycznie aktualizowane za każdym razem, gdy użytkownik doda dane do tabel.

= MAXX(FILTER(Sales,[ProdKey] = EARLIER([ProdKey])),Sales[OrderQty])

Aby uzyskać szczegółowy przykład tej formuły, zobacz EARLIER.

Podsumowując, EARLIER funkcja przechowuje kontekst wiersza z operacji, która poprzedza bieżącą operację. Przez cały czas funkcja przechowuje w pamięci dwa zestawy kontekstu: jeden zestaw kontekstu reprezentuje bieżący wiersz dla wewnętrznej pętli formuły, a drugi zestaw kontekstu reprezentuje bieżący wiersz dla zewnętrznej pętli formuły. DAX automatycznie generuje wartości między dwiema pętlami, dzięki czemu można tworzyć złożone agregacje.

Kontekst zapytania

kontekst zapytania odnosi się do podzbioru danych, który jest niejawnie pobierany dla formuły. Na przykład gdy użytkownik umieszcza miarę lub pole w raporcie, aparat sprawdza nagłówki wierszy i kolumn, fragmentatory i filtry raportu w celu określenia kontekstu. Następnie wymagane zapytania są uruchamiane względem danych modelu, aby uzyskać poprawny podzbiór danych, dokonać obliczeń zdefiniowanych przez formułę, a następnie wypełnić wartości w raporcie.

Ponieważ kontekst zmienia się w zależności od miejsca umieszczenia formuły, wyniki formuły mogą również ulec zmianie. Załóżmy na przykład, że tworzysz formułę, która sumuje wartości w kolumnie Profit tabeli Sales: = SUM('Sales'[Profit]). Jeśli używasz tej formuły w kolumnie obliczeniowej w tabeli Sales, wyniki formuły będą takie same dla całej tabeli, ponieważ kontekst zapytania dla formuły jest zawsze całym zestawem danych tabeli Sales. Wyniki będą miały zysk dla wszystkich regionów, wszystkich produktów, wszystkich lat itd.

Jednak użytkownicy zazwyczaj nie chcą widzieć tego samego wyniku setki razy, ale zamiast tego chcą uzyskać zysk dla określonego roku, konkretnego kraju, konkretnego produktu lub kombinacji tych, a następnie uzyskać sumę końcową.

W raporcie kontekst jest zmieniany przez filtrowanie, dodawanie lub usuwanie pól oraz używanie fragmentatorów. Dla każdej zmiany kontekst zapytania, w którym jest oceniana miara. W związku z tym ta sama formuła używana w mierze jest obliczana w innym kontekście zapytania dla każdej komórki.

Kontekst filtru

kontekst filtru jest zestawem wartości dozwolonych w każdej kolumnie lub wartości pobranych z powiązanej tabeli. Filtry można stosować do kolumny w programie Desktop lub w warstwie prezentacji (raporty i tabele przestawne). Filtry można również zdefiniować jawnie za pomocą wyrażeń filtru w formule.

Kontekst filtru jest dodawany podczas określania ograniczeń filtru dla zestawu wartości dozwolonych w kolumnie lub tabeli przy użyciu argumentów do formuły. Kontekst filtru jest stosowany na podstawie innych kontekstów, takich jak kontekst wiersza lub kontekst zapytania.

W modelach tabelarycznych istnieje wiele sposobów tworzenia kontekstu filtru. W kontekście klientów, którzy mogą korzystać z modelu, takiego jak raporty usługi Power BI, użytkownicy mogą tworzyć filtry na bieżąco, dodając fragmentatory lub filtry raportów w nagłówkach wierszy i kolumn. Możesz również określić wyrażenia filtru bezpośrednio w formule, aby określić powiązane wartości, filtrować tabele używane jako dane wejściowe lub dynamicznie pobierać kontekst wartości używanych w obliczeniach. Można również całkowicie wyczyścić lub selektywnie wyczyścić filtry dla określonych kolumn. Jest to bardzo przydatne podczas tworzenia formuł, które obliczają sumy końcowe.

Aby dowiedzieć się więcej na temat tworzenia filtrów w formułach, zobacz FILTER Funkcja (DAX). Aby zapoznać się z przykładem sposobu czyszczenia filtrów w celu utworzenia sum końcowych, zobacz ALL funkcję (DAX).

Przykłady selektywnego czyszczenia i stosowania filtrów w formułach można znaleźć w temacie ALLEXCEPT.

Określanie kontekstu w formułach

Podczas tworzenia DAX formuły formuła jest najpierw testowana pod kątem prawidłowej składni, a następnie testowana w celu upewnienia się, że nazwy kolumn i tabel zawartych w formule można znaleźć w bieżącym kontekście. Jeśli nie można odnaleźć żadnej kolumny lub tabeli określonej przez formułę, zwracany jest błąd.

Kontekst podczas walidacji (i operacje ponownego obliczania) jest określany zgodnie z opisem w poprzednich sekcjach, przy użyciu dostępnych tabel w modelu, wszelkich relacji między tabelami i wszelkich zastosowanych filtrów.

Na przykład, jeśli właśnie zaimportowałeś dane do nowej tabeli i nie są one związane z innymi tabelami oraz nie zostały zastosowane żadne filtry, bieżącym kontekstem jest cały zestaw kolumn w tabeli. Jeśli tabela jest połączona przez relacje z innymi tabelami, bieżący kontekst zawiera powiązane tabele. Jeśli dodasz kolumnę z tabeli do raportu, który zawiera fragmentatory i/lub filtry raportu, kontekst formuły to podzbiór danych w każdej komórce raportu.

Kontekst to zaawansowana koncepcja, która może również utrudnić rozwiązywanie problemów z formułami. Zalecamy rozpoczęcie od prostych formuł i relacji, aby zobaczyć, jak działa kontekst. W poniższej sekcji przedstawiono kilka przykładów użycia formuł w różnych typach kontekstu do dynamicznego zwracania wyników.

Operatorów

Język DAX używa czterech różnych typów operatorów obliczeń w formułach:

  • Operatory porównania służą do porównywania wartości i zwracania wartości logicznej TRUE"FALSE".
  • Operatory arytmetyczne do wykonywania obliczeń arytmetycznych, które zwracają wartości liczbowe.
  • Operatory łączenia tekstu w celu sprzężenia dwóch lub większej liczby ciągów tekstowych.
  • Operatory logiczne, które łączą co najmniej dwa wyrażenia, aby zwrócić jeden wynik.

Aby uzyskać szczegółowe informacje o operatorach używanych w DAX formułach, zobacz DAX operatory.

Praca z tabelami i kolumnami

Tabele w tabelarycznych modelach danych wyglądają jak tabele programu Excel, ale różnią się sposobem pracy z danymi i formułami:

  • Formuły działają tylko z tabelami i kolumnami, a nie z poszczególnymi komórkami, odwołaniami do zakresu lub tablicami.
  • Formuły mogą używać relacji do pobierania wartości z powiązanych tabel. Pobrane wartości są zawsze powiązane z bieżącą wartością wiersza.
  • Nie można mieć nieregularnych lub "poszarpanych" danych, takich jak w arkuszu programu Excel. Każdy wiersz w tabeli musi zawierać tę samą liczbę kolumn. Jednak w niektórych kolumnach można mieć puste wartości. Tabele danych programu Excel i tabele danych modelu tabelarycznego nie są wymienne.
  • Ponieważ typ danych jest ustawiany dla każdej kolumny, każda wartość w tej kolumnie musi być tego samego typu.

Odwoływania się do tabel i kolumn w formułach

Możesz odwołać się do dowolnej tabeli i kolumny przy użyciu jej nazwy. Na przykład, poniższa formuła ilustruje sposób odwoływania się do kolumn z dwóch tabel za pomocą w pełni kwalifikowanej nazwy :


= SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])

Gdy formuła jest obliczana, projektant modelu najpierw sprawdza składnię ogólną, a następnie sprawdza nazwy kolumn i tabel, które podajesz względem możliwych kolumn i tabel w bieżącym kontekście. Jeśli nazwa jest niejednoznaczna lub nie można odnaleźć kolumny lub tabeli, w formule zostanie wyświetlony błąd (ciąg #ERROR zamiast wartości danych w komórkach, w których występuje błąd). Aby dowiedzieć się więcej o wymaganiach dotyczących nazewnictwa tabel, kolumn i innych obiektów, zobacz Wymagania dotyczące nazewnictwa w DAX składni.

Relacje między tabelami

Tworząc relacje między tabelami, zyskujesz możliwość użycia powiązanych wartości w innych tabelach w obliczeniach. Na przykład możesz użyć kolumny obliczeniowej, aby określić wszystkie rekordy wysyłki powiązane z bieżącym odsprzedawcą, a następnie zsumować koszty wysyłki dla każdego z nich. Jednak w wielu przypadkach relacja może nie być konieczna. Funkcja w formule umożliwia LOOKUPVALUE zwrócenie wartości w result_columnName dla wiersza spełniającego kryteria określone w search_column i search_value argumentów.

Wiele DAX funkcji wymaga istnienia relacji między tabelami lub między wieloma tabelami w celu zlokalizowania odwołanych kolumn i zwracania wyników, które mają sens. Inne funkcje będą próbować zidentyfikować relację; jednak w celu uzyskania najlepszych wyników zawsze należy utworzyć relację tam, gdzie to możliwe. Modele danych tabelarycznych obsługują wiele relacji między tabelami. Aby uniknąć nieporozumień lub nieprawidłowych wyników, tylko jedna relacja w danym momencie jest wyznaczona jako aktywna relacja, ale możesz zmienić aktywną relację w razie potrzeby, aby przejść przez różne połączenia w danych w obliczeniach. USERELATIONSHIP funkcja może służyć do określania co najmniej jednej relacji, która ma być używana w określonym obliczeniu.

Podczas korzystania z relacji należy przestrzegać tych reguł projektowania formuł:

  • Gdy tabele są połączone przez relację, należy upewnić się, że dwie kolumny używane jako klucze mają zgodne wartości. Integralność referencyjna nie jest wymuszana, dlatego możliwe jest posiadanie niepasujących wartości w kolumnie klucza i nadal tworzenie relacji. W takim przypadku należy pamiętać, że puste wartości lub wartości niezgodne mogą mieć wpływ na wyniki formuł.

  • Po połączeniu tabel w modelu przy użyciu relacji możesz powiększyć zakres lub kontekst, w którym są oceniane formuły. Zmiany w kontekście wynikające z dodawania nowych tabel, nowych relacji lub zmian w aktywnej relacji mogą spowodować zmianę wyników w sposób, który może nie być przewidywany. Aby dowiedzieć się więcej, zobacz Kontekst w tym artykule.

Przetwarzanie i odświeżanie

Proces oraz ponowne obliczanie to dwie oddzielne, ale powiązane operacje. Należy dokładnie zrozumieć te pojęcia podczas projektowania modelu zawierającego złożone formuły, duże ilości danych lub dane uzyskane z zewnętrznych źródeł danych.

Proces (odświeżanie) aktualizuje dane w modelu przy użyciu nowych danych z zewnętrznego źródła danych.

Ponowne obliczanie to proces aktualizowania wyników formuł w celu odzwierciedlenia wszelkich zmian w samych formułach i odzwierciedlenia zmian w danych bazowych. Ponowne obliczanie może mieć wpływ na wydajność w następujący sposób:

  • Wartości w kolumnie obliczeniowej są obliczane i przechowywane w modelu. Aby zaktualizować wartości w kolumnie obliczeniowej, należy przetworzyć model przy użyciu jednego z trzech poleceń przetwarzania — Przetwarzanie pełne, przetwarzanie danych lub ponowne obliczanie procesu. Wynik formuły musi być zawsze ponownie obliczany dla całej kolumny przy każdej zmianie formuły.

  • Wartości obliczane przez miary są dynamicznie oceniane za każdym razem, gdy użytkownik dodaje miarę do tabeli przestawnej lub otwiera raport; gdy użytkownik modyfikuje kontekst, wartości zwracane przez miarę zmieniają się. Wyniki miary zawsze odzwierciedlają najnowsze informacje w pamięci podręcznej.

Przetwarzanie i ponowne obliczanie nie ma wpływu na formuły zabezpieczeń na poziomie wiersza, chyba że wynik ponownego obliczania zwraca inną wartość, co sprawia, że wiersz jest możliwy do wykonywania zapytań lub nie jest możliwy do wykonywania zapytań przez członków roli.

Aktualizacje

DAX jest stale ulepszany. Nowe i zaktualizowane funkcje są wydawane w ramach następnej dostępnej aktualizacji, co zazwyczaj następuje co miesiąc. Usługi są najpierw aktualizowane, a następnie instalowane aplikacje, takie jak Power BI Desktop, Excel, SQL Server Management Studio (SSMS) i rozszerzenie projektu usług Analysis Services dla programu Visual Studio (SSDT). Usługi SQL Server Analysis Services są aktualizowane przy użyciu następnej aktualizacji zbiorczej. Nowe funkcje są najpierw ogłaszane i opisane w dokumentacji funkcji zbiegającej się z DAX aktualizacjami programu Power BI Desktop.

Nie wszystkie funkcje są obsługiwane we wcześniejszych wersjach usług SQL Server Analysis Services i Excel.

Rozwiązywanie problemów

Jeśli podczas definiowania formuły wystąpi błąd, formuła może zawierać błąd składniowy , błąd semantyczny lub błąd obliczania .

Błędy składniowe są najłatwiejsze do rozwiązania. Zazwyczaj obejmują brak nawiasu lub przecinek.

Inny typ błędu występuje, gdy składnia jest poprawna, ale wartość lub kolumna, do których odwołuje się odwołanie, nie ma sensu w kontekście formuły. Takie błędy semantyczne i obliczeniowe mogą być spowodowane przez dowolne z następujących problemów:

  • Formuła odwołuje się do nieistnienej kolumny, tabeli lub funkcji.
  • Formuła wydaje się być poprawna, ale gdy aparat danych pobiera dane, znajduje niezgodność typu i zgłasza błąd.
  • Formuła przekazuje do funkcji niepoprawną liczbę lub typ argumentów.
  • Formuła odwołuje się do innej kolumny, która zawiera błąd, a zatem jej wartości są nieprawidłowe.
  • Formuła odwołuje się do kolumny, która nie została przetworzona, co oznacza, że zawiera metadane, ale nie ma rzeczywistych danych do użycia na potrzeby obliczeń.

W pierwszych czterech przypadkach DAX flaguje całą kolumnę zawierającą nieprawidłową formułę. W ostatnim przypadku DAX kolumna szarzeje się, aby wskazać, że kolumna jest w stanie nieprzetworzonym.

Aplikacje i narzędzia

Power BI Desktop

Power BI Desktop

programu Power BI Desktop to bezpłatna aplikacja do modelowania i raportowania danych. Projektant modelu zawiera DAX edytor do tworzenia DAX formuł kalkulacyjnych.

Power Pivot w Excelu

Power Pivot w Excelu

Projektant modeli dodatku Power Pivot w programie Excel zawiera DAX edytor do tworzenia DAX formuł obliczeń.

Visual Studio

Visual Studio

Visual Studio z rozszerzeniem Analysis Services Projects (VSIX) służy do tworzenia projektów modeli usług Analysis Services. Projektant modeli tabelarycznych, zainstalowany wraz z rozszerzeniem projektów, zawiera edytor DAX.

SQL Server Management Studio

SQL Server Management Studio

SQL Server Management Studio (SSMS) to podstawowe narzędzie do pracy z Analysis Services. Program SSMS zawiera DAX edytor zapytań do wykonywania zapytań zarówno w modelach tabelarycznych, jak i wielowymiarowych.

DAX Studio

DAX Ikona programu Studio

DAX Studio to narzędzie klienckie typu open source do tworzenia i uruchamiania DAX zapytań względem usług Analysis Services, programu Power BI Desktop i dodatku Power Pivot w modelach programu Excel.

Edytor tabelaryczny

ikona edytora tabelarycznego

Tabular Editor to narzędzie typu open source, które zapewnia intuicyjny, hierarchiczny widok każdego obiektu w metadanych modelu tabelarycznego. Edytor tabelaryczny zawiera DAX edytor z wyróżnianiem składni, który zapewnia łatwy sposób edytowania miar, kolumny obliczeniowej i wyrażeń tabeli obliczeniowej.

Zasoby szkoleniowe

Podczas uczenia się DAXnajlepiej używać aplikacji, której będziesz używać do tworzenia modeli danych. Usługi Analysis Services, program Power BI Desktop i dodatek Power Pivot w programie Excel zawierają artykuły i samouczki obejmujące lekcje dotyczące tworzenia miar, kolumn obliczeniowych i filtrów wierszy przy użyciu polecenia DAX. Oto kilka dodatkowych zasobów:

Videos

Użyj w DAX ścieżce szkoleniowej programu Power BI Desktop .

Ostateczny przewodnik po DAX autorstwa Alberto Ferrariego i Marco Russo (Microsoft Press). Teraz w drugiej edycji ten obszerny przewodnik zawiera podstawowe informacje na temat innowacyjnych technik wysokiej wydajności dla początkujących specjalistów ds. modelowania danych i specjalistów ds. analizy biznesowej.

DAX

Społeczność

DAX ma żywą społeczność zawsze chętną do dzielenia się swoją wiedzą. Społeczność usługi Microsoft Power BI ma specjalne forum dyskusyjne tylko dla DAXDAX poleceń i porad.