Kompletny przewodnik po DAX to najbardziej wyczerpujący i autorytatywny podręcznik języka Microsoft DAX w zastosowaniach BI (Business Skills) 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.
Spis treści:
1 Czym jest DAX? 1
Istota modelu danych 2
Zrozumienie kierunku relacji 3
DAX dla użytkowników programu Excel 6
Komórki kontra tabele 6
Excel i DAX: dwa języki funkcyjne 8
Korzystanie z iteratorów 9
DAX wymaga nieco teorii 9
DAX dla programistów SQL 11
Obsługiwanie relacji 11
DAX jest językiem funkcyjnym 12
DAX jako język programowania i zapytań 13
Podzapytania i warunki w DAX i SQL 13
DAX dla projektantów MDX 14
Model wielowymiarowy kontra tabelaryczny 14
DAX jako język programowania i zapytań 15
Hierarchie 15
Obliczenia na poziomie liści 17
2 Wprowadzenie do DAX 19
Istota obliczeń DAX 19
Typy danych DAX 20
Operatory języka DAX 24
Kolumny obliczane i miary 25
Kolumny obliczane 25
Miary 26
Zmienne 29
Obsługa błędów w wyrażeniach DAX 30
Błędy konwersji 30
Operacje arytmetyczne 31
Przechwytywanie błędów 34
Formatowanie kodu DAX 36
Typowe funkcje DAX 40
Funkcje agregujące 40
Funkcje logiczne 42
Funkcje informacyjne 44
Funkcje matematyczne 45
Funkcje trygonometryczne 46
Funkcje tekstowe 46
Funkcje konwersji 47
Funkcje daty i czasu 48
Funkcje relacyjne 48
3 Korzystanie z podstawowych funkcji tablicowych 51
Wprowadzenie to funkcji tablicowych 51
Składnia polecenia EVALUATE 54
Korzystanie z wyrażeń tablicowych 57
Istota funkcji FILTER 58
Funkcje ALL, ALLEXCEPT oraz ALLNOBLANKROW 61
Funkcje VALUES oraz DISTINCT 65
Używanie VALUES jako wartości skalarnej 67
4 Istota kontekstów wykonania 69
Wprowadzenie do kontekstów wykonania 70
Kontekst wiersza 74
Testowanie zrozumienia kontekstów wykonania 75
Użycie funkcji SUM w kolumnie obliczanej 75
Użycie kolumn w mierze 77
Tworzenie kontekstu wiersza poprzez iteratory 78
Korzystanie z funkcji EARLIER 79
Iteratory FILTER, ALL i interakcje kontekstów 83
Praca z wieloma tabelami 86
Kontekst wiersza a relacje 88
Kontekst filtru a relacje 91
Funkcja VALUES 94
Funkcje ISFILTERED i ISCROSSFILTERED 95
Podsumowanie kontekstów wykonania 98
Tworzenie tabeli parametrów 100
5 Funkcje CALCULATE i CALCULATETABLE 103
Funkcja CALCULATE 104
Istota kontekstu filtru 106
Przedstawiamy funkcję CALCULATE 108
Przykłady użycia funkcji CALCULATE 111
Filtrowanie pojedynczej kolumny 112
Złożone warunki filtrowania 117
Korzystanie z CALCULATETABLE 120
Istota przejścia kontekstu 122
Przejście kontekstu dla miar 125
Ile wierszy jest widocznych po przejściu kontekstu? 128
Kolejność wykonywania działań przy przejściu kontekstu 129
Zmienne i konteksty wykonania 130
Zależności cykliczne 131
Reguły dotyczące CALCULATE 135
Funkcja ALLSELECTED 136
Funkcja USERELATIONSHIP 138
6 Przykłady kodu DAX 141
Obliczanie proporcji i udziałów procentowych 141
Obliczanie sum bieżących (skumulowanych) 145
Korzystanie z klasyfikacji ABC (Pareto) 148
Obliczanie sprzedaży dziennej i na dzień roboczy 156
Obliczanie różnic w dniach roboczych 163
Obliczanie statycznych średnich ruchomych 165
7 Funkcje analizy czasowej 169
Wprowadzenie do analizy czasowej 169
Budowanie tabeli kalendarzowej 170
Korzystanie z funkcji CALENDAR i CALENDARAUTO 172
Praca z wieloma datami 175
Obsługa wielu relacji do tabeli Date 176
Obsługiwanie wielu tabel kalendarzowych. 177
Wprowadzenie do analizy czasowej 179
Ustawienie Mark as Date Table 181
Agregowanie i porównywanie danych względem czasu 184
Od początku okresu (roku, kwartału, miesiąca) 184
Obliczanie wartości dla wcześniejszych okresów 187
Obliczanie różnic względem wcześniejszych okresów 190
Obliczanie rocznej sumy ruchomej 191
Bilans zamknięcia względem czasu 195
Miary częściowo agregowalne 195
Funkcje OPENINGBALANCE i CLOSINGBALANCE 201
Zaawansowana analiza czasowa 205
Przedziały „do dzisiaj” 206
Funkcja DATEADD 208
Funkcje FIRSTDATE i LASTDATE 214
Funkcje FIRSTNONBLANK i LASTNONBLANK 217
Drążenie danych w analizie czasowej 218
Niestandardowe kalendarze 218
Praca z tygodniami 219
Niestandardowe obliczenia od początku roku, kwartału i miesiąca 222
Obliczenia dla nieciągłych zakresów dat. 224
Niestandardowe porównania pomiędzy okresami 228
8 Funkcje statystyczne 231
Funkcja RANKX 231
Typowe problemy związane z RANKX 234
Funkcja RANK.EQ 238
Obliczanie średnich i ruchomych średnich 238
Obliczanie wariancji i odchylenia standardowego 240
Obliczanie mediany i percentyli 242
Obliczanie odsetek 244
Alternatywna implementacja funkcji PRODUCT i GEOMEAN 246
Korzystanie z wewnętrznej stopy zwrotu (XIRR) 246
Korzystanie z bieżącej wartości netto (XNPV) 247
Korzystanie z funkcji statystycznych programu Excel 249
Próbkowanie przy użyciu funkcji SAMPLE 250
9 Zaawansowane funkcje tablicowe 253
Funkcja EVALUATE 253
Korzystanie ze zmiennych w funkcji EVALUATE 256
Stosowanie funkcji filtrujących 257
Funkcja CALCULATETABLE 257
Funkcja TOPN 259
Istota funkcji rzutujących 261
Funkcja ADDCOLUMNS 261
Funkcja SELECTCOLUMNS 265
Funkcja ROW 268
Powiązanie a relacje 269
Funkcje grupujące/złączające 271
Funkcja SUMMARIZE 272
Funkcja SUMMARIZECOLUMNS 277
Funkcja GROUPBY283
Funkcja ADDMISSINGITEMS 284
Funkcja NATURALINNERJOIN 287
Funkcja NATURALLEFTOUTERJOIN 288
Funkcje zbiorów 289
Funkcja CROSSJOIN 289
Funkcja UNION 291
Funkcja INTERSECT 295
Funkcja EXCEPT 296
Funkcje GENERATE i GENERATEALL 298
Stosowanie funkcji narzędziowych 300
Funkcja CONTAINS 300
Funkcja LOOKUPVALUE 302
Funkcja SUBSTITUTEWITHINDEX 305
Funkcja ISONORAFTER 306
10 Zaawansowane konteksty wykonania 307
Działanie funkcji ALLSELECTED 307
Istota funkcji KEEPFILTERS 316
Istota funkcjonalności AutoExists 326
Pojęcie tabel rozszerzonych 330
Różnice pomiędzy rozszerzaniem tabeli a filtrowaniem 338
Redefiniowanie kontekstu filtru 339
Przecięcia kontekstów filtru 342
Zastępowanie kontekstu filtru 344
Arbitralnie kształtowane filtry 345
Działanie funkcji ALL 350
Istota powiązania z elementem nadrzędnym 352
Korzystanie z zaawansowanych wyrażeń filtrowania 355
Dalsze poznawanie kontekstów wykonania 361
11 Hierarchie 363
Obliczanie procentowych udziałów w hierarchiach 363
Obsługa hierarchii drzewiastych 371
Operatory jednoargumentowe 384
Implementowanie operatorów jednoargumentowych przy użyciu DAX 386
12 Zaawansowana obsługa relacji 395
Stosowanie obliczanych fizycznych relacji 395
Tworzenie relacji wielokolumnowych 395
Obliczanie statycznego grupowania 397
Korzystanie z relacji wirtualnych 399
Dynamiczne grupowanie 399
Relacje wiele-do-wielu 402
Korzystanie z relacji o różnym stopniu szczegółowości 408
Różnice pomiędzy relacjami fizycznymi a wirtualnymi 411
Wyszukiwanie braku relacji 412
Obliczanie liczby niesprzedanych produktów 412
Znajdowanie nowych i powracających klientów 414
Przykłady złożonych relacji 416
Wykonywanie konwersji walut 416
Wyszukiwanie zbiorów częstych 422
13 Silnik bazodanowy VertiPaq 429
Istota przetwarzania baz danych 430
Wprowadzenie do kolumnowych baz danych 431
Istota kompresji VertiPaq 434
Kodowanie wartości 435
Istota kodowania słownikowego 436
Algorytm Run Length Encoding (RLE) 437
Istota ponownego kodowania 440
Znajdowanie najlepszego uporządkowania 441
Hierarchie i relacje 442
Segmentacja i partycjonowanie 443
Korzystanie z dynamicznych widoków zarządzania 445
Korzystanie z DISCOVER_OBJECT_MEMORY_USAGE 446
Korzystanie z DISCOVER_STORAGE_TABLES 447
Korzystanie z DISCOVER_STORAGE_TABLE_COLUMNS. 447
Korzystanie z DISCOVER_STORAGE_TABLE_COLUMN_SEGMENTS 448
Materializacja 449
Wybieranie odpowiedniego sprzętu dla bazy danych VertiPaq 454
Czy możemy wybrać sprzęt? 454
Ustalanie priorytetów sprzętowych 455
Model procesora 455
Szybkość pamięci 456
Liczba rdzeni 457
Wielkość pamięci 457
Dyskowe operacje I/O i stronicowanie 458
Podsumowanie 458
14 Optymalizowanie modelu danych 459
Gromadzenie informacji o modelu danych 460
Denormalizacja 471
Kardynalność kolumn 478
Obsługa daty i czasu 480
Kolumny obliczane 484
Optymalizowanie złożonych filtrów przy użyciu logicznych
kolumn obliczanych 487
Wybieranie właściwych kolumn do przechowania 488
Optymalizowanie przechowywania kolumn491
Optymalizacja przez podział kolumny 491
Optymalizowanie kolumn o wysokiej kardynalności 492
Optymalizowanie atrybutów drążenia danych 493
15 Analizowanie planów wykonania 495
Wprowadzenie do silnika zapytań DAX 495
Istota silnika zapytań 496
Istota silnika magazynowego (VertiPaq) 497
Wprowadzenie do planów zapytań DAX 498
Logiczny plan zapytania 499
Fizyczny plan zapytania 500
Zapytanie do silnika magazynowego 501
Przechwytywanie informacji profilowania 502
Korzystanie z SQL Server Profiler 502
Korzystanie z DAX Studio 507
Odczytywanie zapytań do silnika magazynowego 510
Wprowadzenie do składni xmSQL 510
Czas skanowania 516
Wewnętrzne mechanizmy funkcji DISTINCTCOUNT 518
Istota równoległości i buforów danych 519
Pamięć podręczna VertiPaq 521
Istota elementu CallbackDataID 523
Czytanie planów zapytań 529
16 Optymalizowanie kodu DAX 537
Definiowanie strategii optymalizacji 538
Identyfikacja pojedynczego wyrażenia DAX, które wymaga optymalizacji 538
Utworzenie zapytania reprodukującego problem 542
Analiza czasów wykonania i informacji zawartych w planie zapytania 544
Identyfikacja wąskich gardeł w silniku magazynowym lub silniku formuł 547
Optymalizowanie wąskich gardeł silnika magazynowego 548
Wybór pomiędzy ADDCOLUMNS a SUMMARIZE 549
Redukowanie wpływu CallbackDataID 554
Optymalizowanie warunków filtrowania 557
Optymalizowanie warunków IF 558
Optymalizacja kardynalności 560
Optymalizowanie zagnieżdżonych iteratorów 563
Optymalizowanie wąskich gardeł w silniku formuł 569
Tworzenie zapytania repro w języku MDX 574
Redukowanie materializacji 575
Optymalizowanie złożonych wąskich gardeł 580
Indeks 587
O autorach 610
adobe algorytmy apache asp autocad asembler bsd c++ c# delphi dtp excel flash html java javascript linux matlab mysql office php samba voip uml unix visual studio windows word
Księgarnia Informatyczna zaprasza.