Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00090 005094 13075810 na godz. na dobę w sumie
Microsoft SQL Server 2016 Analysis Services: Modelowanie tabelaryczne - ebook/pdf
Microsoft SQL Server 2016 Analysis Services: Modelowanie tabelaryczne - ebook/pdf
Autor: , Liczba stron:
Wydawca: Promise Język publikacji: polski
ISBN: 978-83-7541-342-7 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> serwery internetowe
Porównaj ceny (książka, ebook, audiobook).

Wraz z wprowadzeniem wersji SQL Server Analysis Services 2016 firma Microsoft dramatycznie udoskonaliła podejście tabelaryczne do modelowania danych w analizie biznesowej, czyniąc model tabelaryczny najłatwiejszym i najlepszym rozwiązaniem dla większości nowych projektów. W tej książce dwóch ekspertów o światowej sławie w dziedzinie technologii modelowania danych i analizy firmy Microsoft przedstawiają wszystko, co trzeba wiedzieć, aby móc tworzyć kompletne rozwiązania BI przy użyciu tych potężnych narzędzi.
Marco Russo i Alberto Ferrari prowadzą czytelnika krok po kroku poprzez tworzenie modeli danych, a następnie objaśniają zaawansowane funkcje, takie jak optymalizacja, wdrażanie czy skalowalność.
Modelowanie tabelaryczne w Microsoft SQL Server Analysis Services będzie nieodzowne dla każdego, kto planuje przejście do rozwiązań tabelarycznych Analysis Services, niezależnie od jego wcześniejszych doświadczeń z modelami w stylu tabelarycznym lub ze starszymi wersjami Analysis Services. Będzie również podstawową lekturą uzupełniającą dla każdego czytelnika wcześniejszego bestsellera tych autorów: Microsoft SQL Server 2012 Analysis Services: Model tabelaryczny BISM.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Marco Russo Alberto Ferrari Microsoft SQL Server 2016 Analysis Services Modelowanie tabelaryczne Przekład: Jakub Niedźwiedź, Witold Sikorski, Marek Włodarz APN Promise, Warszawa 2017 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Microsoft SQL Server 2016 Analysis Services: Modelowanie tabelaryczne Authorized Polish translation of the English language edition entitled Tabular Modeling in Microsoft SQL Server Analysis Services, Second Edition, by Marco Russo and Alberto Ferrari ISBN: 978-1-5093-0277-2 Copyright © 2017 by Marco Russo and Alberto Ferrari All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. Polish language edition published by APN PROMISE SA Copyright © 2017 Autoryzowany przekład z wydania w języku angielskim, zatytułowanego: Tabular Modeling in Microsoft SQL Server Analysis Services, Second Edition, by Marco Russo and Alberto Ferrari ISBN: 978-1-5093-0277-2 Wszystkie prawa zastrzeżone. Żadna część niniejszej książki nie może być powielana ani rozpowszechniana w jakiejkolwiek formie i w jakikolwiek sposób (elektroniczny, mechaniczny), włącznie z fotokopiowaniem, nagrywaniem na taśmy lub przy użyciu innych systemów bez pisemnej zgody wydawcy. APN PROMISE SA, ul. Domaniewska 44a, 02-672 Warszawa tel. +48 22 35 51 600, fax +48 22 35 51 699 e-mail: mspress@promise.pl Książka ta przedstawia poglądy i opinie autora. Przykłady firm, produktów, osób i wydarzeń opisane w niniejszej książce są fikcyjne i nie odnoszą się do żadnych konkretnych firm, produktów, osób i wydarzeń, chyba że zostanie jednoznacznie stwierdzone, że jest inaczej. Ewentualne podobieństwo do jakiejkolwiek rzeczywistej firmy, organizacji, produktu, nazwy domeny, adresu poczty elektronicznej, logo, osoby, miejsca lub zdarzenia jest przypadkowe i niezamierzone. Microsoft oraz znaki towarowe wymienione na stronie http://www.microsoft.com/about/ legal/en/us/IntellectualProperty/Trademarks/EN-US.aspx są zastrzeżonymi znakami towarowymi grupy Microsoft. Wszystkie inne znaki towarowe są własnością ich odnośnych właścicieli. APN PROMISE SA dołożyła wszelkich starań, aby zapewnić najwyższą jakość tej publikacji. Jednakże nikomu nie udziela się rękojmi ani gwarancji. APN PROMISE SA nie jest w żadnym wypadku odpowiedzialna za jakiekolwiek szkody będące następstwem korzystania z informacji zawartych w niniejszej publikacji, nawet jeśli APN PROMISE została powiadomiona o możliwości wystąpienia szkód. ISBN: 978-83-7541-301-4 Przekład: Jakub Niedźwiedź, Witold Sikorski, Marek Włodarz Redakcja: Marek Włodarz Korekta: Ewa Swędrowska Skład i łamanie: MAWart Marek Włodarz ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Spis treści Przedmowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv 1 Wprowadzenie do modelu tabelarycznego . . . . . . . . . . . . . . . . . . . . 1 Modele semantyczne w Analysis Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Czym jest usługa Analysis Services i dlaczego należy jej używać? . . . . . . 1 Krótka historia Analysis Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Model tabelaryczny i wielowymiarowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Model tabelaryczny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Model wielowymiarowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Po co są dwa modele? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Przyszłość Analysis Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Azure Analysis Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Wybór odpowiedniego modelu dla naszego projektu . . . . . . . . . . . . . . . . . 11 Licencjonowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Aktualizacja poprzednich wersji Analysis Services . . . . . . . . . . . . . . . . . . 12 Prostota korzystania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Kompatybilność z Power Pivot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Kompatybilność z Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Cechy wydajności zapytań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Cechy wydajności przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Uwarunkowania sprzętowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 BI czasu rzeczywistego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Narzędzia klienckie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Porównanie funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Porównanie DAX i MDX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Język DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Język MDX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Wybieranie języka zapytań dla modelu tabelarycznego . . . . . . . . . . . . . 20 Wprowadzenie do silników kalkulacyjnych modelu tabelarycznego . . . . . 20 Wprowadzenie do VertiPaq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Wprowadzenie DirectQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Poziomy zgodności modelu tabelarycznego (1200 kontra 110x) . . . . . . . . 24 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== iii iv Spis treści Analysis Services i Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2 Rozpoczynanie pracy w modelu tabelarycznym . . . . . . . . . . . . . . . 29 Budowanie środowiska deweloperskiego . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Komponenty środowiska deweloperskiego . . . . . . . . . . . . . . . . . . . . . . . . 29 Licencje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Proces instalacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Korzystanie z SQL Server Data Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Tworzenie nowego projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Konfiguracja nowego projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Import z PowerPivot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Importowanie z Power BI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Import wdrożonego projektu z Analysis Services . . . . . . . . . . . . . . . . . . . 51 Zawartość projektu tabelarycznego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Budowa prostego modelu tabelarycznego . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Ładowanie danych do tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Praca w widoku diagramu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Nawigowanie przy użyciu Tabular Model Explorer . . . . . . . . . . . . . . . . . 68 Wdrażanie modelu tabelarycznego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Odpytywanie modelu tabelarycznego przy użyciu programu Excel . . . . . 71 Połączenie z modelem tabelarycznym . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Korzystanie z tabel przestawnych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Korzystanie z fragmentatorów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Sortowanie i filtrowanie wierszy i kolumn . . . . . . . . . . . . . . . . . . . . . . . . . 79 Używanie formuł kostek Excela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Odpytywanie modelu tabelarycznego przy użyciu Power BI Desktop . . . 83 Tworzenie połączenia z modelem tabelarycznym . . . . . . . . . . . . . . . . . . 83 Budowanie podstawowego raportu Power BI . . . . . . . . . . . . . . . . . . . . . . 85 Dodawanie wykresów i fragmentatorów . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Interakcja z raportem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Korzystanie z SQL Server Management Studio . . . . . . . . . . . . . . . . . . . . . . . 89 Importowanie z Power Pivot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Importowanie z Power BI Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Używanie DAX Studio jako alternatywy dla SSMS . . . . . . . . . . . . . . . . . . 93 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Spis treści v 3 Ładowanie danych do modelu tabelarycznego . . . . . . . . . . . . . . . 95 Istota źródła danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Personifikacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Poświadczenia po stronie serwera i po stronie klienta . . . . . . . . . . . . . . . . . 99 Praca z dużymi tabelami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Ładowanie z serwera SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Ładowanie z listy tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Ładowanie z zapytania SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Ładowanie z widoków . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Otwieranie istniejących połączeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Ładowanie z programu Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Ładowanie z Analysis Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Korzystanie z edytora MDX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Ładowanie z tabelarycznej bazy danych . . . . . . . . . . . . . . . . . . . . . . . . . 113 Ładowanie z pliku Excela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Ładowanie z pliku tekstowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Ładowanie ze schowka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Ładowanie z raportu usług Reporting Services . . . . . . . . . . . . . . . . . . . . . . 123 Ładowanie danych przy użyciu źródła danych raportu . . . . . . . . . . . . . 123 Ładowanie z raportów przy użyciu strumieniowych źródeł danych . . 129 Ładowanie ze strumieniowych źródeł danych . . . . . . . . . . . . . . . . . . . . . . . 131 Ładowanie z SharePoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Wybór właściwej metody ładowania danych . . . . . . . . . . . . . . . . . . . . . . . . 133 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 4 Wprowadzenie do DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Wprowadzenie do języka DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Składnia DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Typy danych języka DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Operatory DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Odwoływanie się do kolumn i miar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Funkcje agregujące . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Funkcje tablicowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Kontekst wykonania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 CALCULATE i CALCULATETABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Zmienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Miary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Kolumny obliczane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== vi Spis treści Tabele obliczane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Tworzenie zapytań w języku DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Formatowanie kodu DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 DAX Formatter, DAX Studio i DAX Editor . . . . . . . . . . . . . . . . . . . . . . . . . 161 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 5 Tworzenie hierarchii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Hierarchie podstawowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Czym są hierarchie? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Kiedy budować hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Tworzenie hierarchii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Najlepsze praktyki projektowania hierarchii . . . . . . . . . . . . . . . . . . . . . . 167 Hierarchie obejmujące wiele tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Naturalne i nienaturalne hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Hierarchie rodzic-dziecko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Czym są hierarchie rodzic-dziecko? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Konfigurowanie hierarchii rodzic-dziecko . . . . . . . . . . . . . . . . . . . . . . . . 172 Operatory jednoargumentowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 6 Modelowanie danych w modelu tabelarycznym . . . . . . . . . . . . . 183 Różne techniki modelowania danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Korzystanie z bazy danych OLTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Praca z modelami wymiarowymi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Praca z powoli zmieniającymi się wymiarami . . . . . . . . . . . . . . . . . . . . . 188 Praca ze zdegenerowanymi wymiarami . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Korzystanie z migawkowych tabel faktów . . . . . . . . . . . . . . . . . . . . . . . . 193 Korzystanie z widoków w celu odseparowania się od bazy danych . . . . . 195 Typy relacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Kardynalność relacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Propagowanie filtru w relacjach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Stan aktywny relacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Implementowanie relacji w języku DAX . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Normalizacja kontra denormalizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Kolumny obliczane kontra zewnętrzny proces ETL . . . . . . . . . . . . . . . . . . . 215 Odwołania cykliczne przy korzystaniu z tabel obliczanych . . . . . . . . . 218 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Spis treści vii 7 Tabular Model Scripting Language (TMSL) . . . . . . . . . . . . . . . . . . . 221 Definiowanie obiektów w TMSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Obiekt Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Obiekt DataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Obiekt Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Obiekt Relationship . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Obiekt Perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Obiekt Culture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Obiekt Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Polecenia TMSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Operacje na obiektach w TMSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Operacje odświeżania danych i zarządzania bazą danych w TMSL . . . 244 Skrypty TMSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 8 Warstwa prezentacji modelu tabelarycznego . . . . . . . . . . . . . . . . 247 Ustawianie metadanych dla tabeli kalendarzowej . . . . . . . . . . . . . . . . . . . . 247 Nazwy, sortowanie i formatowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Nazywanie obiektów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Ukrywanie kolumn i miar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Porządkowanie miar i kolumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Sortowanie danych w kolumnie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Formatowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Perspektywy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Właściwości związane z Power View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Domyślny zestaw pól . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Właściwości sterujące zachowaniem tabeli . . . . . . . . . . . . . . . . . . . . . . . 264 Kluczowe wskaźniki wydajności (KPI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Translacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Tworzenie pliku translacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Zapisywanie tłumaczeń nazw w pliku translacji . . . . . . . . . . . . . . . . . . . 271 Wybieranie edytora dla plików translacji . . . . . . . . . . . . . . . . . . . . . . . . . 273 Importowanie pliku translacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Testowanie tłumaczeń przy użyciu narzędzi klienckich . . . . . . . . . . . . . 276 Usuwanie tłumaczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Najlepsze praktyki dotyczące tłumaczeń . . . . . . . . . . . . . . . . . . . . . . . . . 278 Wybieranie ustawień językowych w modelu tabelarycznym . . . . . . . . . . . 279 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== viii Spis treści Zmienianie ustawień językowych przy korzystaniu ze zintegrowanego obszaru roboczego . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Zmienianie ustawień językowych przy korzystaniu z serwera obszaru roboczego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 9 Korzystanie z DirectQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Konfigurowanie DirectQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Ustawianie DirectQuery w środowisku deweloperskim . . . . . . . . . . . . . 284 Włączanie trybu DirectQuery po wdrożeniu . . . . . . . . . . . . . . . . . . . . . . 291 Ograniczenia modelu tabelarycznego dla DirectQuery . . . . . . . . . . . . . . . 294 Obsługiwane źródła danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Ograniczenia dla źródeł danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Ograniczenia modelowania danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Ograniczenia dotyczące formuł DAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Ograniczenia występujące w formułach MDX . . . . . . . . . . . . . . . . . . . . . 297 Dostrajanie ograniczeń zapytań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Wybieranie pomiędzy trybem DirectQuery a VertiPaq . . . . . . . . . . . . . . . 300 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 10 Bezpieczeństwo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Uwierzytelnianie użytkowników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Łączenie się z serwerem Analysis Services spoza domeny . . . . . . . . . . 304 Kerberos i problem podwójnego przeskoku . . . . . . . . . . . . . . . . . . . . . . 305 Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Tworzenie ról bazodanowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Członkostwo w wielu rolach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Zabezpieczenia administracyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Przyznawanie uprawnień poprzez rolę Server Administrator . . . . . . . . 310 Role bazodanowe i uprawnienia administracyjne . . . . . . . . . . . . . . . . . 311 Zabezpieczenia danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Podstawowe zabezpieczenia danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Testowanie ról zabezpieczeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Zaawansowane wyrażenia filtra wierszy . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Zabezpieczenia w kolumnach i tabelach obliczanych . . . . . . . . . . . . . . 324 Korzystanie z tabeli uprawnień . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 Szacowanie wpływu zabezpieczeń danych na wydajność . . . . . . . . . . . 326 Tworzenie zabezpieczeń dynamicznych . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Spis treści ix Funkcje DAX związane z zabezpieczeniami dynamicznymi . . . . . . . . . 327 Implementowanie zabezpieczeń dynamicznych przy użyciu CUSTOMDATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 Implementowanie zabezpieczeń dynamicznych przy użyciu USERNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Zabezpieczenia w trybie DirectQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Zabezpieczenia i personifikacja w DirectQuery . . . . . . . . . . . . . . . . . . . 332 Zabezpieczenia na poziomie wierszy w wersjach SQL Server wcześniejszych niż 2016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Monitorowanie zabezpieczeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 11 Przetwarzanie i partycjonowanie modelu tabelarycznego . . . 339 Automatyzowanie wdrożenia na serwerze produkcyjnym . . . . . . . . . . . . . 339 Partycjonowanie tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 Definiowanie strategii partycjonowania . . . . . . . . . . . . . . . . . . . . . . . . . . 341 Definiowanie partycji tabeli w modelu tabelarycznym . . . . . . . . . . . . . 344 Zarządzanie partycjami tabeli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 Opcje przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Dostępne operacje przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Definiowanie strategii przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 Wykonywanie przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Automatyzowanie przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Korzystanie z poleceń TMSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Korzystanie z SQL Server Integration Services . . . . . . . . . . . . . . . . . . . . 374 Korzystanie z bibliotek Analysis Management Objects (AMO) i Tabular Object Model (TOM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Korzystanie z PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Przykładowe skrypty przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Przetwarzanie bazy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Przetwarzanie tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 Przetwarzanie partycji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 Partycje kroczące . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 12 Wewnątrz VertiPaq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Struktury VertiPaq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Istota magazynu kolumnowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Kodowanie wartości kontra kodowanie skrótów . . . . . . . . . . . . . . . . . . 394 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== x Spis treści Kompresja RLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Kontrolowanie kodowania kolumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Hierarchie i relacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 Segmentacja i partycjonowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Odczytywanie wewnętrznych metadanych VertiPaq . . . . . . . . . . . . . . . . . . 404 Korzystanie z DMV w celu sprawdzenia użycia pamięci przez VertiPaq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Interpretowanie raportów VertiPaq Analyzer . . . . . . . . . . . . . . . . . . . . . 406 Użycie pamięci VertiPaq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Użycie pamięci na dane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Użycie pamięci podczas przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Użycie pamięci w zapytaniach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Opcje przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Co dzieje się podczas przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Dostępne opcje przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 13 Programowy interfejs modelu tabelarycznego . . . . . . . . . . . . . . . 419 Wprowadzenie do bibliotek AMO oraz TOM . . . . . . . . . . . . . . . . . . . . . . . . 419 Wprowadzenie do AMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 Wprowadzenie do TOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 Wprowadzenie do poleceń TMSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Programowe tworzenie bazy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Automatyzowanie odświeżania danych i partycjonowania . . . . . . . . . . . . 434 Analizowanie metadanych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 Manipulowanie modelem danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Automatyzowanie wdrożenia projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Kopiowanie tej samej bazy danych na różne serwery . . . . . . . . . . . . . . 439 Wdrażanie pliku model .bim z wyborem nazwy bazy danych i serwera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 14 Monitorowanie i dostrajanie usługi tabelarycznej . . . . . . . . . . . 443 Znajdowanie procesu usług Analysis Services . . . . . . . . . . . . . . . . . . . . . . . 443 Zasoby zużywane przez Analysis Services . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Pamięć . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 Operacje I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Spis treści xi Zrozumienie konfiguracji pamięci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 Korzystanie z liczników wydajnościowych związanych z pamięcią . . . . . . 455 Korzystanie z dynamicznych widoków zarządzania . . . . . . . . . . . . . . . . . . 460 Widoki DMV przydatne do monitorowania usługi tabelarycznej . . . . 462 Automatyzowanie gromadzenia informacji monitorowania i dzienników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 Liczniki wydajności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 SQL Server Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 ASTrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 Flight Recorder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 Zdarzenia rozszerzone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 Inne narzędzia komercyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 Monitorowanie odświeżania danych (przetwarzania) . . . . . . . . . . . . . . . . . 471 Monitorowanie zapytań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 15 Optymalizowanie modeli tabelarycznych . . . . . . . . . . . . . . . . . . . . 479 Optymalizowanie użycia pamięci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Usuwanie nieużywanych kolumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 Zmniejszanie wielkości słownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 Wybieranie typu danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Redukowanie wielkości bazy danych poprzez wybór kolejności sortowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 Ulepszanie kodowania i rozmiaru bitowego . . . . . . . . . . . . . . . . . . . . . . 489 Optymalizowanie wielkich wymiarów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Projektowanie modeli tabelarycznych dla wielkich baz danych . . . . . . . . 495 Optymalizowanie kompresji poprzez podział kolumny . . . . . . . . . . . . . 495 Optymalizowanie czasu przetwarzania wielkich tabel . . . . . . . . . . . . . . 497 Agregowanie tabel faktów na różnych poziomach szczegółowości . . 498 Projektowanie modeli tabelarycznych dla rozwiązań niemal czasu rzeczywistego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Wybieranie pomiędzy DirectQuery a VertiPaq . . . . . . . . . . . . . . . . . . . . 503 Wykorzystanie partycji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 Redukowanie czasu ponownych obliczeń . . . . . . . . . . . . . . . . . . . . . . . . 507 Zarządzanie blokadami podczas przetwarzania . . . . . . . . . . . . . . . . . . . 509 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== xii Spis treści 16 Wybieranie sprzętu i wirtualizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Wymiarowanie sprzętu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Zegar i model procesora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Prędkość i wielkość pamięci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Architektura NUMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 Dysk i I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Wymagania sprzętowe dla DirectQuery . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Optymalizowanie konfiguracji sprzętowej . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Ustawienia zasilania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Hyper-threading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Ustawienia NUMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Wirtualizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Dzielenie węzłów NUMA pomiędzy różne maszyny wirtualne . . . . . . 524 Przydzielanie pamięci dla maszyny wirtualnej . . . . . . . . . . . . . . . . . . . . 525 Skalowalność rozwiązania tabelarycznego SSAS . . . . . . . . . . . . . . . . . . . . . 526 Skalowalność dla pojedynczej bazy danych (wielki rozmiar) . . . . . . . . 526 Skalowalność dla wielkiej liczby użytkowników . . . . . . . . . . . . . . . . . . . 527 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 Indeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 O autorach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Przedmowa Większości osób, które już pracowały z Analysis Services, zapewne nie trzeba wyjaśniać, kim są Marco Russo i Alberto Ferrari. Pracowali oni nad niektórymi z najbardziej wymagających projektów Analysis Services, napisali wiele książek o tym produkcie i zamieszczali – razem i osobno – fascynujące wpisy na blogu o najlepszych praktykach i innych tematach technicznych. Niezależnie od tego, często występują jako prezenterzy na konferencjach branżowych i prowadzą popularne kursy szko- leniowe na szeroki zakres tematów powiązanych z analizami biznesowymi (business intelligence) i Analysis Services. Osobiście spotkałem Alberto i Marco wiele razy w ciągu minionych lat i podziwiam ich nieustającą pasję i prawdziwe umiłowanie uczenia się i nauczania. Jako wieloletni członek zespołu projektowego Analysis Services, pracowałem nad wieloma aspektami silników SSAS, a także częściowo nad Power BI. Naprawdę lubiłem budowanie Analysis Services. Silny i entuzjastyczny zespół inżynierski w połączeniu ze wspaniałymi partnerami i klientami – to rzecz niezapomniana! Projektując i programując różne funkcjonalności Analysis Services w tak wielu wydaniach czasami sądzę, że dokładnie wiem, czego klienci potrzebują i czego ocze- kują od produktu. Jednak moje rozmowy z Marco i Alberto zwykle przypominają mi, jak bardzo większa jest ich wiedza na temat BI w rzeczywistym świecie. Nasze dyskusje są zawsze fascynujące i prowokujące do myślenia, gdyż obydwaj mają skłon- ność do przedstawiania nieoczekiwanych punktów widzenia, które wstrząsały moimi wcześniejszymi przekonaniami. Pytania są zaskakujące i z szerokiego zakresu, dyskusje gorące, ale ich konsekwencją są zawsze pozytywne zmiany, zarówno dla samego pro- duktu, jak i naszych klientów. Każdy zespół projektowy bywa niekiedy oskarżany o „życie w wieżach z kości sło- niowej” i ignorowanie tego, co jest ważne dla końcowych odbiorców. Dzięki reakcjom i wskazówkom naszych MVP i ekspertów, często wylewających kubły zimnej wody na nasze błędne koncepcje, dostajemy od nich lepsze pomysły, często jeszcze cen- niejsze, niż oni sami się spodziewali. Jednak moim zdaniem największą wartość, jaką wnieśli oni do świata Analysis Services, jest ich działanie jako pośrednicy i tłumaczenie naszej dokumentacji i innych przekazów (które niekiedy, o ile nie zazwyczaj są zbyt techniczne lub abstrakcyjne dla nie-programistów). Szczególnie cenny jest ich talent do tworzenia przykładów i rozwiązań pokazujących, jak coś naprawdę powinno być zrobione. Tak książka jest kolejnym doskonałym przykładem. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== xiii xiv Przedmowa Jak zwykle, Marco i Alberto włożyli ogromną pracę w poznanie nowego wydania Analysis Services 2016. Teraz Czytelnik może skorzystać z ich wiedzy i ciężkiej pracy i użyć wszystkich lekcji, których nauczyli się o tym nowym produkcie. Jestem osobiście bardzo dumny z wydania Analysis Services 2016, zawierającego tak wiele nowych funkcji i usprawnień wydajnościowych, że mogę wymienić tylko nie- które z moich ulubionych: metadane tabelaryczne, model obiektowy TOM, SuperDAX, Parallel Partition Processing, BiDirectional CrossFiltering (i wiele innych). Po przej- rzeniu wielu rozdziałów tej nowej książki jestem przekonany, że będzie naprawdę użytecznym i pouczającym dodatkiem do produktu, zaś czytelnicy będą szybko mogli wykorzystać cały potencjał tej nowej wersji Analysis Services. Z niecierpliwością czekam na przyszłą współpracę z Marco i Alberto i życzę im wielkiego sukcesu przy kolejnych nowych książkach! Akshai Mirchandani Principal Software Engineer Microsoft Corporation ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Wprowadzenie Pierwsze wydanie tej książki zostało opublikowane w roku 2012, gdy firma Microsoft udostępniła pierwszą wersję SQL Server Analysis Services (SSAS) pracującą w try- bie tabelarycznym (Tabular). Wcześniej SSAS wykorzystywał inny mechanizm, obecnie nazywany trybem wielowymiarowym (Multidimensional). Od roku 2012 użytkownicy mają wybór, którą opcję chcą zainstalować. W roku 2016 firma Microsoft wypuściła drugie główne wydanie Analysis Services Tabular, wprowadzające wiele nowych funk- cjonalności i ważne usprawnienia. Z tego powodu zdecydowaliśmy o konieczności napisania drugiego wydania naszej książki na temat SSAS Tabular – właśnie tego, które Czytelnik ma teraz w dłoniach. Choć numer wersji Analysis Services jest obecny w tytule książki, w zasadzie nie powinno go tam być. Wynika to z faktu, że sprawy dzieją się coraz szybciej i szybciej. W chwili pisania tych słów używamy wersji 2016 usług SSAS, ale wstępna wersja techniczna kolejnej wersji jest już dostępna. Czy to znaczy, że książka ta jest już prze- starzała, choć czuć jeszcze zapach farby drukarskiej? Nie. Podjęliśmy to wyzwanie i dołączyliśmy uwagi dotyczące tych funkcjonalności, które mogą się wkrótce zmienić. Są to jednak wyjątki. Zapewne zobaczymy nowe funkcje i właściwości dodane do pro- duktu, ale raczej niewiele zmian w tych już istniejących. Jeśli ktoś czytał już wcześniejsze wydanie tej książki, czy warto czytać to nowe? Tak. Zawiera ona wiele nowej treści i uaktualnień. Zaprawdę, należy przeczytać od nowa niemal wszystkie rozdziały, gdyż zaktualizowaliśmy całą treść zgodnie z nową wersją Analysis Services. Co więcej, w tym wydaniu zdecydowaliśmy się skupić wyłącznie na SSAS. Usunęliśmy z niej zaawansowane rozdziały na temat języka DAX, dodając w zamian nowe rozdziały i rozszerzając istniejące w celu omówienia nowych funkcji i zapewnienia pogłębionego obrazu silnika SSAS. Wykorzystaliśmy też doświadcze- nia zdobyte w ciągu tych lat podczas pomagania wielu klientom na całym świecie przy wdrażaniu rozwiązań bazujących na Analysis Services Tabular. Na wypadek, gdyby komuś brakowało części poświęconej DAX, napisaliśmy oddzielną książkę tyl- ko na temat tego języka, DAX. Kompletny przewodnik, w której Czytelnik znajdzie wszystko, co potrzebne dla opanowania tego pięknego języka – znacznie więcej, niż zawarliśmy we wcześniejszym wydaniu tej książki. Na koniec, jeśli Czytelnik jest nowym projektantem, dlaczego miałby zainwestować w naukę Analysis Services Tabular? W dzisiejszych czasach Power BI wydaje się być dobrą alternatywą dla mniejszych modeli, jest łatwiejszy do opanowania, no i jest ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== xv xvi Wprowadzenie darmowy. Może jednak przyjść taki dzień, gdy rozwiązanie oparte na Power BI będzie musiało zostać przeskalowane, obsłużyć wielu użytkowników, pomieścić więcej infor- macji i urosnąć zarówno pod względem rozmiarów, jak i złożoności. Gdy to nastąpi, naturalnym ruchem będzie migracja do pełnego rozwiązania tabelarycznego. Silnik używany w Power BI i Power Pivot jest zasadniczo taki sam, jak w SSAS Tabular, zatem im więcej będziemy o nim wiedzieć, tym lepiej. Mamy nadzieję, że książka ta okaże się użyteczna i że Czytelnik skorzysta na jej lekturze. Kto powinien przeczytać tę książkę Książka ta skierowana jest do profesjonalnych projektantów rozwiązań analiz bizne- sowych (BI): konsultantów lub członków wewnętrznych zespołów projektanckich BI, którzy przymierzają się do projektów wykorzystujących model tabelaryczny. Zaczniemy od podstaw trybu tabelarycznego, zatem pod tym względem jest to książka dla początkujących. Zakładamy jednak, że Czytelnik zna już pewne kluczo- we koncepcje BI, takie jak modelowanie wielowymiarowe i projektowanie hurtowni danych. Wiedza na temat relacyjnych baz danych, a konkretnie SQL Server, będzie przydatna, gdy przyjdzie czas na poznawanie struktury modelu tabelarycznego i jak ładować dane do tego modelu, a także dla takich tematów, jak DirectQuery. Wcześ- niejsze doświadczenie z trybem Analysis Services Multidimensional nie jest wymagane, ale ponieważ wiemy, że większość czytelników tej książki już jakieś posiada, od czasu do czasu odwołujemy się do jego cech i porównujemy z odpowiadającymi funkcjo- nalnościami w trybie tabelarycznym. Kto nie powinien czytać tej książki Żadna książka nie jest właściwa dla każdej możliwej publiczności i ta również nie stanowi wyjątku. Osoby nie mające doświadczenia w dziedzinie BI szybko poczują się na „zbyt głębokiej wodzie”, podobnie jak menedżerowie nie posiadający technicznego przygotowania. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Organizacja książki Książka składa się z następujących rozdziałów: ■■ Rozdział 1, „Wprowadzenie do modelu tabelarycznego”, przedstawia podstawy modelu tabelarycznego – czym jest i kiedy powinien (a kiedy nie powinien) być używany. ■■ Rozdział 2, „Rozpoczynanie pracy w modelu tabelarycznym” oraz 3, „Ładowanie danych w modelu tabelarycznym” omawiają podstawy konstruowania modelu tabelarycznego. ■■ Rozdział 4, „Wprowadzenie do DAX”, przedstawia podstawy języka DAX, pozwa- lające na tworzenie prostych kalkulacji. ■■ Rozdziały 5, „Budowanie hierarchii”, 6, „Modelowanie danych w trybie tabelarycz- nym”, 8, „Warstwa prezentacji modelu tabelarycznego”, 10, „Bezpieczeństwo” oraz 15, „Optymalizowanie modeli tabelarycznych” poświęcone są licznym zagadnie- niom projektu tabelarycznego, takim jak hierarchie, relacje, narzędzia klienckie i zabezpieczenia. ■■ Rozdział 7, „Tabular Model Scripting Language (TMSL)” zawiera omówienie języka TMSL, zaś 13, „Programowy interfejs modelu tabelarycznego” udostępnia szcze- góły dodatkowych metod programistycznego dostępu do modeli tabelarycznych. ■■ Rozdziały 9, „Korzystanie z DirectQuery” oraz 12, „Wewnątrz VertiPaq” udostęp- niają wiele szczegółów na temat silników magazynowych DirectQuery i VertiPaq. ■■ Rozdziały 11, „Przetwarzanie i partycjonowanie modelu tabelarycznego”, 14, „Monitorowanie i dostrajanie usługi tabelarycznej” oraz 16, „Wybieranie sprzętu i wirtualizacji” poświęcone są zagadnieniom operacyjnym, takim jak wymiaro- wanie sprzętu i konfiguracji, partycjonowaniu tabel i monitorowania działania modelu. Konwencje używane w tej książce Książka przedstawia informacje przy użyciu pewnych konwencji mających na celu poprawę czytelności informacji i łatwości podążania za przekazem: ■■ Opatrzone ikonami elementy w ramkach, takie jak „Uwaga”, zawierają dodatkowe informacje lub alternatywne metody realizacji opisywanego zadania. ■■ Tekst do wpisania przez Czytelnika (poza blokami kodu) lub nazwy klikanych poleceń są wytłuszczone. ■■ Znak plus (+) pomiędzy nazwami dwóch klawiszy oznacza, że klawisze te muszą zostać wciśnięte równocześnie. Dla przykładu „Naciśnij Alt+Tab” oznacza, że nale- ży przytrzymać klawisz Alt przy wciskaniu klawisza Tab. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== xvii xviii Wprowadzenie ■■ Definicje miar, kolumn obliczanych i tabel obliczanych używają poniższego stan- dardu, który nie odpowiada ściśle składni używanej w Visual Studio, ale jest wygodniejszą konwencją w przypadku książki (więcej szczegółów na ten temat zawiera rozdział 4): Tabela[NazwaMiary] := wyrażenie Tabela[NazwaKolumnyObliczanej] = wyrażenie ObliczanaTabela = wyrażenie ■■ Nazwy opcji menu, okien dialogowych i poleceń podawane są w wersji anglo- języcznej. Przy pierwszym użyciu dodawana jest polska wersja, o ile istnieje. W przypadku braku danego elementu w wersji polskojęzycznej podane zostało tłumaczenie danego terminu, pisane małą literą. Wymagania systemowe Do zainstalowania przykładów kodu i bazy danych używanych w tej książce potrzebny będzie sprzęt i oprogramowanie spełniając poniższe wymagania minimalne: ■■ System operacyjny Windows 7, Windows Server 2008 SP2 lub późniejsze. Akceptowane są zarówno wydania 32-, jak i 64-bitowe. ■■ Co najmniej GB wolnego miejsca na dysku. ■■ Co najmniej 4 GB pamięci RAM. ■■ Procesor 2.0GHz x86 lub x64 albo lepszy. ■■ Instancja SQL Server Analysis Services 2016 Tabular z zainstalowanymi kompo- nentami klienckimi. Pełne instrukcje instalowania tego ostatniego wymagania zawiera rozdział 2, „Rozpoczynanie pracy w modelu tabelarycznym”. Przykłady kodu Bazy danych użyte w przykładach przedstawionych w książce oparte są na udostęp- nianych przez firmę Microsoft przykładowych bazach danych Adventure Works 2012 DW oraz ContosoDW. Wszystkie przykładowe projekty i bazy danych można pobrać z poniższej strony: https://aka.ms/tabular/downloads ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== xix Wykonaj poniższe kroki, aby zainstalować przykłady kodu na swoim komputerze, tak by móc wykonywać ćwiczenia w trakcie lektury: 1. Rozpakuj pobrane pliki przykładów na dysku twardym. 2. Odtwórz dwie bazy danych SQL Server z plików .bak znajdujących się w podka- talogu Databases. Szczegółowe instrukcje można znaleźć pod adresem http://msdn. microsoft.com/en-us/library/ms177429.aspx. 3. Każdy rozdział ma swój własny podkatalog zawierający przykłady kodu w kata- logu Models. W wielu przypadkach przyjmują one formę projektu, który należy otworzyć w narzędziu SQL Server Data Tools (SSDT). Pełna instrukcja instalowa- nia SSDT zawarta jest w rozdziale 2. 4. Skrypty PowerShell oraz TMSL zostały umieszczone w podkatalogach Script PowerShell oraz Script TMSL, odpowiednio. Podziękowania Następującym osobom należą się podziękowania za ich pomoc i rady: Bret Grinslade, Christian Wade, Cristian Petculescu, Darren Gosbell, Jeffrey Wang, Kasper de Jonge, Marius Dumitru, Kay Unkroth oraz TK Anand. Odrębne wyrazy wdzięczności należą się Akshai Mirchandani za wspaniałą robo- tę, jaką wykonał odpowiadając na nasze pytania i recenzję techniczną, a zwłaszcza za przedmowę do tej książki. Na koniec chcemy podziękować Edowi Price i Kate Shoup, którzy pracowali jako redaktorzy recenzenci. Dzięki ich pracy książka zawiera znacznie mniej błędów. Wina za te, które pozostały (mamy nadzieję, że bardzo nieliczne) w całości spoczywa na nas. Errata i wsparcie dla książki Autorzy dołożyli wszelkich starań, aby zapewnić dokładność książki i jej kontekstu. Wszelkie błędy, które zostały zgłoszone po publikacji książki, podano na naszej witry- nie Microsoft Press: https://aka.ms/tabular/errata Każdy, kto znajdzie błąd, którego nie ma na liście, może go zgłosić na tejże stronie. Ewentualną dodatkową pomoc można uzyskać, pisząc e-mail do Microsoft Press Book Support, pod adres mspinput@microsoft.com. Pod powyższymi adresami nie można uzyskać wsparcia dla oprogramowania firmy Microsoft. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== xx Wprowadzenie Czekamy na kontakt W Microsoft Press satysfakcja Czytelników jest podstawowym priorytetem, a kontakty od klientów najcenniejszym zasobem. Czekamy na komentarze na temat tej książki pod adresem: https://aka.ms/tellpress Ankieta jest krótka i czytamy każdy komentarz i pomysł. Z góry dziękujemy za Wasz wkład! Pozostańmy w kontakcie Niech trwa wymiana poglądów. Jesteśmy też na Twitterze: http://twitter.com/MicrosoftPress ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== ROZDZIAŁ 1 Wprowadzenie do modelu tabelarycznego Rozdział ten ma na celu wprowadzenie SQL Server Analysis Services (SSAS) 2016, krótki przegląd koncepcji modelu tabelarycznego (ang. Tabular model) oraz analiza jego związków z modelem wielowymiarowym (ang. Multidimensional model), całością SSAS 2016 oraz z całym zestawem narzędzi firmy Microsoft do analizy biznesowej (BI). Rozdział ten pomoże nam także w podjęciu najważniejszej zapewne decyzji w cyklu życia naszego projektu: czy należy korzystać z modelu tabelarycznego. Na koniec zamieściliśmy krótkie omówienie głównych różnic dotyczących modelu tabelaryczne- go pomiędzy SSAS 2016 a wersjami wcześniejszymi. Co nowego w SSAS 2016 Nowe poziomy kompatybilności oraz nowa implementacja DirectQuery, zwiększająca wydajność i usuwająca ograniczenia występujące we wcześniej- szych wersjach. Modele semantyczne w Analysis Services W ekosystemie firmy Microsoft, BI nie jest oddzielnym produktem, ale jest to raczej zestaw funkcji rozdzielonych pomiędzy kilka produktów. W kolejnych punktach wyjaśnimy rolę SSAS w tym ekosystemie. Model tabelaryczny jest jednym z dwóch typów mod
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Microsoft SQL Server 2016 Analysis Services: Modelowanie tabelaryczne
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: