Kompletny przewodnik po DAX
Analiza biznesowa przy użyciu Microsoft Excel, SQL Server Analysis Services i Power
BI
Kompletny przewodnik po DAX to najbardziej wyczerpujący i autorytatywny podręcznik
języka Microsoft DAX w zastosowaniach BI i analityce.
Podczas gdy inne książki omawiają tylko podstawy, ten przewodnik zapewnia wiedzę
na poziomie eksperckim potrzebnych średnio i wysoko zaawansowanym użytkownikom Excela i
profesjonalistom BI, od podstaw po innowacyjne techniki wysokiej wydajności.
Dwaj czołowi konsultanci i wykładowcy Microsoft BI przedstawiają język DAX poprzez
realistyczne i przydatne przykłady, prezentujące typowe obliczenia pozwalające
użytkownikom od razu uzyskiwać wyniki.
Alberto Ferrari i Marco Russo rozjaśniają złożone zagadnienia pokazując
czytelnikom, co się dzieje pod maską silnika DAX, gdy wykonywane są wyrażenia.
Ferrari i Russo starannie przechodzą przez typowe scenariusze, w których działanie
DAX może być trudne do zrozumienia; pokazują, jak optymalizować modele danych, aby
wyrażenia DAX były szybko wykonywane; demonstrują, jak pisać szybki i odporny kod DAX;
wyjaśniają, jak usuwać wąskie gardła z istniejącego kodu.
Pokazują działanie DAX zarówno w środowisku SQL Server, jak i Microsoft Excel,
ułatwiając pracę bez względu na to, którą platformę Microsoft BI preferuje
czytelnik.
Wstęp
1 Czym jest DAX?
Istota modelu danych
Zrozumienie kierunku relacji
DAX dla użytkowników programu Excel
Komórki kontra tabele
Excel i DAX: dwa języki funkcyjne
Korzystanie z iteratorów
DAX wymaga nieco teorii
DAX dla programistów SQL
Obsługiwanie relacji
DAX jest językiem funkcyjnym
DAX jako język programowania i zapytań
Podzapytania i warunki w DAX i SQL
DAX dla projektantów MDX
Model wielowymiarowy kontra tabelaryczny
DAX jako język programowania i zapytań
Hierarchie
Obliczenia na poziomie liści
2 Wprowadzenie do DAX
Istota obliczeń DAX
Typy danych DAX
Operatory języka DAX
Kolumny obliczane i miary
Kolumny obliczane
Miary
Zmienne
Obsługa błędów w wyrażeniach DAX
Błędy konwersji
Operacje arytmetyczne
Przechwytywanie błędów
Formatowanie kodu DAX
Typowe funkcje DAX
Funkcje agregujące
Funkcje logiczne
Funkcje informacyjne
Funkcje matematyczne
Funkcje trygonometryczne
Funkcje tekstowe
Funkcje konwersji
Funkcje daty i czasu
Funkcje relacyjne
3 Korzystanie z podstawowych funkcji tablicowych
Wprowadzenie to funkcji tablicowych
Składnia polecenia
EVALUATE
Korzystanie z wyrażeń tablicowych
Istota funkcji FILTER
Funkcje ALL, ALLEXCEPT oraz ALLNOBLANKROW
Funkcje VALUES oraz DISTINCT
Używanie VALUES jako wartości skalarnej
4 Istota kontekstów wykonania
Wprowadzenie do kontekstów wykonania
Kontekst wiersza
Testowanie zrozumienia kontekstów wykonania
Użycie funkcji SUMw kolumnie obliczanej
Użycie kolumn w mierze
Tworzenie kontekstu wiersza poprzez iteratory
Korzystanie z funkcji EARLIER
Iteratory FILTER, ALL i interakcje kontekstów
Praca z wieloma tabelami
Kontekst wiersza a relacje
Kontekst filtru a relacje
Funkcja VALUES
Funkcje ISFILTERED i ISCROSSFILTERED
Podsumowanie kontekstów wykonania
Tworzenie tabeli parametrów
5 Funkcje CALCULATE i CALCULATETABLE
Funkcja CALCULATE
Istota kontekstu filtru
Przedstawiamy funkcję CALCULATE
Przykłady użycia funkcji CALCULATE
Filtrowanie pojedynczej kolumny
Złożone warunki filtrowania
Korzystanie z CALCULATETABLE
Istota przejścia kontekstu
Przejście kontekstu dla miar
Ile wierszy jest widocznych po przejściu kontekstu?
Kolejność wykonywania działań przy przejściu kontekstu
Zmienne i konteksty wykonania
Zależności cykliczne
Reguły dotyczące CALCULATE
Funkcja ALLSELECTED
Funkcja USERELATIONSHIP
6 Przykłady kodu DAX
Obliczanie proporcji i udziałów procentowych
Obliczanie sum bieżących (skumulowanych)
Korzystanie z klasyfikacji ABC (Pareto)
Obliczanie sprzedaży dziennej i na dzień roboczy
Obliczanie różnic w dniach roboczych
Obliczanie statycznych średnich ruchomych
7 Funkcje analizy czasowej
Wprowadzenie do analizy czasowej
Budowanie tabeli kalendarzowej
Korzystanie z funkcji CALENDAR i CALENDARAUTO
Praca z wieloma datami
Obsługa wielu relacji do tabeli Date
Obsługiwanie wielu tabel kalendarzowych
Wprowadzenie do analizy czasowej
Ustawienie Mark as Date Table
Agregowanie i porównywanie danych względem czasu
Od początku okresu (roku, kwartału, miesiąca)
Obliczanie wartości dla wcześniejszych okresów
Obliczanie różnic względem wcześniejszych okresów
Obliczanie rocznej sumy ruchomej
Bilans zamknięcia względem czasu
Miary częściowo agregowalne
Funkcje OPENINGBALANCE i CLOSINGBALANCE
Zaawansowana analiza czasowa
Przedziały „do dzisiaj”
Funkcja DATEADD
Funkcje FIRSTDATE i LASTDATE
Funkcje FIRSTNONBLANK i LASTNONBLANK
Drążenie danych w analizie czasowej
Niestandardowe kalendarze
Praca z tygodniami
Niestandardowe obliczenia od początku roku, kwartału i miesiąca
Obliczenia dla nieciągłych zakresów dat
Niestandardowe porównania pomiędzy okresami
8 Funkcje statystyczne
Funkcja RANKX
Typowe problemy związane z RANKX
Funkcja RANK.EQ
Obliczanie średnich i ruchomych średnich
Obliczanie wariancji i odchylenia standardowego
Obliczanie mediany i percentyli
Obliczanie odsetek
Alternatywna implementacja funkcji PRODUCT i GEOMEAN
Korzystanie z wewnętrznej stopy zwrotu (XIRR)
Korzystanie z bieżącej wartości netto (XNPV)
Korzystanie z funkcji statystycznych programu Excel
Próbkowanie przy użyciu funkcji SAMPLE
9 Zaawansowane funkcje tablicowe
Funkcja EVALUATE
Korzystanie ze zmiennych w funkcji EVALUATE
Stosowanie funkcji filtrujących
Funkcja CALCULATETABLE
Funkcja TOPN
Istota funkcji rzutujących
Funkcja ADDCOLUMNS
Funkcja SELECTCOLUMNS
Funkcja ROW
Powiązanie a relacje
Funkcje grupujące/złączające
Funkcja SUMMARIZE
Funkcja SUMMARIZECOLUMNS
Funkcja GROUPBY
Funkcja ADDMISSINGITEMS
Funkcja NATURALINNERJOIN
Funkcja NATURALLEFTOUTERJOIN
Funkcje zbiorów
Funkcja CROSSJOIN
Funkcja UNION
Funkcja INTERSECT
Funkcja EXCEPT
Funkcje GENERATE i GENERATEALL
Stosowanie funkcji narzędziowych
Funkcja CONTAINS
Funkcja LOOKUPVALUE
Funkcja SUBSTITUTEWITHINDEX
Funkcja ISONORAFTER
10 Zaawansowane konteksty wykonania
Działanie funkcji ALLSELECTED
Istota funkcji KEEPFILTERS
Istota funkcjonalności AutoExists
Pojęcie tabel rozszerzonych
Różnice pomiędzy rozszerzaniem tabeli a filtrowaniem
Redefiniowanie kontekstu filtru
Przecięcia kontekstów filtru
Zastępowanie kontekstu filtru
Arbitralnie kształtowane filtry
Działanie funkcji ALL
Istota powiązania z elementem nadrzędnym
Korzystanie z zaawansowanych wyrażeń filtrowania
Dalsze poznawanie kontekstów wykonania
11 Hierarchie
Obliczanie procentowych udziałów w hierarchiach
Obsługa hierarchii drzewiastych
Operatory jednoargumentowe
Implementowanie operatorów jednoargumentowych przy użyciu DAX
12 Zaawansowana obsługa relacji
Stosowanie obliczanych fizycznych relacji
Tworzenie relacji wielokolumnowych
Obliczanie statycznego grupowania
Korzystanie z relacji wirtualnych
Dynamiczne grupowanie
Relacje wiele-do-wielu
Korzystanie z relacji o różnym stopniu szczegółowości
Różnice pomiędzy relacjami fizycznymi a wirtualnymi
Wyszukiwanie braku relacji
Obliczanie liczby niesprzedanych produktów
Znajdowanie nowych i powracających klientów
Przykłady złożonych relacji
Wykonywanie konwersji walut
Wyszukiwanie zbiorów częstych
13 Silnik bazodanowy VertiPaq
Istota przetwarzania baz danych
Wprowadzenie do kolumnowych baz danych
Istota kompresji VertiPaq
Kodowanie wartości
Istota kodowania słownikowego
Algorytm Run Length Encoding (RLE)
Istota ponownego kodowania
Znajdowanie najlepszego uporządkowania
Hierarchie i relacje
Segmentacja i partycjonowanie
Korzystanie z dynamicznych widoków zarządzania
Korzystanie z DISCOVER_OBJECT_MEMORY_USAGE
Korzystanie z DISCOVER_STORAGE_TABLES
Korzystanie z DISCOVER_STORAGE_TABLE_COLUMNS
Korzystanie z DISCOVER_STORAGE_TABLE_COLUMN_SEGMENTS
Materializacja
Wybieranie odpowiedniego sprzętu dla bazy danych VertiPaq
Czy możemy wybrać sprzęt?
Ustalanie priorytetów sprzętowych
Model procesora
Szybkość pamięci
Liczba rdzeni
Wielkość pamięci
Dyskowe operacje I/O i stronicowanie
Podsumowanie
14 Optymalizowanie modelu danych
Gromadzenie informacji o modelu danych
Denormalizacja
Kardynalność kolumn
Obsługa daty i czasu
Kolumny obliczane
Optymalizowanie złożonych filtrów przy użyciu logicznych kolumn obliczanych
Wybieranie właściwych kolumn do przechowania
Optymalizowanie przechowywania kolumn
Optymalizacja przez podział kolumny
Optymalizowanie kolumn o wysokiej kardynalności
Optymalizowanie atrybutów drążenia danych
15 Analizowanie planów wykonania
Wprowadzenie do silnika zapytań DAX
Istota silnika zapytań
Istota silnika magazynowego (VertiPaq)
Wprowadzenie do planów zapytań DAX
Logiczny plan zapytania
Fizyczny plan zapytania
Zapytanie do silnika magazynowego
Przechwytywanie informacji profilowania
Korzystanie z SQL Server Profiler
Korzystanie z DAX Studio
Odczytywanie zapytań do silnika magazynowego
Wprowadzenie do składni xmSQL
Czas skanowania
Wewnętrzne mechanizmy funkcji DISTINCTCOUNT
Istota równoległości i buforów danych
Pamięć podręczna VertiPaq
Istota elementu CallbackDataID
Czytanie planów zapytań
16 Optymalizowanie kodu DAX
Definiowanie strategii optymalizacji
Identyfikacja pojedynczego wyrażenia DAX, które wymaga optymalizacji
Utworzenie zapytania reprodukującego problem
Analiza czasów wykonania i informacji zawartych w planie zapytania .
Identyfikacja wąskich gardeł w silniku magazynowym lub silniku formuł
Optymalizowanie wąskich gardeł silnika magazynowego
Wybór pomiędzy ADDCOLUMNS a SUMMARIZE
Redukowanie wpływu CallbackDataID
Optymalizowanie warunków filtrowania
Optymalizowanie warunków IF
Optymalizacja kardynalności
Optymalizowanie zagnieżdżonych iteratorów
Optymalizowanie wąskich gardeł w silniku formuł
Tworzenie zapytania repro w języku MDX
Redukowanie materializacji
Optymalizowanie złożonych wąskich gardeł
Indeks
O autorach
650 stron, Format: 16.5x23.0cm, oprawa miękka