AEG A18CS57BL to wysokiej jakości, wielofunkcyjny kuchenny robot, który pozwala użytkownikowi na precyzyjne i efektywne przygotowywanie posiłków. Posiada on niezawodny silnik z zintegrowanym systemem chłodzenia, dzięki czemu jest w stanie pracować bez przerw w wyższych temperaturach. AEG A18CS57BL jest wyposażony w wiele funkcji, w tym obieranie, siekanie, rozdrabnianie, ubijanie i blendowanie. Ma także 12 prędkości i funkcję pulsowania, dzięki czemu można precyzyjnie kontrolować jego działanie. Robot kuchenny wyposażony jest w wygodny uchwyt, dzięki czemu łatwo jest go przenosić i przechowywać.
Ostatnia aktualizacja: Opis funkcji Aeg A18cs57bl
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
- Artykuł
- Czas czytania: 28 min
Język DAX (Data Analysis Expressions) to język wyrażeń formuł używany w usługach Analysis Services, usłudze Power BI i dodatku Power Pivot w programie Excel. Formuły języka DAX obejmują funkcje, operatory i wartości, które umożliwiają wykonywanie zaawansowanych obliczeń i zapytań dotyczących danych w powiązanych tabelach i kolumnach w tabelarycznych modelach danych.
Ten artykuł przedstawia tylko podstawowe wprowadzenie do najważniejszych koncepcji języka DAX. Zawiera on opis języka DAX, który ma zastosowanie do wszystkich produktów, które go używają. Niektóre funkcje mogą nie dotyczyć niektórych produktów lub przypadków użycia. Zapoznaj się z dokumentacją produktu opisującą konkretną implementację języka DAX.
Obliczenia
Formuły języka DAX są używane w miarach, kolumnach obliczeniowych, tabelach obliczeniowych i zabezpieczeniach na poziomie wiersza.
Miary
Miary są dynamicznymi formułami obliczeniowymi, których wyniki zmieniają się w zależności od kontekstu. Miary są używane przez funkcje raportowania, które obsługują łączenie i filtrowanie danych modeli przy użyciu wielu atrybutów, takich jak raport Power BI albo tabela przestawna i wykres przestawny programu Excel. Miary są tworzone przy użyciu paska formuły języka DAX w projektancie modeli.
Formuła miary może używać standardowych funkcji agregacji automatycznie tworzonych przy użyciu funkcji autosumowania, takich jak COUNT lub SUM. Można również zdefiniować własną formułę przy użyciu paska formuły języka DAX. Nazwane miary można przekazać jako argument do innych wyrażeń.
Po zdefiniowaniu formuły dla miary na pasku formuły funkcja etykietki narzędzia pokazuje podgląd wyników dla sumy w bieżącym kontekście, ale wyniki nie są natychmiast pokazywane jako dane wyjściowe w żadnym innym miejscu. Przyczyną tego, że wyniki obliczenia nie są od razu widoczne (filtrowane), jest fakt, że wynik miary nie może być określony bez kontekstu. Aby oszacować miarę, wymagana jest aplikacja kliencka do raportowania, która może zapewnić kontekst potrzebny do pobrania danych związanych z każdą komórką, a następnie oszacować wartość wyrażenia dla każdej komórki. Ten klient może być tabelą przestawną lub wykresem przestawnym programu Excel, raportem usługi Power BI lub wyrażeniem tabeli w zapytaniu języka DAX w programie SQL Server Management Studio (SSMS).
Niezależnie od klienta jest uruchamiane oddzielne zapytanie dla każdej komórki w wynikach. 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 podzestaw danych, dla których jest obliczana miara. Na przykład tej bardzo prostej formuły miary można użyć w następującej sytuacji:
Total Sales = SUM([Sales Amount])
Gdy użytkownik umieści miarę TotalSales w raporcie, a następnie umieści kolumnę kategorii produktu z tabeli produktów w oknie filtrów, zostanie obliczona i wyświetlona suma kwot sprzedaży 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 (Sprzedaż całkowita) pojawia się przed formułą. Po utworzeniu miary nazwa i jej definicja pojawiają się na liście pól aplikacji klienta raportowania i 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 Desktop
Miary w usługach Analysis Services
Miary w dodatku Power Pivot
Kolumny obliczeniowe
Kolumna obliczeniowa to kolumna dodawana do istniejącej tabeli (w projektancie modeli). Następnie jest tworzona formuła języka DAX, która definiuje wartości kolumny. Gdy kolumna obliczeniowa zawiera prawidłową formułę języka DAX, wartości są obliczane dla każdego wiersza zaraz po wprowadzeniu formuły. Wartości są następnie przechowywane w modelu danych w pamięci. Na przykład gdy formuła zostanie wprowadzona do na pasku formuły tabeli dat:
= [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 dat), dodanie spacji i wielkiej litery Q, a następnie dodanie wartości z kolumny Kwartał kalendarzowy (w tej samej tabeli dat). Wynik dla każdego wiersza w kolumnie obliczeniowej jest obliczany natychmiast i pojawia się na przykład jako 2017 Q1. Wartości kolumn są obliczane ponownie tylko wtedy, gdy tabela lub wszystkie powiązane tabele są przetwarzane (odświeżane) lub model zostaje zwolniony z pamięci, a następnie ponownie załadowany, tak jak podczas zamykania i ponownego otwierania pliku programu Power BI Desktop.
Kolumny obliczeniowe w programie Power BI Desktop
Kolumny obliczeniowe w usługach Analysis Services
Kolumny obliczeniowe w dodatku Power Pivot. Tabele obliczeniowe
Tabela obliczeniowa jest obiektem obliczanym w oparciu o wyrażenie formuły pochodzące od całych lub części innych tabel w tym samym modelu. Zamiast wykonywania zapytań i ładowania wartości do nowych kolumn tabeli ze źródła danych, formuła języka DAX definiuje wartości w tabeli.
Tabele obliczeniowe mogą być przydatne w wymiarze umożliwiającym odtwarzanie ról. Przykładem jest tabela dat, takich jak OrderDate (data zamówienia), ShipDate (data wysyłki) lub DueDate (termin), w zależności od relacji klucza obcego. Dzięki jawnemu utworzeniu tabeli obliczeniowej dla daty ShipDate uzyskasz autonomiczną tabelę, która jest dostępna dla zapytań, a także działa tak jak każda inna tabela. Tabele obliczeniowe są również przydatne podczas konfigurowania filtrowanego zestawu wierszy lub podzestawu albo nadzbioru kolumn z innych istniejących tabel. Pozwala to 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 zawierają typy danych i formatowanie oraz mogą należeć do kategorii danych. Tabele obliczeniowe mogą być nazwane, pokazywane lub ukrywane tak samo jak każda inna tabela. Tabele obliczeniowe są ponownie obliczane, jeśli którakolwiek z tabel, z której są ściągane dane, zostanie odświeżona lub zaktualizowana. com/pl-pl/power-bi/transform-model/desktop-calculated-tables" data-linktype="absolute-path">Tabele obliczeniowe w programie Power BI Desktop
Tabele obliczeniowe w usługach Analysis Services.
Zabezpieczenia na poziomie wiersza
W przypadku zabezpieczeń na poziomie wiersza formuła języka DAX musi mieć wynik będący wartością logiczną TRUE/FALSE i definiujący, które wiersze mogą być zwracane przez wyniki zapytania przez członków określonej roli. Na przykład w przypadku członków roli Sprzedaż, tabela klientów z następującą formułą języka DAX:
= Customers[Country] = "USA"Członkowie roli Sprzedaż będą mogli wyświetlać dane dla klientów w Stanach Zjednoczonych, a funkcje zagregowane, takie jak SUM, będą zwracane tylko dla klientów w Stanach Zjednoczonych. Zabezpieczenia na poziomie wiersza nie są dostępne w dodatku Power Pivot dla programu Excel.
Podczas definiowania zabezpieczeń na poziomie wiersza przy użyciu formuły języka DAX tworzysz dozwolony zestaw wierszy. Nie powoduje to odmowy dostępu do innych wierszy; zamiast tego nie są one po prostu zwracane jako część dozwolonego zestawu wierszy. Inne role mogą zezwalać na dostęp do wierszy wykluczonych przez formułę języka DAX. Jeśli użytkownik jest członkiem innej roli i zabezpieczenia na poziomie wiersza tej roli umożliwiają dostęp do tego określonego zestawu wierszy, użytkownik może wyświetlić 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 aktywnej relacji. Formuły zabezpieczeń na poziomie wiersza będą przecinać się z innymi formułami zdefiniowanymi dla powiązanych tabel. com/pl-pl/power-bi/admin/service-admin-rls" data-linktype="absolute-path">Zabezpieczenia na poziomie wiersza w usłudze Power BI
Role w usługach Analysis Services
Zapytania
Zapytania języka DAX można tworzyć i uruchamiać w programie SQL Server Management Studio (SSMS) i narzędziach open source, takich jak DAX Studio (daxstudio. org). W przeciwieństwie do formuł obliczeń języka DAX, które mogą być tworzone tylko w modelach danych tabelarycznych, zapytania języka DAX można także uruchamiać w odniesieniu do modeli wielowymiarowych usług Analysis Services. Zapytania języka DAX są często łatwiejsze do napisania i wydajniejsze niż zapytania wielowymiarowe wyrażenia danych (MDX).
Zapytanie języka DAX jest instrukcją podobną do instrukcji SELECT w języku T-SQL. Najbardziej podstawowym typem zapytania języka DAX jest instrukcja evaluate (oceń). Na przykład
EVALUATE( FILTER ( 'DimProduct', [SafetyStockLevel] < 200))ORDER BY [EnglishProductName] ASCZwraca wyniki w postaci tabeli zawierającej tylko produkty z poziomem SafetyStockLevel mniejszym niż 200 w kolejności rosnącej według nazwy EnglishProductName.
Miary można tworzyć jako część zapytania. Miary istnieją tylko przez czas trwania zapytania.Aby dowiedzieć się więcej, zobacz DAX queries (Zapytania języka DAX).
Formuły
Formuły języka DAX są niezbędne do tworzenia obliczeń w kolumnach i miarach obliczeniowych oraz do zabezpieczania danych przy użyciu zabezpieczeń na poziomie wiersza. Aby utworzyć formuły dla kolumn i miar obliczeniowych, użyj paska formuły w górnej części okna projektanta modelu lub edytora języka DAX. Aby utworzyć formuły dla zabezpieczeń na poziomie wiersza, użyj okna dialogowego Menedżer ról lub Zarządzanie rolami. Informacje przedstawione w tej sekcji ułatwiają rozpoczęcie pracy oraz zrozumienie podstaw formuł języka DAX.
Podstawowe informacje o formułach
Formuły języka DAX mogą być bardzo proste lub dość skomplikowane. 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 dzisiejszą 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 kolumn [Column1] i [Column2], a następnie umieszcza wyniki w kolumnie obliczeniowej tego samego wiersza.
Niezależnie od tego, czy tworzona formuła jest prosta, czy złożona, można użyć następujących kroków podczas kompilowania formuły:
Każda formuła musi rozpoczynać się od znaku równości (=).
Możesz wpisać lub wybrać nazwę funkcji albo wpisać wyrażenie.
Rozpocznij wpisywanie kilku pierwszych liter funkcji lub nazwy, a funkcja Autouzupełnianie wyświetl listę dostępnych funkcji, tabel i kolumn. Naciśnij klawisz 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 klawiszy strzałek w celu wyróżnienia elementu, a następnie kliknij przycisk OK w celu dodania funkcji do formuły.
Podaj argumenty funkcji, wybierając je z listy rozwijanej możliwych tabel i kolumn lub wpisując wartości.
Sprawdź błędy składni: upewnij się, że wszystkie nawiasy są zamknięte, a kolumny, tabele i wartości są prawidłowo przywoływane.
Naciśnij klawisz ENTER, aby zaakceptować formułę.
Uwaga
W przypadku kolumny obliczeniowej, gdy tylko wprowadzisz formułę, a formuła zostanie zweryfikowana, kolumna zostanie wypełniona wartościami. W mierze naciśnięcie klawisza ENTER powoduje zapisanie definicji miary przy użyciu tabelą. Jeśli formuła jest nieprawidłowa, jest wyświetlany komunikat o błędzie.
W tym przykładzie przyjrzyjmy się formule w mierze o nazwie Dni w bieżącym kwartale:
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 okresem nieukończonym i poprzednim okresem. W formule należy uwzględnić część okresu, który upłynął, i porównać ją z tą samą proporcją w poprzednim okresie. W takim przypadku wartość [Dni w bieżącym kwartale do daty]/[Dni w bieżącym kwartale] przedstawia proporcję czasu, który upłynął 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
Funkcja COUNTROWS liczy liczbę wierszy w tabeli dat ()
Nawiasy otwierające i zamykające określają argumenty. DATESBETWEEN
Funkcja DATESBETWEEN zwraca daty między ostatnią datą dla każdej wartości w kolumnie daty w tabeli dat. 'Date'
Określa tabelę dat. Tabele znajdują się w pojedynczych cudzysłowach. [Date]
Określa kolumnę daty w tabeli dat. Kolumny znajdują się w nawiasach. ,
STARTOFQUARTER
Funkcja STARTOFQUARTER zwraca datę początkową kwartału. LASTDATE
Funkcja LASTDATE zwraca ostatnią datę kwartału. Określa tabelę dat. Określa kolumnę daty w tabeli dat. ENDOFQUARTER
Funkcja ENDOFQUARTER Korzystanie z funkcji Autouzupełnianie dla formuł
Funkcja Autouzupełnianie pomaga wprowadzić prawidłową składnię formuły, podpowiadając opcje dla każdego elementu w formule.
Można użyć autouzupełniania formuł w środku istniejącej formuły z zagnieżdżonymi funkcjami. 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 powoduje dodania nawiasu zamykającego funkcji ani automatycznego dopasowania nawiasów. Musisz upewnić się, że każda funkcja ma poprawną składnię. Jeśli nie, nie będzie 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 poziomów funkcji. Jednak zagnieżdżanie może utrudniać tworzenie formuł i rozwiązywanie dotyczących ich problemów. Wiele funkcji jest przeznaczonych do użycia wyłącznie jako funkcje zagnieżdżone. Te funkcje zwracają tabelę, której nie można bezpośrednio zapisać w wyniku; należy ją dostarczyć jako dane wejściowe do funkcji tabeli. Na przykład funkcje SUMX, AVERAGEX i MINX wymagają tabeli jako pierwszego argumentu.
Funkcje
Funkcja jest nazwaną formułą w wyrażeniu. Większość funkcji ma wymagane i opcjonalne argumenty (nazywane także parametrami) jako dane wejściowe. Gdy funkcja jest wykonywana, zwracana jest wartość. Język DAX zawiera funkcje, których można użyć do wykonywania obliczeń przy użyciu dat i godzin, tworzenia wartości warunkowych, pracy z ciągami, wykonywania wyszukiwań opartych na relacjach. Ma również możliwość iteracji tabeli w celu wykonywania obliczeń cyklicznych. Jeśli znasz formuły programu Excel, wiele z tych funkcji będzie wyglądać bardzo podobnie, jednak formuły języka DAX różnią się w następujący sposób:
Funkcja języka DAX zawsze odwołuje się do kompletnej kolumny lub tabeli. Jeśli chcesz użyć konkretnych wartości z tabeli lub kolumny, możesz dodać do formuły filtry.
Jeśli musisz dostosowywać obliczenia wiersz po wierszu, wówczas język DAX udostępnia funkcje, dzięki którym możesz użyć wartości bieżącego wiersza albo powiązanej wartości jako rodzaju parametru, aby wykonać obliczenia zmieniające się w zależności od kontekstu. Aby zrozumieć, jak działają te funkcje, zobacz sekcję Kontekst w tym artykule.
Język DAX zawiera wiele funkcji, które zwracają tabelę, a nie wartość. Ta tabela nie jest wyświetlana w kliencie raportowania, ale jest używana w celu zapewnienia danych wejściowych dla innych funkcji. Możesz na przykład pobrać tabelę, a następnie zliczyć w niej odrębne wartości lub obliczyć dynamiczne sumy z wielu filtrowanych tabel lub kolumn.
Funkcje języka DAX obejmują różne funkcje analizy czasu. Te funkcje pozwalają definiować lub wybierać zakresy czasu, a także wykonywać dynamiczne obliczenia w oparciu o te daty lub zakresy. Możesz na przykład porównywać sumy z równoległych okresów.
Funkcje agregacji
Funkcje agregacji obliczają (skalarną) wartość, taką jak liczba, suma, średnia, minimum lub maksimum dla wszystkich wierszy w kolumnie lub tabeli zdefiniowanej przez wyrażenie. Aby dowiedzieć się więcej, zobacz Funkcje agregacji.
Funkcje daty i godziny
Funkcje daty i godziny w języku DAX są podobne do funkcji daty i godziny w programie Microsoft Excel. Jednak funkcje języka DAX są oparte na typie danych data/godzina zaczynających się od 1 marca 1900 r. com/pl-pl/dax/date-and-time-functions-dax" data-linktype="relative-path">Funkcje daty i godziny.
Funkcje filtrowania
Funkcje filtrowania w języku 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ą przez użycie tabel i relacji, tak jak baza danych. Funkcje filtrowania umożliwiają manipulowanie kontekstem danych w celu tworzenia dynamicznych obliczeń. com/pl-pl/dax/filter-functions-dax" data-linktype="relative-path">Funkcje filtrów.
Funkcje finansowe
Funkcje finansowe w języku 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. com/pl-pl/dax/financial-functions-dax" data-linktype="relative-path">Funkcje finansowe.
Funkcje informacyjne
Funkcja informacyjne sprawdzają komórkę lub wiersz podawane jako argument i informują, czy wartość jest zgodna z oczekiwanym typem. Na przykład funkcja ISERROR zwraca wartość TRUE, jeśli wartość, do której się odwołujesz, zawiera błąd. com/pl-pl/dax/information-functions-dax" data-linktype="relative-path">Funkcje informacyjne.
Funkcje logiczne
Funkcje logiczne działają na wyrażeniu i zwracają informacje o wartościach w wyrażeniu. Na przykład funkcja TRUE pozwala sprawdzić, czy wyrażenie, które oceniasz, zwraca wartość TRUE (prawda). com/pl-pl/dax/logical-functions-dax" data-linktype="relative-path">Funkcje logiczne.
Funkcje matematyczne i trygonometryczne
Funkcje matematyczne w języku DAX są bardzo podobne do funkcji matematycznych i trygonometrycznych programu Excel. Istnieją pewne drobne różnice dotyczące typów danych liczbowych używanych przez funkcje języka DAX. com/pl-pl/dax/math-and-trig-functions-dax" data-linktype="relative-path">Funkcje matematyczne i trygonometryczne.
Inne funkcje
Funkcje te wykonują unikatowe akcje, których nie można zdefiniować za pomocą żadnej z kategorii, do której należą inne funkcje. com/pl-pl/dax/other-functions-dax" data-linktype="relative-path">Inne funkcje.
Funkcje relacji
Funkcje relacji w języku DAX umożliwiają zwracanie wartości z innej powiązanej tabeli, określanie konkretnej relacji do użycia w wyrażeniu i określanie kierunku filtrowania krzyżowego. com/pl-pl/dax/relationship-functions-dax" data-linktype="relative-path">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. com/pl-pl/dax/statistical-functions-dax" data-linktype="relative-path">Funkcje statystyczne.
Funkcje tekstowe
Funkcje tekstowe w języku DAX są bardzo podobne do swoich odpowiedników w programie Excel. Można zwrócić część ciągu, wyszukać tekst w ciągu lub połączyć wartości ciągu. Język DAX udostępnia również funkcje służące do kontrolowania formatów dat, godzin i liczb. com/pl-pl/dax/text-functions-dax" data-linktype="relative-path">Funkcje tekstowe.
Funkcje analizy czasowej
Funkcje analizy czasowej dostępne w języku DAX umożliwiają tworzenie obliczeń wykorzystujących wbudowaną wiedzę na temat kalendarzy i dat. Korzystając z zakresów godzin i dat w połączeniu z agregacjami lub obliczeniami, można tworzyć znaczące porównania w porównywalnych okresach dla sprzedaży, spisu zapasów itd. com/pl-pl/dax/time-intelligence-functions-dax" data-linktype="relative-path">Funkcje analizy czasowej (DAX).
Funkcje manipulowania tabelami
Te funkcje zwracają tabelę lub manipulują istniejącymi tabelami. Na przykład za pomocą funkcji ADDCOLUMNS można dodać kolumny obliczeniowe do określonej tabeli lub można zwrócić tabelę podsumowującą dla zestawu grup za pomocą funkcji SUMMARIZECOLUMNS. com/pl-pl/dax/table-manipulation-functions-dax" data-linktype="relative-path">Funkcje manipulowania tabelami.
Zmienne
Zmienne w wyrażeniu można tworzyć przy użyciu elementu VAR. Z technicznego punktu widzenia VAR nie jest funkcją — jest to słowo kluczowe używane do przechowywania wyniku wyrażenia jako nazwanej zmiennej. Tę zmienną można następnie przekazać jako argument do innych wyrażeń miary. Przykład:
VARTotalQty = SUM ( Sales[Quantity])ReturnIF (TotalQty > 1000,TotalQty * 0. 95,TotalQty * 1. 25)W tym przykładzie element TotalQty można przekazać jako zmienną nazwaną do innych wyrażeń. Zmienne mogą mieć dowolny skalarny typ danych, w tym tabele. Używanie zmiennych w formułach języka DAX pozwala na korzystanie z niezwykle zaawansowanych możliwości.
Typy danych
Dane można importować 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 obliczeniach, są następnie konwertowane na typ danych języka DAX na potrzeby czasu trwania i danych wyjściowych obliczenia. Podczas tworzenia formuły języka DAX terminy użyte w formule automatycznie określają zwracaną wartość typu danych.
Język DAX obsługuje następujące typy danych:
Typ danych w modelu Typ danych w języku DAX Liczbowy całkowity 64-bitowa wartość całkowita (osiem bajtów) 1, 2 Liczby, które nie mają miejsc dziesiętnych. Liczby całkowite mogą być dodatnie lub ujemne, ale muszą być liczbami całkowitymi między z zakresu od -9 223 372 036 854 775 808 (-2^63) do 9 223 372 036 854 775 807 (2^63-1). Liczba dziesiętna 64-bitowa liczba rzeczywista (osiem bajtów) 1, 2 Liczby rzeczywiste to liczby, które mogą mieć miejsca dziesiętne. Liczby rzeczywiste obejmują szeroką gamę wartości: Wartości ujemne od -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 (wartość logiczna) Wartość true lub false. Tekst Ciąg Ciąg danych znakowych Unicode. Mogą to być ciągi, liczby lub daty reprezentowane w formacie tekstowym. Data Data/godzina Daty i godziny w zaakceptowanej reprezentacji daty i godziny. Prawidłowe daty to daty od 1 marca 1900 r.
Waluta Typ danych waluty zezwala na wartości od-922 337 203 685 477, 5808 do 922 337 203 685 477, 5807 o stałej precyzji wynoszącej cztery cyfry dziesiętne. Brak Pusty Wartość pusta to typ danych w języku DAX, który reprezentuje i zastępuje wartości null języka SQL. Wartości puste można tworzyć za pomocą funkcji BLANK, a do sprawdzania, czy dana wartość jest wartością pustą, służy funkcja logiczna ISBLANK. Modele danych tabelarycznych zawierają również typ danych Tabela jako dane wejściowe lub wyjściowe wielu funkcji języka DAX. Na przykład funkcja FILTER przyjmuje tabelę jako dane wejściowe i tworzy inną tabelę zawierającą tylko te wiersze, które spełniają warunki filtru, jako dane wyjściowe. Łącząc funkcje tabeli z funkcjami agregacji, można wykonywać złożone obliczenia w dynamicznie zdefiniowanych zestawach danych.
Typy danych są zazwyczaj ustawiane automatycznie, dlatego ważne jest, aby zrozumieć typy danych i sposób ich stosowania, w szczególności w formułach języka DAX. Błędy w formułach lub nieoczekiwane wyniki są na przykład często spowodowane użyciem określonego operatora, którego nie można użyć z typem danych określonym w argumencie. Na przykład formuła = 1 & 2
zwraca ciąg wynikowy 12. Natomiast formuła = "1" + "2"
zwraca w wyniku liczbę całkowitą 3.
Kontekst
Kontekst jest ważnym pojęciem, które należy zrozumieć w przypadku tworzenia formuł języka DAX. Kontekst umożliwia przeprowadzanie analizy dynamicznej, ponieważ wyniki zmiany w formule odzwierciedlają bieżący wybór wiersza lub komórki, a także wszystkie powiązane dane. Zrozumienie kontekstu i jego efektywne używanie mają kluczowe znaczenie w przypadku tworzenia wysoce wydajnych, dynamicznych analiz i rozwiązywania problemów w formułach.
Formuły w modelach tabelarycznych mogą być oceniane w innym kontekście, w zależności od innych elementów projektu:
- Filtry stosowane w tabeli przestawnej lub raporcie
- Filtry definiowane w formule
- Relacje określone przy użyciu funkcji specjalnych 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 utworzysz 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ść obejmuje również wszystkie wartości z drugiej tabeli, które są powiązane z bieżącym wierszem.
Załóżmy na przykład, że tworzysz kolumnę obliczeniową = [Freight] + [Tax]
, która dodaje razem wartości z dwóch kolumn, frachtu i podatku, 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 formuł języka DAX, 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 funkcji RELATED, aby pobrać wartość podatku z powiązanej tabeli na podstawie regionu, do którego wysłano zamówienie. Wartość podatku jest określana przez użycie wartości dla regionu w bieżącej tabeli, wyszukanie regionu w powiązanej tabeli, a następnie pobranie 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ów i dodaje ją do wartości kolumny Fracht. W formułach języka DAX nie trzeba znać lub określać konkretnej relacji, która łączy tabele.
Kontekst wielu wierszy
Język DAX zawiera funkcje iteracji obliczeń w tabeli. Te funkcje mogą mieć wiele bieżących wierszy, z których każdy ma własny kontekst wiersza. W zasadzie te funkcje pozwalają tworzyć formuły, które wykonują cykliczne operacje w pętli wewnętrznej i zewnętrznej.
Załóżmy na przykład, że model zawiera tabele Produkt i Sprzedaż. Użytkownicy mogą 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 dowolnej transakcji.
Za pomocą języka DAX można utworzyć pojedynczą formułę, która zwraca poprawną wartość, a wyniki są automatycznie aktualizowane za każdym razem, gdy użytkownik dodaje dane do tabel.
= MAXX(FILTER(Sales, [ProdKey] = EARLIER([ProdKey])), Sales[OrderQty])Aby zapoznać się z szczegółowym przykładem tej formuły, zobacz opis funkcji EARLIER.
Podsumowując, funkcja EARLIER 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. Język DAX automatycznie przekazuje wartości między dwiema pętlami, aby można było tworzyć złożone agregacje.
Kontekst zapytania
Kontekst zapytania odwołuje się do podzestawu danych, które są niejawnie pobierane 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 raportów, aby określić kontekst. Wymagane zapytania są następnie uruchamiane względem danych modelu w celu uzyskania poprawnego podzestawu danych, wykonania obliczeń zdefiniowanych przez formułę, a następnie wypełnienia wartości w raporcie.
Ponieważ kontekst zmienia się w zależności od tego, gdzie umieszczasz formułę, wyniki formuły również mogą ulegać zmianie. Załóżmy na przykład, że tworzysz formułę, która sumuje wartości w kolumnie Zysk tabeli Sprzedaż: = SUM('Sales'[Profit])
. Jeśli ta formuła jest używana w kolumnie obliczeniowej w tabeli Sprzedaż, wyniki dla formuły będą takie same dla całej tabeli, ponieważ kontekst zapytania dla formuły to zawsze cały zestaw danych tabeli Sprzedaż. Wyniki będą obejmować zyski dla wszystkich regionów, wszystkich produktów, wszystkich lat itd.
Jednak użytkownicy zazwyczaj nie chcą widzieć tego samego wyniku setki razy — zamiast tego chcą uzyskać zysk z danego roku, dla określonego kraju, określonego produktu lub niektórych kombinacji tych elementów, a następnie zobaczyć sumę końcową.
W raporcie kontekst jest zmieniany przez filtrowanie, dodawanie lub usuwanie pól oraz używanie fragmentatorów. Za każdym razem zmienia się kontekst zapytania, w którym miara jest oceniana. 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 to zestaw wartości dozwolonych w każdej kolumnie lub wartości pobranych z powiązanej tabeli. Filtry można stosować do kolumny w projektancie lub w warstwie prezentacji (raportach i tabelach przestawnych). Filtry można także definiować jawnie przez wyrażenia filtru w formule.
Kontekst filtru jest dodawany po określeniu ograniczeń filtru dla zestawu wartości dozwolonych w kolumnie lub tabeli za pomocą argumentów formuły. Kontekst filtru dotyczy 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, takich jak raporty Power BI, użytkownicy mogą tworzyć filtry na bieżąco przez dodawanie fragmentatorów lub filtrów raportu do nagłówków wierszy i kolumn. Można również określić wyrażenia filtru bezpośrednio w formule, aby określić powiązane wartości, w celu filtrowania tabel, które są używane jako dane wejściowe, lub dynamicznego pobierania kontekstu dla wartości, które są używane w obliczeniach. Możesz również całkowicie lub selektywnie wyczyścić filtry w określonych kolumnach. Jest to bardzo przydatne podczas tworzenia formuł obliczających sumy końcowe.
Aby uzyskać więcej informacji na temat sposobu tworzenia filtrów w ramach formuł, zobacz Funkcja FILTER (DAX).
Aby zapoznać się z przykładem, jak można wyczyścić filtry w celu utworzenia sum końcowych, zobacz Funkcje ALL (DAX).
Aby zapoznać się z przykładami selektywnego czyszczenia i stosowania filtrów w formułach, zobacz ALLEXCEPT.
Określanie kontekstu w formułach
Podczas tworzenia formuły języka DAX formuła jest najpierw testowana pod kątem prawidłowości składni, a następnie testowana w celu upewnienia się, że nazwy kolumn i tabel zawarte w formule mogą zostać znalezione w bieżącym kontekście. Jeśli nie można znaleźć żadnej kolumny lub tabeli określonej przez formułę, zwracany jest błąd.
Kontekst podczas walidacji (i operacji ponownego obliczania) jest określany zgodnie z opisem w poprzednich sekcjach, przy użyciu tabel dostępnych w modelu, relacji między tabelami i dowolnych zastosowanych filtrów.
Jeśli na przykład zaimportowano tylko niektóre dane do nowej tabeli i nie są one powiązane z żadną inną tabelą (i nie zastosowano żadnych filtrów), bieżący kontekst to cały zestaw kolumn w tabeli. Jeśli tabela jest połączona przez relacje z innymi tabelami, bieżący kontekst zawiera powiązane tabele. W przypadku dodania kolumny z tabeli do raportu, który ma fragmentatory i pewne filtry raportu, kontekst formuły jest podzestawem danych w każdej komórce raportu.
Kontekst to zaawansowana koncepcja, która może również utrudniać 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 różnych typów kontekstu do dynamicznego zwracania wyników.
Operatory
Język DAX używa czterech różnych typów operatorów obliczeń w formułach:
- Operatory porównania, które porównują wartości i zwracają wartość logiczną TRUE\FALSE.
- Operatory arytmetyczne, które wykonują obliczenia arytmetyczne zwracające wartości liczbowe.
- Operatory łączenia tekstu, które łączą co najmniej dwa ciągi tekstowe.
- Operatory logiczne, które łączą co najmniej dwa wyrażenia logiczne w celu zwrócenia pojedynczego wyniku.
Aby uzyskać szczegółowe informacje na temat operatorów używanych w formułach języka DAX, zobacz Operatory języka DAX.
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 pojedynczymi komórkami, odwołaniami do zakresów ani tablicami.
- Formuły mogą używać relacji do uzyskiwania wartości z powiązanych tabel. Pobierane wartości są zawsze powiązane z wartością bieżącego wiersza.
- Nie mogą istnieć dane nieregularne lub „niewyrównane”, takie 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ą stosowane zamiennie.
- Ponieważ typ danych jest ustawiany dla każdej kolumny, każda wartość w tej kolumnie musi być tego samego typu.
Odwoływanie się do tabel i kolumn w formułach
Aby odwołać się do dowolnej tabeli i kolumny, można użyć jej nazwy. Na przykład poniższa formuła ilustruje sposób odwoływania się do kolumn z dwóch tabel przy użyciu w pełni kwalifikowanej nazwy:
= SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])Podczas szacowania wartości formuły projektant modelu najpierw sprawdza składnię ogólną, a następnie sprawdza nazwy kolumn i tabel, które podano dla możliwych kolumn i tabel w bieżącym kontekście. Jeśli nazwa jest niejednoznaczna lub nie można odnaleźć kolumny lub tabeli, wystąpi błąd w formule (ciąg #ERROR zamiast wartości danych w komórkach, w których wystąpił błąd). Aby uzyskać więcej informacji na temat wymagań dotyczących nazewnictwa tabel, kolumn i innych obiektów, zobacz sekcję Wymagania dotyczące nazewnictwa w temacie Składnia języka DAX.
Relacje między tabelami
Tworząc relacje między tabelami, uzyskujesz możliwość używania w obliczeniach pokrewnych wartości w innych tabelach. Na przykład można 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. Można użyć funkcji LOOKUPVALUE w formule, aby zwrócić wartość w obszarze result_columnName dla wiersza, który spełnia kryteria określone w argumentach search_column i search_value.
Wiele funkcji języka DAX wymaga, aby istniała relacja między tabelami lub między wieloma tabelami, aby można było zlokalizować kolumny, do których istnieją odwołania, i zwrócić wyniki, które mają sens. Inne funkcje będą podejmować próbę zidentyfikowania relacji, jednak w celu uzyskania najlepszych wyników należy zawsze utworzyć relację, jeśli jest to możliwe.Tabelaryczne modele danych obsługują wiele relacji między tabelami. Aby uniknąć nieporozumień lub niepoprawnych wyników, tylko jedna relacja w danym momencie jest wyznaczana jako relacja aktywna, ale w razie potrzeby można zmienić relację aktywną w celu przechodzenia między różnymi połączeniami danych w obliczeniach. Funkcji USERELATIONSHIP można użyć, aby określić co najmniej jedną relację, która ma być stosowana w konkretnym obliczeniu.
Ważne jest, aby pamiętać o poniższych regułach projektowania formuł podczas korzystania z relacji:
Gdy tabele są połączone przez relację, należy upewnić się, że dwie kolumny używane jako klucze mają pasujące wartości. Integralność referencyjna nie jest wymuszana, w związku z czym można mieć niepasujące wartości w kolumnie klucza i nadal utworzyć relację. W takim przypadku należy pamiętać, że wartości puste lub niepasujące mogą wpłynąć na wyniki formuł.
Jeśli łączysz tabele w modelu przy użyciu relacji, powiększasz zakres lub kontekst, w którym są szacowane wartości formuł. Zmiany kontekstu wynikające z dodania nowych tabel, nowych relacji lub zmian aktywnej relacji mogą spowodować, że wyniki zmienią się w sposób nieoczekiwany. Aby dowiedzieć się więcej, zobacz Kontekst w tym artykule.
Przetwarzanie i odświeżanie
Przetwarzanie i ponowne obliczanie to dwie osobne, ale powiązane operacje. Należy dokładnie zrozumieć te koncepcje w przypadku projektowania modelu zawierającego złożone formuły, duże ilości danych lub dane uzyskane z zewnętrznych źródeł danych.
Przetwarzanie (odświeżanie) polega na aktualizowaniu danych 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 oraz odzwierciedlenia zmian w danych źródłowych. Ponowne obliczanie może wpłynąć 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 — Przetwórz wszystko, Przetwórz dane lub Przetwarzaj ponowne obliczanie. Wynik formuły musi być zawsze ponownie obliczany dla całej kolumny, za każdym razem, gdy zmienisz formułę.
Wartości obliczane przez miary są dynamicznie szacowane za każdym razem, gdy użytkownik doda miarę do tabeli przestawnej lub otworzy raport, ponieważ gdy użytkownik modyfikuje kontekst, wartości zwracane przez miarę zmieniają się. Wyniki miary zawsze odzwierciedlają najnowsze dane w wewnątrzpamięciowej pamięci podręcznej.
Przetwarzanie i ponowne obliczanie nie mają wpływu na formuły zabezpieczeń na poziomie wiersza, chyba że wynik ponownych obliczeń zwróci inną wartość, co sprawi, że członkowie roli będą mogli (lub nie) wykonywać zapytania dotyczące danego wiersza.
Aktualizacje
Język DAX jest ciągle ulepszany. Nowe i zaktualizowane funkcje są udostępniane z każdą kolejną aktualizacją, które zazwyczaj są wydawane raz w miesiącu. Najpierw są aktualizowane usługi, a następnie zainstalowane 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 wraz z następną aktualizacją zbiorczą. Nowe funkcje są najpierw ogłaszane i opisywane w dokumentacji funkcji języka DAX równolegle z aktualizacjami programu Power BI Desktop.
Nie wszystkie funkcje są obsługiwane we wcześniejszych wersjach usług SQL Server Analysis Services i programu 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 semantycznylub błąd obliczania.
Błędy składniowe są najłatwiejsze do usunięcia. Zazwyczaj dotyczą brakującego nawiasu lub przecinka.
Inny typ błędu występuje, gdy składnia jest poprawna, ale przywoływana wartość lub kolumna nie ma sensu w kontekście formuły. Takie błędy semantyczne i błędy obliczania mogą być spowodowane przez którykolwiek z następujących problemów:
- Formuła odwołuje się do nieistniejącej kolumny, tabeli lub funkcji.
- Formuła wydaje się być poprawna, ale gdy aparat danych pobiera dane, znajduje niezgodność typów i zgłasza błąd.
- Formuła przekazuje niepoprawną liczbę lub typ argumentów do funkcji.
- Formuła odwołuje się do innej kolumny, która zawiera błąd, i dlatego jej wartości są nieprawidłowe.
- Formuła odwołuje się do kolumny, która nie została przetworzona, co oznacza, że ma metadane, ale nie ma rzeczywistych danych do użycia w obliczeniach.
W pierwszych czterech przypadkach język DAX flaguje całą kolumnę, która zawiera nieprawidłową formułę. W ostatnim przypadku język DAX oznacza kolumnę kolorem szarym, aby wskazać, że jest ona w stanie nieprzetworzonym.
Power BI Desktop
Program Power BI Desktop to bezpłatna aplikacja do modelowania i raportowania danych. Projektant modelu zawiera edytor języka DAX do tworzenia formuł obliczeń języka DAX.
Dodatek Power Pivot w programie Excel
Projektant modeli dodatku Power Pivot w programie Excel zawiera edytor języka DAX do tworzenia formuł obliczeń języka DAX.
Visual Studio
Program Visual Studio z rozszerzeniem projektów usług Analysis Services (VSIX) służy do tworzenia projektów modeli usług Analysis Services. Projektant modeli tabelarycznych instalowany z rozszerzeniem projektów zawiera edytor języka DAX.
SQL Server Management Studio
SQL Server Management Studio (SSMS) to podstawowe narzędzie do pracy z usługami Analysis Services. Program SSMS zawiera edytor zapytań języka DAX służący do wykonywania zapytań dotyczących modeli tabelarycznych i wielowymiarowych.
DAX Studio
DAX Studio to narzędzie klienckie typu open source, które służy do tworzenia i uruchamiania zapytań języka DAX względem modeli usług Analysis Services, programu Power BI Desktop i dodatku Power Pivot w programie Excel.
Tabular Editor
Tabular Editor to narzędzie typu open source, które zapewnia intuicyjny, hierarchiczny widok każdego obiektu w metadanych modelu tabelarycznego. Tabular Editor zawiera edytor języka DAX z wyróżnianiem składni, co zapewnia łatwy sposób edycji miar, kolumn obliczeniowych i wyrażeń tabeli obliczeniowej.
Zasoby szkoleniowe
Podczas nauki języka DAX najlepiej jest korzystać z aplikacji, która będzie używana do tworzenia modeli danych. Usługi Analysis Services, program Power BI Desktop i dodatek Power Pivot w programie Excel oferują artykuły i samouczki, które obejmują lekcje dotyczące tworzenia miar, kolumn obliczeniowych i filtrów wierszy przy użyciu języka DAX. Oto kilka dodatkowych zasobów:
Filmy wideo
Użyj języka DAX w ścieżce szkoleniowej Power BI Desktop.
Książka Definitive Guide to DAX (Ostateczny przewodnik języka DAX), autorzy: Alberto Ferrari i Marco Russo (Microsoft Press). Teraz w drugiej edycji ten obszerny przewodnik zawiera podstawy innowacyjnych technik wysokiej wydajności dla początkujących modelatorów danych i specjalistów ds. analizy biznesowej.
Społeczność
Język DAX ma żywą społeczność zawsze chętną do dzielenia się swoją wiedzą. Microsoft Społeczność usługi Power BI ma specjalne forum dyskusyjne tylko dla języka DAX, poleceń języka DAX i porad.