Używamy cookies, aby ułatwić korzystanie z Portalu. Możesz określić warunki przechowywania, dostępu do plików cookies w Twojej przeglądarce. Dowiedz się więcej.
strona główna Strona główna | Nowości | Promocje | Zapowiedzi Twoje konto | Zarejestruj | Schowek | Kontakt | Pomoc
mapa działów
Szukaj: szukanie zaawansowane
Koszyk
Książki \ Bazy danych \ SQL Server

Kompletny przewodnik po DAX. Analiza biznesowa przy użyciu Microsoft Excel, SQL Server Analysis Services i Power BI Język: 1

978-83-7541-166-9

Cena Brutto: 98.70

Cena netto: 94.00

Ilość:
Wersja: Drukowana
Autor Alberto Ferrari, Marco Russo
Liczba_stron 630
Wydawnictwo Microsoft Press
Data_Wydania 2016-01-31


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.
Tak się zdarzyło, że miałem możliwość porozmawiać sobie z Alberto Ferrari. Było to bodaj we Wrocławiu na SQLDAY, gdzie był jednym z prelegentów a my jak zwykle wystawialiśmy książki. Podpisał parę egzemplarzy swojej książki no i na pamiątkę naszego spotkania odebrał jeden egzemplarz w polskiej edycji.


Wstęp . . . . . . . xi
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 tabelaryczny14
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 EARLIER79
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 filtrowania117
Korzystanie z CALCULATETABLE. . . . . . . . . . 120
Istota przejścia kontekstu. . . . . . . . 122
Przejście kontekstu dla miar125
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ń roboczy156
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 czasu195
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 standardowego240
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 GROUPBY.. . . . . . . . 283
Funkcja ADDMISSINGITEMS284
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ędziowych300
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 filtru342
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ądkowania441
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_TABLES447
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 przechowania488
Optymalizowanie przechowywania kolumn.. . . . . 491
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 magazynowego510
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

powrót
 
Produkty Podobne
Exam Ref 70-762 Developing SQL Databases
Microsoft SQL Server T-SQL in 10 Minutes, Sams Teach Yourself, 2nd Edition
Pierwsze kroki z SQL. Praktyczne podejście dla początkujących
Podstawy języka T-SQL: Microsoft SQL Server 2016 i Azure SQL Database
Praktyki mistrza SQL. Programowanie zaawansowane
SQL w 24 godziny. Wydanie VI
T-SQL Fundamentals, 3rd Edition
The Language of SQL, 2nd Edition
T-SQL dla każdego
T-SQL dla zaawansowanych. Przewodnik programisty. Wydanie IV
Więcej produktów