Hurtownie Danych - microbot.com.pl
Transkrypt
Hurtownie Danych - microbot.com.pl
Marcin Gorawski, Michał Jan Gorawski, Sławomir Bańkowski Hurtownie Danych ITA-102 Wersja 1.0 Gliwice, Sierpień 2008 Marcin Gorawski, Michał Jan Gorawski, Sławomir Bańkowski, ITA-102 Hurtownie Danych Moduł 0 wersja 1.3 2008 Marcin Gorawski, Michał Jan Gorawski, Sławomir Bańkowski, Autorzy udziela prawa do bezpłatnego kopiowania i dystrybuowania wśród pracowników uczelni oraz studentów objętych programem ITAcademy. Wszelkie informacje dotyczące programu można uzyskać: [email protected]. Wszystkie inne nazwy firm i producentów wymienione w niniejszym dokumencie mogą być znakami towarowymi zarejestrowanymi przez ich właścicieli. Inne produkty i nazwy firm używane w treści mogą być nazwami zastrzeżonymi przez ich właścicieli. Strona 0 2/3 Marcin Gorawski, Michał Jan Gorawski, Sławomir Bańkowski, ITA-102 Hurtownie Danych Moduł 0 wersja 1.3 Informacje o kursie Kurs wprowadzi Cię w tematykę hurtowni danych tworzonej w środowisku SQL Server 2008. Przed rozpoczęciem kursu powinieneś być dobrze zorientowany w dziedzinie baz danych. Wskazane jest zaznajomienie się z podstawami teoretycznymi hurtowni danych. Opis kursu Kurs obejmuje zagadnienia analizy danych źródłowych, modelowania procesów ETL i schematów danych, zaawansowanej analizy (data mining) oraz raportowania danych jako składowych hurtowni danych. Przedstawimy każdy moduł SQL Server Business Intelligent Development Studio, a mianowicie: Integration Services, Analysis Services oraz Reporting Services. Szeroki zakres prezentowanych problemów pomoże Ci zrozumieć proces projektowania i zarządzania hurtownią danych, jak i zapoznać z techniką pracy z pakietem SQL Server 2008. Cel kursu Celem kursu jest pomóc Ci zrozumieć wyzwania, z jakimi spotkasz się podczas projektowania, zarządzania i eksploatacji hurtowni danych w środowisku SQL Server 2008. Uzyskane kompetencje Po zrealizowaniu kursu będziesz: • potrafił modelować procesy ETL, • potrafił projektować schematy danych, • potrafił korzystać z narzędzi oferowanych przez SQL Server 2008, • rozumiał koncepcję projektowania hurtowi danych, ze szczególnym uwzględnieniem użycia języka MDX oraz DMX, • wiedział, jak tworzyć różne raporty zarówno za pomocą Reporting Services jak i jezyka MDX. Wymagania wstępne Do zrealizowania tego kursu powinieneś posiadać: • wiedzę z zakresu baz danych kurs ITA-101 Strona 0 3/3 ITA-102 Hurtownie Danych Marcin Gorawski, Michał Jan Gorawski Moduł 1 Wersja 1.0 Proces ekstrakcji danych (ETL) I Spis treści Proces ekstrakcji danych (ETL) I ........................................................................................................... 1 Informacje o module ............................................................................................................................ 3 Przygotowanie teoretyczne ................................................................................................................. 4 Przykładowy problem .................................................................................................................. 4 Podstawy teoretyczne.................................................................................................................. 4 Wybrane zagadnienia procesu ekstrakcji............................................................................................. 6 Selekcja danych ............................................................................................................................ 6 Czyszczenie danych i standaryzacja ............................................................................................. 6 Transformacja .............................................................................................................................. 7 Integracja ..................................................................................................................................... 7 Ładowanie tablic wymiarów ........................................................................................................ 8 Zarządzanie wymiarami zmiennymi............................................................................................. 8 Ładowanie tablic faktów .............................................................................................................. 9 Ładowanie danych historycznych ................................................................................................ 9 Agregacja.................................................................................................................................... 10 Odtwarzanie – powtórne ładowanie ......................................................................................... 10 Zarządzanie ekstrakcją ............................................................................................................... 11 Przetwarzanie równoległe ......................................................................................................... 11 Przykładowe rozwiązanie ........................................................................................................... 12 Porady praktyczne ..................................................................................................................... 12 Uwagi dla studenta .................................................................................................................... 12 Dodatkowe źródła informacji..................................................................................................... 13 Laboratorium podstawowe ................................................................................................................ 14 Problem 1 (czas realizacji 30 min).............................................................................................. 14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I Problem 2 (czas realizacji 15min) - kontynuacja problemu 1 .................................................... 19 Laboratorium rozszerzone ................................................................................................................. 21 Zadanie 1 (czas realizacji 30 min)............................................................................................... 21 Zadanie 2 (czas realizacji 60 min)............................................................................................... 21 Strona 2/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I Informacje o module Opis modułu W module tym znajdziesz informacje dotyczące zagadnień związanych z procesem ekstrakcji danych. Poznasz podstawową wiedzę na temat ekstrakcji danych. Zobaczysz, czym jest oraz jak zaprojektować proces ETL (Ekstrakcja, Transformacja i Ładowanie danych) w środowisku SQL Server 2008. Cel modułu Celem modułu jest przedstawienie możliwości użycia pakietu Integration Services, jednego z komponentów SQL Server 2008, przy projektowaniu i implementowaniu procesu ETL o przeciętnej złożoności. Zadaniach ETL tego modułu uwzględniają proces czyszczenia. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • wiedział, czym jest oraz jak projektować proces ETL, • potrafił zbudować mało złożony proces ETL w SQL Server 2008, • rozumiał mechanikę tworzenia procesów ekstrakcji danych w SQL Server 2008. Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • dobrze orientować się w zagadnieniach baz danych, • znać zasady pracy w środowisku Visual Studio. Mapa zależności modułu Przy rozpoczęciu pracy z modułem 1 nie jest wymagana znajomość innych modułów. Strona 3/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I Przygotowanie teoretyczne Przykładowy problem Jesteś głównym specjalistą bazodanowym w dużej firmie. Jak dotąd zarząd firmy nie zdecydował się na budowę hurtowni danych, lecz coraz częściej słyszysz rozmowy o korzyściach, jakie niesie ze sobą wprowadzenie tej technologii do firmy. W końcu postanowiłeś sam poszerzyć swoją wiedzę i zaczerpnąć informacji na temat hurtowni danych, oraz poznać różnicę pomiędzy hurtownią danych a bazą danych. Dotąd traktowałeś bazę danych głównie, jako repozytorium danych. Dowiedziałeś się, że hurtownia danych to o wiele więcej. Oprócz przechowywanie wysokiej jakości danych, hurtownia udostępnia cały szereg analiz jakie można wykonać korzystając z przechowywanych danych, oraz przygotować na podstawie tych analiz raporty. Od razy zauważyłeś jedną ważną informację jaka podawana była we wszystkich źródłach – podstawą implementacji hurtowni danych jest umiejętne zaprojektowanie i wdrożenie procesu ETL (ang. Extraction, Transformation, Load) czyli procesu Ekstrakcji,Transformacji i Ładowania danych. Podstawy teoretyczne Zespół czynności związanych z przenoszeniem danych z systemów źródłowych do hurtowni danych zwany jest potocznie ekstrakcją danych. W procesie ekstrakcji możesz wyróżnić trzy odrębne etapy: • pobranie danych z systemu źródłowego (ang. Extraction), • przekształcenie danych do pożądanej postaci (ang. Transformation), • załadowanie danych do hurtowni (ang. Load). Stąd też często programy ekstrakcji określane są mianem systemów ETL. Ź r ó d ła d a n y c h W a r s tw a E T L : e k s tr a k c ja , tr a n s fo r m a c ja , ła d o w a n ie S e rw e r O L A P A p lik a c je p r o c e s u E T L Zasoby W W W BD Dane: O p e r a c y jn e A r c h iw a ln e T r a n s a k c y jn e P r z e s tr z e n n e S ie c io w e S e le k c ja i p o b r a n ie d a n y c h T r a n s f o r m a c ja w y m ia r ó w N a d a n ie n o w y c h k o d ó w w ta b lic a c h w y m ia r ó w K o n tr o la ja k o ś c i i c z y s z c z e n ie d a n y c h T r a n s f o r m a c ja f a k t ó w K o n w e r s ja in d e k s ó w n a k o d y w a r t o ś c i a t r y b u tó w , E lim in a c ja b łę d n y c h r e k o r d ó w S ta n d a r y z a c ja d a n y c h A g r e g a c ja d a n y c h Ł a d o w a n ie t a b lic w y m ia r ó w , f a k t ó w , a g r e g a c ji B azy H D MDBMS H a r m o n o g r a m o w a n ie , m a p o w a n ie , lo g o w a n ie , m o n ito r o w a n ie , o d ś w ie ż a n ie , o d t w a r z a n ie RDBM S O b s za r p o ś re d n i R e p o z y t o r iu m m e t a d a n y c h Rys. 1. Kroki budowania hurtowni danych: proces ETL Na rysunku 1 możesz zaobserwować wielowarstwową architekturę hurtowni danych z zaznaczonym procesem ETL. Warstwę ETL tworzą aplikacje procesu ETL, aplikacje zarządzające (harmonogramowanie, mapowanie, logowanie, monitorowanie, odświeżanie, odtwarzanie), obszar pośredni (ang. Data Stage Area) oraz repozytorium metadanych. Aplikacje procesu ETL tworzą zbiór kolejno nastepujących po sobie zadań ekstrakcji tj.: • • • • Selekcja i pobranie danych (ekstrakcja wymiarów i faktów). Transformacja wymiarów. Nadanie nowych kodów wartości atrybutów w tablicach wymiarów. Kontrola jakości i czyszczenie danych. Strona 4/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych • • • • • • Moduł I Proces Ekstrakcji Danych (ETL) I Transformacja faktów. Konwersja indeksów na kody wartości atrybutów. Eliminacja błędnych rekordów. Standaryzacja danych. Agregacja danych. Ładowanie tablic wymiarów, faktów, agregacji: • ładowanie tablic wymiarów (przeniesienie danych do wybranej statycznej tablicy wymiarów i zmiennej tablicy wymiarów oraz przeniesienie danych do pozostałych tablic wymiarów); • ładowanie tablic faktów ( algorytmy załadowania danych historycznych i ładowania przyrostowego; • ładowanie agregatów ( algorytmy agregacji danych); • analizę logów bazy danych (automatyzacja procesu ładowania (głównie przyrostowego)). W obszarze pośrednim dane są przygotowywane, przetwarzane, a następnie przenoszone do hurtowni danych. Jest to miejsce, gdzie dokonywana jest selekcja i pobranie danych, a następnie ich transformacja, standaryzacja i czyszczenie. Obszar pośredni może być zrealizowany jako: relacyjna baza danych, zbiór plików lub może być rozumiany jako pamięć operacyjna komputera, na którym wykonywana jest ekstrakcja. To, który z wariantów zostanie wybrany zależy od wielu czynników np. ilości danych oraz ich pochodzenia. Gdy danych jest niewiele lub znajdują się na tym samym komputerze co hurtownia danych, można wybrać metodę wykorzystującą pamięć operacyjną komputera. Obszar pośredni nigdy nie stanowi bazy danych, do której kierowane są zapytania użytkowników. Gdy dane zostały już wstępnie przetworzone i zgromadzone w obszarze pośrednim, następuje ich integracja zgodnie z formatem wymaganym w hurtowni danych oraz załadowanie do systemu docelowego. Z zagadnieniem procesu ETL wiąże się również problem przyrostowego, okresowego ładowania danych do hurtowni, czyli odświeżania danych oraz ładowania uzupełniającego danych, w których wcześniej wykryto błędy. Aby rozpocząć przenoszenie danych muszą być wcześniej spełnione określone warunki: • rozpoznanie struktury systemów transakcyjnych, • wstępna selekcja danych - specyfikacja danych źródłowych do hurtowni, • rozpoznanie wymagań stawianych hurtowni danych i określenie wykonywanych na danych źródłowych, • zdefiniowanie architektury i modelu danych, • implementacja baz hurtowni danych. transformacji Dopiero po spełnieniu tych wymagań możesz rozpocząć analizę problemu ekstrakcji danych. Ekstrakcja jest procesem silnie obciążającym systemy komputerowe, stąd celowe jest stosowne do potrzeb, przygotowanie zasobów przeznaczonych na rzecz tworzenia hurtowni danych. Warto również ustalić środowisko pracy programistów, terminologię i nazewnictwo. Wszystkie te elementy powinny być zdefiniowane przed przystąpieniem do właściwych prac projektowych i realizacyjnych. Ze względu na wielość i różnorodność zadań silny nacisk należy położyć na szczegółowe dokumentowanie tego procesu. Generalnie projektowanie procesu ekstrakcji zamyka się w następujących zadaniach: • • • • Selekcja (i pobranie danych z heterogenicznych źródeł zewnętrznych). Czyszczenie i standaryzacja ( wykrywanie błędów i ich poprawa). Transformacja (konwersja danych do formatu obowiązującego w HD). Integracja (budowa map transformacji). Strona 5/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I • Ładowanie (sortowanie, sumowanie, konsolidowanie, wyliczanie widoków, sprawdzanie integralności, budowanie indeksów oraz partycji). • Odświeżanie (uaktualnianie danych w hurtowni na podstawie danych źródłowych). • Odtwarzanie (ładowanie uzupełniające HD po jej „upadku”). • Zarządzanie ekstrakcją. • Ekstrakcja równoległa. Poniżej omówimy niektóre z nich. Wybrane zagadnienia procesu ekstrakcji Selekcja danych Podstawowym zadaniem jest odszukanie i identyfikacja danych przydatnych w tworzonej hurtowni. Wiele danych transakcyjnych nie jest potrzebnych w hurtowni. Dopiero na bazie reguł biznesowych możesz ocenić przydatność danych, znajdujących się w archiwach. Zadanie to jest żmudne i wymaga dużej cierpliwości. Podczas analizy danych historycznych warto byś zbierał informacje statystyczne o systemach transakcyjnych, z których będą czerpane informacje. Dane te przydadzą Ci się do oszacowania czasu ładowania i lepszego rozplanowania zadań. Czyszczenie danych i standaryzacja W całym procesie ekstrakcji musisz zwrócić szczególną uwagę na kontrolę poprawności danych. Przed jej rozpoczęciem musisz określić kryteria, wg których będziesz oceniać poprawność załadowanych danych. Definiując te kryteria musisz uwzględnić: • zgodność danych pomiędzy systemami źródłowymi a danymi w hurtowni, • kompletność danych (odpowiada na pytanie: czy wszystkie dane w systemach źródłowych mają swoje odpowiedniki w hurtowni danych), • wewnętrzna spójność danych w hurtowni, • unikalność, która gwarantuje niepowtarzalność danych w hurtowni, • częstotliwość aktualizacji danych w hurtowni (powinna być wystarczająca na potrzeby analizy danych i wspomagania podejmowania decyzji). • W danych pochodzących z systemów źródłowych występuje wiele usterek, które wymagają korekty. Typowe usterki to: • niekonsekwentne używanie kodów i znaczników, • niektóre identyfikatory mogą mieć różną interpretację, • dane mogą być zapisane niepoprawnie albo ten sam obiekt może być dwukrotnie wprowadzony do bazy z różnymi nazwami (duplikaty, rekordy sprzeczne). • Niektóre błędy można usunąć przed rozpoczęciem ekstrakcji, przez: • identyfikację i wybór najbardziej wiarygodnych źródeł danych, • sprawdzenie, jaka część danych źródłowych jest niepoprawna, • współpracę z projektantami systemu transakcyjnego przy usuwaniu wad w danych, • współpracę z użytkownikami systemów transakcyjnych w zakresie uzupełniania danych. Pozostałe usterki musisz usuwać w obszarze pośrednim, przed załadowaniem danych do HD. Ogólnie, czyszczenie danych dotyczy kilku faz tj.: • Analizy danych - celem wykrycia wszystkich rodzajów błędów i niekonsekwencji, które są do usunięcia; programy analizujące powinny korzystać z metadanych; • Definiowania strumienia transformacji i reguł mapowania - w zależności od liczby źródeł, stopnia ich heterogeniczności i stopnia „zabrudzenia” danych, musi być wykonana duża ilość transformacji danych i akcji czyszczenia. Schemat translacji używany jest do mapowania źródeł we wspólny model danych HD w postaci relacyjnej. Pierwsze kroki czyszczenia danych Strona 6/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I mogą poprawić jakość przygotowywanych danych w pojedynczym źródle danych do ich integracji. Dalsze kroki zajmują się schematami/danymi integracji i usuwaniem problemów wystąpień wielu źródeł np. duplikatów. Dla HD, kontrola i strumień danych dla tych transformacji oraz kroki czyszczenia powinny być określone w strumieniu prac, który definiuje proces ETL; • Weryfikacji - poprawność i efektywność strumienia transformacji i definicji transformacji powinny być testowane i oceniane np. na próbce lub kopii danych źródłowych, aby poprawić definicje jeśli będzie to konieczne. Wiele iteracji kroków analizy, projektowania i weryfikacji może być potrzebne, ponieważ np. tylko kilka błędów pozostało widocznych po zastosowaniu kilku transformacji; • Poprawiania danych - powrotny strumień czyszczonych danych - po usunięciu błędów, oczyszczone dane powinny zastąpić „brudne” dane również w oryginalnych źródłach w celu uniknięcia potrzeby ponownej pracy czyszczenia dla przyszłych ekstrakcji danych. Fazy czyszczenia powinny być określone przez deklaratywny język zapytań i mapowania, aby umożliwić automatyczną generację kodu transformacji. Standaryzacja danych zapewnia konwersje wartości atrybutów w spójny i jednolity format, co ułatwia dopasowanie i integrację danych. Np. wpisy daty i czasu powinny być zebrane w specyficznym formacie; nazwy i inne ciągi danych powinny być przekonwertowane albo na duże albo na małe znaki itd. Dane tekstowe mogą być zebrane i zunifikowane przez wykonanie tematyzacji, usuwanie prefiksów, sufiksów i słów przystankowych. Co więcej, skróty i schematy kodowania powinny być spójnie rozwiązywane przez konsultacje ze słownikami synonimów lub zastosowanie predefiniowanych reguł konwersji. Transformacja Proces transformacji wymaga oczywiście dużych ilości metadanych, takich jak: schematy, poziomy wystąpień charakterystyk danych, mapowania transformacji, definicji przepływu danych, informacje o dziedziczonych obiektach transformowanych i ich zmianach, itd. Dla spójności, elastyczności i łatwości ponownego użycia, te informacje powinny być utrzymywane w repozytorium metadanych (rys.1). Przykładami transformacji danych z obszaru pośredniego do postaci wymaganej w HD mogą być operacje: • nadania unikalnych indeksów, • konwersji typów danych (np. z EBCDIC na ASCII), • dopracowania szczegółów (np. kapitalizacja pierwszych liter w imionach i nazwiskach). O ile ostatnie dwa przykłady wymagają jedynie klasycznych mechanizmów konwersji, to nadanie nowych indeksów ma znaczenie szczególne. W systemach transakcyjnych indeksy mają różnorodną postać, często nieodpowiednią dla przetwarzania w HD. Zdarza się, że dany wymiar pochodzi z wielu źródeł. Rzadko przy tym poszczególne wartości atrybutów wymiarowych mają unikalne indeksy. Konieczne jest wówczas stworzenie nowych indeksów, unikalnych w ramach hurtowni. Dlatego opracowuje się specjalną mapę konwersji: z indeksów transakcyjnych na indeksy hurtowni. Każda tabela wymiarów, dla której tworzone są indeksy powinna posiadać taką mapę. Integracja Pierwszym Twoim zadaniem jest stworzenie schematów ekstrakcji. Twój wstępny schemat powinien zawierać bardzo ogólne założenia: z jakich modułów, jakie dane (jakościowo i ilościowo) oraz dokąd są przenoszone. Kolejne uściślenia poszczególnych ścieżek pozwalają na otrzymanie szczegółowej mapy przekształceń danych transakcyjnych na dane hurtowni (mapa transformacji). Taka strategia tworzenia schematów ekstrakcji i transformacji metodą zstępującą chroni Cię przed przypadkową utratą pewnych połączeń. Dopiero wówczas możliwe będzie zdefiniowanie Strona 7/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I szczegółowych algorytmów transformacji danych. Staną się one podstawą praktycznej implementacji. Jeśli będziesz zajmował się problemami wielu źródeł musisz zintegracji schematów, wykonując takie kroki jak dzielenie, scalanie, składanie, rozkładanie atrybutów i tablic. Na przykład, zadanie eliminacji duplikatów jest typowo wykonywane po większości transformacji i kroków czyszczenia pojedynczych źródeł danych. Eliminacja jest wykonywana na co najmniej dwóch czyszczonych źródłach w tym samym czasie lub na pojedynczym już zintegrowanym zbiorze danych. Eliminacja duplikatów wymaga identyfikacji podobnych rekordów dotyczących tego samego obiektu, a następnie ich scalanie w jeden rekord zawierający wszystkie istotne atrybuty (bez redundancji). Na tym etapie pracy warto abyś dokonał wyboru narzędzi programistycznych. Im wcześniej takiego wyboru dokonamy, tym bardziej nasz schemat będzie dostosowany do narzędzi, których będziemy używać. Pozwoli to ograniczyć konieczność ponownego projektowania niektórych transformacji. Ładowanie tablic wymiarów Ładowanie tablic wymiarów jest drugim etapem procesu ekstrakcji danych. Na początek powinieneś wybrać najprostszą statyczną tablicę wymiaru. Statyczną tzn. niezmienną, w której zestaw atrybutów jest stały i niezmienny. Powodem, dla którego dobieramy najprostszy przypadek jest ograniczenie ewentualnych trudności do problemów związanych z komunikacją, bezpieczeństwem i transferem danych. Istotna jest tutaj kwestia wyboru metody tworzenia i transmisji wyodrębnionych danych. Stosuje się zasadniczo dwie metody: przez plik i przez strumień. Kiedy dane zostaną poprawnie przygotowane, możesz przystąpić do ładowania tablic wymiarów. Dzięki przygotowaniu danych w obszarze pośrednim proces ładowania jest stosunkowo prosty, jednak warto stosować pewne stałe reguły postępowania: • Musisz unikać posługiwania się klasycznymi poleceniami wstawiania rekordów do bazy jako nieefektywnymi z powodu transakcyjnych cech relacyjnych baz danych. Większość RDBMS’ów realizuje transakcje przez jednoczesne zapisywanie zmian w rejestrach transakcyjnych, co czyni wszelkie operacje bardzo czasochłonnymi. • Powinieneś używać programów do masowego wprowadzania danych (ang. loader). • Wyłącz OLTP – nawet, jeśli ładowanie się nie powiedzie, to możliwe jest powtórzenie ładowania – pliki źródłowe znajdują się w obszarze pośrednim. • Posortuj pliki źródłowe – operacja ta znacznie przyśpiesza tworzenie indeksów, natomiast powinieneś unikać przekształcania danych podczas ładowania – nawet wykorzystanie dedykowanych programów wspomagających ładowanie może być nieefektywne, bowiem rekordy są przetwarzane i ładowane pojedynczo. • Usuń indeksy przed ładowaniem i utworzyć ponownie po zakończeniu ładowania – to zalecenie jest istotne, gdy ładowana jest duża porcja danych. Jako granicę przyjmuje się poziom objętości indeksów rzędu 10-15 procent bazy, po przekroczeniu którego warto indeksy usunąć i po ładowaniu odtworzyć. • Poprawnie zdefiniuj parametry bazy danych – większość obecnych baz danych automatycznie alokuje miejsce pod tworzenie nowych zapisów w bazach HD. • Określ odpowiednie wartości wskaźników wypełnienia i przygotować odpowiednią ilości wolnego miejsca. Gdy ładowanie najprostszej tablicy wymiarów zakończy się powodzeniem, można przystąpić do opracowania algorytmu ekstrakcji jednej wybranej zmiennej tablicy wymiarów. Zarządzanie wymiarami zmiennymi Wymiary zmienne charakteryzują się zmianami opisów, dotyczących tych samych wartości atrybutów, które znajdują się już w bazach hurtowni. Możesz wyróżnić trzy rodzaje obsługi sytuacji ze zmieniającymi się wymiarami: Strona 8/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I • Typ 1: Nadpisanie – „stara” wartość atrybutu znajdująca się w tablicy wymiarowej jest nadpisywana przez wartość „nową”. Ten model postępowania powoduje utratę poprzedniej wartości atrybutu. Przykładem takiego atrybutu jest zmodyfikowana nazwa tego samego produktu. • Typ 2: Utworzenie nowego rekordu w tablicy wymiarów – nowa wartość wymiaru otrzymuje nowy indeks w tablicy hurtowni, wraz z nowym opisem. • Typ 3: Umieszczenie nowego opisu w dodatkowych polach rekordu tablicy wymiarów – w tym przypadku poprzedni i nowy opis atrybutu egzystuje w różnych polach tego samego rekordu tablicy wymiarów. Zarządzając tablicami wymiarów możesz posłużyć się każdą z powyższych technik. Wszystkie powyższe techniki zakładają posiadanie wiedzy o tym, że poszczególne wymiary zostały zmienione. Najczęściej stosowaną, zapewniającą najlepsze efekty jest technika typu 2. Po przeprowadzeniu ładowania jednej z wybranych tablic wymiarów: statycznej i zmiennej musisz przeprowadzić ekstrakcję pozostałych wymiarów. Jest to realizowane w oparciu o doświadczenia uzyskane w dotychczasowych działaniach. Niektóre tablice wymiarów są znacznych rozmiarów i ich ekstrakcja charakteryzuje się cechami wspólnymi z ekstrakcją dużych tablic faktów. Ładowanie tablic faktów W proces ekstrakcji musisz uwzględnić podział na ładowanie pierwsze i przyrostowe. Ładowanie pierwsze zakłada przeniesienie do nowo tworzonej hurtowni danych historycznych i aktualnych. Ekstrakcja danych historycznych to proces ładowania i transformacji dużych zbiorów informacji. Ładowanie przyrostowe (zwane też odświeżaniem) to przeniesienie do istniejącej hurtowni danych aktualnych, na bieżąco zbieranych w systemach transakcyjnych. Mapa czasu ID_czasu Kod_czasu Tablica faktów ID_czasu ID_produktu ID_magazynu Warto ść Ilo ść Mapa produktu ID_produktu Kod_produktu Mapa magazynu ID_magazynu Kod_magazynu Skorygowana tablica faktów Zamiana ID na kod Zamiana ID na kod Zamiana ID na kod Kod_czasu Kod_produktu Kod_magazynu Warto ść Ilo ść Ładowanie danych do hurtowni Rys. 2.. Proces przekształcania tablic faktów. Ładowanie danych historycznych Pierwsze ładowanie oznacza zebranie danych historycznych, czasami pochodzących z wielu źródeł (dodatkowym utrudnieniem może być fakt przechowywania tych danych na nośnikach archiwizacyjnych np. taśmach). Proces przetwarzania tablic faktów ilustruje rys.2. Tablice faktów muszą odnosić się do indeksów hurtowni, zawartych w tablicach wymiarów. Podczas przetwarzania tablic wymiarów zostaną utworzone nowe kody wartości atrybutów każdego z wymiarów. Indeksy w źródłowych tablicach systemów transakcyjnych należy odpowiednio przekształcić na nowe kody. Strona 9/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I Cały proces ekstrakcji należy tak kontrolować, aby w tablicy faktów nie znalazły się wartości kodów, których nie ma w tablicy wymiarów. Sprawdzenia tego należy dokonywać programowo, a nie z wykorzystaniem wbudowanych mechanizmów relacyjnej bazy danych, jakimi są więzy integralności. Postępowanie takie jest wskazane, ponieważ ładowanie każdego rekordu pociąga za sobą jednocześnie sprawdzenie więzów integralności, co z kolei wydłuża czas działania. Agregacja Końcowym etapem ładowania danych do hurtowni jest agregacja danych. Rekordy w tablicach agregacji tworzone są na podstawie już wygenerowanych tablic faktów. Problem pojawia się, gdy ilość danych do agregacji jest bardzo duża. Nie możesz wówczas zagregować wszystkich danych, a jedynie te, które zostały załadowane podczas ostatniego ładowania. Masz tu do czynienia z agregacją przyrostową. Problemu nie możesz łatwo rozwiązać, gdy dane z ostatniego ładowania obejmują nie tylko informacje z ostatniego okresu. Gdy danych przyrostowych jest dużo i sięgają zapisów historycznych, należy przeprowadzić pełną agregację. Przy wyborze struktur agregujących jako projektant musisz kierować się następującymi przesłankami: • tworzenie agregatów powinno wspomagać wykonanie raportów, • tworzenie agregatów powinno wspomagać odpowiedzi na pytania użytkowników. Innym zagadnieniem jest dobór narzędzi, z użyciem których agregacja będzie realizowana oraz utrzymywanie agregatów. Jeżeli wykorzystasz tutaj mechanizm bazy danych, pociąga za sobą uruchomienie mechanizmów transakcyjnych: logowania, tworzenia rejestrów transakcyjnych itp. Jednak realizacja struktur agregujących w oparciu o perspektywy zmaterializowane (Oracle, Informix Red Brick) pozwala na automatyczną (bez udziału operatora) aktualizację struktur bezpośrednio po wypełnieniu struktur bazowych. Odtwarzanie – powtórne ładowanie Jeśli w trakcie ładowania danych wystąpi błąd, to jednym z możliwych sposobów postępowania jest cofnięcie całej operacji i powtórzenie jej od nowa. Lepszym rozwiązaniem jest jednak kontynuowanie ładowania od miejsca, w którym zostało przerwane. W tym celu musisz rozpoznać, do jakiego miejsca ładowanie było poprawne i nie wymaga powtarzania. Niektóre algorytmy wznowienia ładowania wykorzystują śledzenie poprawności ładowania i wymagają dodatkowego narzutu na operacje: ładowania, specyficznych transformacji danych lub wysokich kosztów odtwarzania danych. Akcja wznowienia procesu ekstrakcji polegająca na dokończeniu przerwanego procesu ładowania danych nazywa jest odtwarzaniem. Jeżeli rozważysz tylko błędy na poziomie systemowym (np. błąd RDBMS, błąd oprogramowania, brak miejsca na dysku) i przyjmiesz, że jeśli w jednym z procesów wystąpił błąd, ładowanie danych zostanie wstrzymane, to jedynymi danymi stanowiącymi podstawę wznowienia procesu ładowania są dane załadowane do hurtowni oraz dane źródłowe. Stosowane są koncepcje postępowania - metody odtwarzania tj.: • Metoda podziału danych wejściowych (ang. batching) - dane wejściowe dzielone są na bloki danych (ang. batch) przetwarzane sekwencyjnie, blok po bloku. W razie przerwania procesu ekstrakcji odtwarzanie jest wznawiane od uszkodzonego bloku, pozostałe poprawnie załadowane bloki nie wymagają powtórnego przetwarzania. • Metoda kopii migawkowych i punktów powrotu - opisuje sposób tworzenia i wykorzystania okresowych kopii migawkowych (ang. snapshots) przetwarzanych danych oraz punktów powrotu (ang. savepoints). W razie przerwania ekstrakcji, każda transformacja danych wznawia swoje przetwarzanie od ostatniego punktu powrotu. Strona 10/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I • Metoda podziału procesu ekstrakcji (ang. staging) - polega na dekompozycji procesu ekstrakcji na powiązane logicznie grupy podprocesów. Dane wyjściowe danej grupy są zapisywane i jednocześnie podawane na wejście kolejnej grupy podprocesów. Odtwarzanie polega na restarcie grupy podprocesów obejmujących wcześniej wykonane kopie danych wejściowych tej grupy. • Metoda powtarzania procesu ekstrakcji od początku (ang. redo) – polega na wznowieniu od samego początku każdego przerwanego procesu ekstrakcji, natomiast proces ładujący dane do hurtowni filtruje przetworzone już krotki tak, aby do bazy hurtowni nie trafiały dane już tam zapisane przed wystąpieniem przerwania. • Metoda odtwarzania Design-Resume (DR) - opisuje zmodyfikowaną metodę odtwarzania typu Redo. Algorytm DR wykorzystuje dane już przetworzone i załadowane do hurtowni danych przez przerwany proces ekstrakcji eliminując potrzebę powtórnego przetwarzania wszystkich danych wejściowych. Dane te są wykorzystywane w czasie filtrowania danych wejściowych i danych przetwarzanych przez wznowiony proces ekstrakcji. Takie podejście zasadniczo skraca czas odtwarzania. Odrębnym zagadnieniem jest obsługa wyjątków, czyli sytuacji, w których wykryto błąd danych źródłowych. Zwykle procedura ekstrakcji, która rozpoznała, że rekord danych przygotowany do załadowania do hurtowni nie spełnia kryteriów poprawności, zapisuje ten rekord w innym zbiorze i sygnalizuje administratorowi procesu ekstrakcji wystąpienie niepoprawnej sekwencji danych wejściowych. Zarządzanie ekstrakcją Proces ekstrakcji danych nie jest zadaniem jednorazowym. Dlatego bardzo ważne jest zorganizowanie zarządzania ekstrakcją przyrostową (okresowe odświeżanie danych), jak i uzupełniającą (ładowanie danych, które nie zostały umieszczone w hurtowni z powodu wykrycia błędów ładowania). Z praktyki wiadomo, że automatyczna kontrola procesu ekstrakcji powinna obejmować: • • • • • • zdefiniowanie zadań do wykonania i określenie zależności między nimi, zaplanowanie wykonania zadań, monitorowanie i rejestrowanie wyników wykonania procesów elementarnych, obsługę wyjątków i błędów, szeregowanie procesów – kończący się proces powinien zainicjować następny, informowanie o zakończeniu procesów i zadań. Dla przeprowadzenia automatycznej ekstrakcji wykorzystuje się najczęściej wbudowane w system mechanizmy automatycznego uruchamiania zadań. Zastosowanie specjalizowanych narzędzi ekstrakcji, które mają wbudowane mechanizmy kontroli wykonania zadań, znacznie upraszcza zarządzanie i automatyzację procesu ekstrakcji. Przetwarzanie równoległe Równoległe przetwarzanie stwarza ogromne możliwości zwiększenia wydajności procesu ETL. Zadania równoległe wykorzystują różne zasoby: procesor, pamięć, sieć, porty wejścia/wyjścia. Dlatego istotne jest wyodrębnienie niezależnych zadań, które wykorzystują różne zasoby. Jeśli jakaś operacja musi być poprzedzona wykonaniem innej, należy uwzględnić ten porządek wykonania – samo zrównoleglenie zadań nie zawsze powoduje przyśpieszenia wykonania ekstrakcji. Zagadnienie ekstrakcji równoległej możesz rozważać w następujących aspektach [4]: • Wykorzystanie wbudowanych mechanizmów przetwarzania równoległego danych większości relacyjnych baz danych - szczególnie indeksowanie danych może być realizowane równolegle: każdy procesor działa na swojej niezależnej części bazy; Strona 11/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I • Zastosowanie mechanizmów bliźniaczych baz danych - utrzymujemy dwie kopie hurtowni: jedną do ładowania danych, drugą do realizacji zapytań. Jeden serwer wykonuje ekstrakcję danych, drugi obsługuje zapytania. Po zakończeniu danego etapu ładowania, serwery i dane są automatycznie przełączane na hurtownię załadowaną aktualnymi danymi. Na drugim serwerze może się rozpocząć następne ładowanie; • Zastosowanie mechanizmów bliźniaczych tabel - serwer bazy danych jest jeden, natomiast utrzymujemy dwie kopie tabel. Ładowanie odbywa się do jednej tabeli zwanej tablicą ładowania, a zapytania są kierowane do tablicy zapytań. Po załadowaniu nowych danych do tablicy ładowania, następuje zmiana jej nazwy na tablicę zapytań - poprzednia tablica zapytań jest natomiast usuwana. Przykładowe rozwiązanie Twoim zadaniem jest dokonanie ekstrakcji danych z pliku tekstowego. Plik jest w następującym formacie: Imie Nazwisko DataUr Jan Kowalski 1956 Twoim zadaniem będzie dokonanie ekstrakcji danych z pliku tekstowego przy użyciu pakietu Integration Services do tabeli bazy SQL Server 2008. Po pierwsze w aplikacji Business Inteligence Development Studio tworzysz nowy projekt przy użyciu schematu Integration Services Project. Następnie W zakładce Data Flow przeciągasz komponent Data Source – Flat file source i definiujesz go odpowiednio aby wskazywał na nasz plik źródłowy z danymi. Następnie aby odpowiednio rozdzielić dane musisz użyć kombinacji komponentów transformujących np Derrived Column oraz Conditional Split i przekazujesz dane do komponentu Data Destignation – SQL Server Destination. Dokładny opis rozwiązania podobnego problemu, oraz bardziej skomplikowanych zagadnień omówiony został w podstawowej części laboratorium. Porady praktyczne Uwagi ogólne • Pamiętaj, że przed implementacją konieczne jest drobiazgowe zaprojektowanie procesu ETL. (Szacuje się, że okoła 80% eksploatowanych hurtowni danych jest mało przydatna z powodu nieefektywnego procesu ETL. • Bardzo dokładnie sprawdzaj efekty poprawnego procesu ETL – poprawne wykonanie procesu wcale nie znaczy otrzymania prawidłowych wyników. • Pamiętaj o mechanizmach odtwarzania procesu ETL dla aktywnych hurtowni danych. Uwagi dla studenta Jesteś przygotowany do realizacji laboratorium jeśli: • Rozumiesz ideę i zasady tworzenia procesu ETL • Rozumiesz różnicę między zwykłą migracją danych a procesem ETL Pamiętaj o zapoznaniu się z dodatkowymi informacjami z podanych niżej źródeł. Jeżeli coś jest dla Ciebie niejasne bądź dociekliwy i odszukaj dodatkowe informację, które pogłębią twoją wiedzę. Strona 12/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I Dodatkowe źródła informacji 1. Bruckner R., List B., Schiefer J.: Striving Towards Near Real-Time Data Integration for Data Warehouses. DaWaK 2002 pp. 317-32 2. Bruckner R., Tjoa A.M.: Capturing Delays and Valid Times in Data Warehouses Towards Timely Consistent Analyses. Journal of Intelligent Information Systems, 19,2, 2002. 3. Galhardas H., Florescu D., Shasha D., Simon E.: Ajax: An Extensible Data CleaningTool. In Proc. ACM SIGMOD Intl. Conf. On the Management of Data, Teksas (2000). 4. Rahm E., Hai Do H., Data Cleaning: Problems and current approches, Bulletin of the Technical Committee on Data Engineering, 23/2000 5. Schrefl, M., Thalhammer, T.: On Making Data Warehouses Active. Proceedings of the 2nd International Conference DaWaK, Springer, LNCS 1874, 2000. 6. Vassiliadis P., Simitsis A., Georgantas P., Terrovitis M.: A Framework for the Design of ETL Scenarios. CAiSE 2003. 7. Vassiliadis, P. A. Simitsis, S. Skiadopoulos. Modeling ETL Activities asGraphs. InProc. 4th Intl. Workshop on Design and Management of Data Warehouses, Canada, (2002). 8. Vassiliadis, P., Simitsis, A., Skiadopoulos S.: Conceptual Modeling for ETL Processes. DOLAP 2002. 9. Galhardas H., Florescu D., Shasha D., Simon E.: Ajax: An Extensible Data CleaningTool. In Proc. ACM SIGMOD Intl. Conf. On the Management of Data, Teksas (2000). 10.Rahm E., Hai Do H., Data Cleaning: Problems and current approches, Bulletin of the Technical Committee on Data Engineering, 23/2000 11.Scalzo, B.: Oracle DBA guide to data warehousing and star schemas., NJ: Prentice Hall. 2003. 12.Labio W., Wiener J., Garcia-Molina H., Gorelik V.: Efficient Resumption of Interrupted Warehouse Loads, SIGMOD Conference, 2000. 13.Raden N.: Real time: get Real. Take the idea of a real-time data warehouse with a grain of salt, then realize the possibilities. Intelligent Enterprise, vol. 6, no.10, 2003. 14.Rosana L. de B. A. Rocha, Cardoso L., Souza J.: An Improved Approach in Data Warehousing ETLM Process for Detection of Changes in Source Data. SBBD 2003, pp. 253-266. 15.Gorawski M., Ciepluch M.: Ocena wydajności komponentów systemu przyrostowej ekstrakcji danych ETL(δ). Bazy danych. Struktury, algorytmy, metody. Praca zbiorowa. Architektura, metody formalne i eksploracja danych. Red. St. Kozielski [i in.]. Warszawa: Wydaw. Komunikacji i Łączności, 2006, s. 289-298. 16.Gorawski M., Ciepluch M.: Przyrostowa ekstrakcja danych ETL (δ): aspekty implementacyjnowydajnościowe. Bazy danych. Nowe technologie. Praca zbiorowa. [T. 1]: Architektura, metody formalne i zaawansowana analiza danych. Red. St. Kozielski [i in.]. Warszawa: Wydaw. Komunikacji i Łączności, 2007, s. 115-124. 17.Gorawski M., Ciepluch M.: Przyrostowa ekstrakcja danych ETL(δ). Studia Informatica 2006 vol. 27 nr 1, s. 27-40. 18.Gorawski M., Czmer J.: Rozbudowa silnika ekstrakcji danych rtetl o mechanizm detekcji zmian źródłowych danych strumieniowych. Modele i zastosowania systemów czasu rzeczywistego. Praca zbiorowa. Pod red. Z. Mazura, Z. Huzara. Warszawa: Wydaw. Komunikacji i Łączności, 2008, s. 220-231 19.Gorawski M., Piekarek M.: Rozproszony proces ekstrakcji danych z protokołem SimpleRMI. Bazy danych. Modele, technologie, narzędzia. Praca zbiorowa. T. 2: Analiza danych i wybrane Strona 13/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I zastosowania. Red. S. Kozielski [i in.]. Warszawa: Wydaw. Komunikacji i Łączności, 2005, s. 4350. 20.Gorawski M., Piekarek M.: Rozwojowe środowisko ETL/Java Beans (Development environment ETL/JavaBeans). Studia Informatica, 2003, vol. 24, nr 4(56), s. 287-302. 21.Gorawski M., Piekarek M.: Rozwojowe środowisko ETL/JavaBeans wzbogacone o rozproszone sortowanie danych. Współczesne problemy sieci komputerowych. Nowe technologie. Praca zbiorowa. Red.: St. Węgrzyn, B. Pochopień, T. Czachórski. Warszawa: Wydaw. NaukowoTechniczne, 2004, s. 173-180. 22.Gorawski M.: 3 perspektywy procesu ekstrakcji danych. Strategie informatyzacji i zarządzanie wiedzą. Red. Z. Szyjewski, J. S. Nowak, J. K. Grabara. Warszawa: Wydaw. Naukowo-Techniczne, 2004, s. 295-341. 23.Gorawski M.: Charakterystyka procesu ekstrakcji danych (The characteristics of data extraction process). Studia Informatica, vol. 24, nr 4(56), 2003, s 211-232. 24.Gorawski M.: Ekstrakcja i integracja danych w czasie rzeczywistym. Współczesne problemy systemów czasu rzeczywistego. Praca zbiorowa. Red.: A. Kwiecień, P. Gaj. Warszawa: Wydaw. Naukowo-Techniczne, 2004, s. 435-445. 25.Gorawski M.: Laboratorium hurtowni danych poziomu MS SQL SEVER 2005. Metody i narzędzia wytwarzania oprogramowania. Konferencja naukowa, Szklarska Poręba, 14-16 maja 2007. Red. B. Hnatkowska, Z. Huzar. Wrocław: Oficyna Wydaw. Politechniki Wrocławskiej, 2007, s. 583-596. 26.Gorawski M.: Modelowanie procesu ekstrakcji danych (Modeling for extraction data processes). Metody i systemy komputerowe w badaniach naukowych i projektowaniu inżynierskim. IV Krajowa konferencja, Kraków, 26-28 listopada 2003. Materiały konferencyjne. Red.: R. Tadeusiewicz, A. Ligęza, M. Szymkat. Akademia Górniczo-Hutnicza, Politechnika Krakowska, Uniwersytet Jagielloński. Kraków: Oprogramowanie Naukowo-Techniczne, 2003, s. 165-170. 27.Gorawski M.: Praktyczne aspekty projektowania hurtowni danych (Practical aspects of data warehouse design) Studia Informatica, 2003, vol. 24, nr 4(56), s. 189-210. 28.Gorawski M., Marks P., Gorawski M.J.: Collecting data streams from a distributed radio-based measurement system.Database systems for advanced applications. DASFAA 2008. 13th International conference, New Delhi, India, March 19-21, 2008. Eds: J. R. Haritsa, R. Kotagiri, V. Pudi. Berlin: Springer, 2008, Lecture Notes in Computer Science. vol. 4947. s. 702-705. Laboratorium podstawowe Problem 1 (czas realizacji 30 min) Dostałeś zlecenie na przygotowanie danych do zaprojektowania hurtowni danych w dziekanacie. Dane przechowywane są obecnie w plikach tekstowych. Twoim zadaniem jest uporządkowanie i oczyszczenie danych oraz przeniesienie ich do nowego pliku tekstowego. Nauczysz się jak używać transformacji (a) Podziału Warunkowego (Conditional Split) w celu wydobycia potrzebnych wierszy ze źródła, oraz (b) Formatowania Kolumny (Derived Column), w celu uporządkowania wydobytych wierszy. Zadanie Tok postępowania 1. Zapoznanie się z plikiem płaskim • Przy użyciu Eksploratora Windows przejdź do folderu podanego przez prowadzącego np: C:\HD\UID Strona 14/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Studenci_Source. txt Moduł I Proces Ekstrakcji Danych (ETL) I • Otwórz plik StudenciSource.txt. Plik zawiera listę nazwisk studentów, oraz numery ich indeksów. Dane są przechowywane w surowej formie, plik zawiera nagłówek oraz pusty wiersz przed właściwymi danymi. W tym ćwiczeniu dokonujemy ekstrakcji jedynie imienia i nazwiska studenta; czyli 1) odrzucenie wszystkich wierszy zaczynających się znakiem spacji oraz 2) odrzucenie wszystkich znaków znajdujących się za znakiem otwarcia nawiasu w każdym z wierszy • Zamknij plik StudenciSource.txt. Jeżeli plik nie zostanie zamknięty, przy uruchomieniu pakietu wystąpi błąd. 2. Tworzenie projektu Integration Services o nazwie Studenci • Wybierz zakładkę Data Flow (przepływu danych). • Z menu głównego wybierz File -> New -> Project. • Z listy Project Types wybierz Business Intelligence Projects. Projects Jeżeli na komputerze jest już zainstalowany Microsoft Visual Studio w wersji 2003, 2005 lub 2008, to oprócz wspomnianego Business Intelligence Projects na liście może pojawić się więcej niż jeden typ projektu. • W Templates wskaż Integration Services Project. • W polu Name podaj nazwę projektu (np. Studenci). Studenci • Kliknij OK. Jeżeli ukaże się powitalny wizard zamknij go. 3. Tworzenie zadania przepływu danych o nazwie Importuj • Wybierz zakładkę Data Flow (przepływu danych). • Wybierz link znajdujący się na środku strony, aby dodać nowe zadanie. • W panelu właściwości (Properties) ( ) zmień wartość wiersza Name na Importuj Studentów Studentów 4. Dodanie narzędzia Flat File Source • Otwórz Panel Narzędzi (Toolbox) ( ) i zapoznaj się z dostępnymi dostępn narzędziami Obiekty narzędzi zorganizowano w trzy główne grupy: Źródła Przepływu Danych (Data Flow Sources),Transformacje Przepływu Danych (Data Flow Transformations), i Źródła Wynikowe Przepływu Danych (Data Flow Destinations). • Przeciągnij Flat File Source (Źródłowy Plik Płaski) z Panelu Narzędzi do zakładki przepływu danych Zwróć uwagę na czerwoną ikonę na tym elemencie. Usługi Integrujące dodają ten znacznik do obiektu, aby powiadomić o konieczności uruchomienia Menadżera Połączeń (Connection Manager), który pozwoli zadaniu połączyć się z zewnętrznym źródłem danych. 5. Dodanie Menadżera Połączeń o nazwie „Źródło • Kliknij podwójnie na element Flat File Source,, a następnie wybierz przycisk New, aby otworzyć Kreatora Połączeń. • Wprowadź nazwę dla menadżera połączeń: Źródło Studentów. Studentów Strona 15/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Studentów” Moduł I Proces Ekstrakcji Danych (ETL) I • Użyj przycisku Przeszukaj (Browse), ( ), aby wybrać plik źródłowy z lokacji podanej prze prowadzącego np: C:\HD\UID \StudentSource.txt StudentSource.txt • Ustaw liczbę Opuszczonych Wierszy Nagłówka (Header (Header rows to skip) skip o wartości 1. • Zaznacz pole Nazwy kolumn w pierwszym wierszu danych (Column ( names in the first data row). row • Wybierz Wybi Kolumny (Columns)) w liście z lewej strony. Tutaj można zobaczyć podgląd wierszy pobieranych z pliku. Obecnie jest to jedna kolumna zdefiniowana jako ako domyślna. Należy wybrać zakładkę kolumny (Columns) aby łącznik mógł zdefininiować kolumny. Można również zmienić tu ograniczniki wiersza i kolumny, jeżeli jest to potrzebne. Następnie można otworzyć zakładkę Zaawansowane (Advanced) aby zmodyfikować osobno bno każdą z kolumn. • Wybierz zakładkę Zaawansowane (Advanced Advanced). Tutaj możesz wybrać właściwości dla każdej z kolumn. • Zmień nazwę kolumny 0 na Student. • Zmień OutputColumnWidth na 250. • Wybierz OK a następnie Podgląd (Preview Preview) aby zobaczyć wyniki. • Wybierz OK, aby zamknąć okno edytora Menadżera Połączeń. 6. Mapowanie Connection Manager (Menadżera połączeń) do źródła danych (Data Adapter) 7. Dodanie transformacji Conditional Split (Podział Warunkowy) • W Flat File Source Editor (Edytorze Źródła Pliku Płaskiego) wybierz Colum (kolumny). Columns Mapowanie pomiędzy kolumną zewnętrzną (dla MenadżeraPołączeń) oraz kolumną wyjściową (dla Źródła Danych) jest generowane automatycznie. Teraz mamy Źródło Danych powiązane z Menadżerem Połączeń a całość gotowa jest do użycia w transformacjach. Można zauważyć, że proces nie jest zakończony, dopóki nie zmapujemy kolumn pomiędzy Menadżerem Połączeń oraz Źródłem Danych. W pierwszym obowiązkowym kroku następuje oddzielenie wierszy, które mają zostać zachowane, oraz wierszy, które mają zostać odrzucone. W tym przykładzie odrzuca się wiersze zaczynające się pustą przestrzenią (spacją – Nie posiadamy Nazwiska studenta, wyłącznie znie nr Indeksu). Najlepszym narzędziem do otrzymania tego efektu jest transformacja Podział Warunkowy (Conditional Split). Narzędzie to pobiera dane wejściowe i zależnie od warunku kieruje dane na właściwe wyjście. • Na zakładce Data Flow (Przepływ Danych),, przeciągnij z Toolbox’a (Panelu Narzędzi) Narzędzi narzędzie Conditional Split (Podział Warunkowy). Warunkowy) • Wybierz Flat File Source (Źródłowy Plik Płaski) i przeciągnij jego zieloną strzałkę (Wyjście) do Conditional Split (Podziału Warunkowego). Warunkowego) • Kliknij podwójnie na Conditional Split. • Zmień Default Output Name na Odrzucone Wiersze. Wiersze Strona 16/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I Wszystkie wiersze niespełniające warunku przekazywane są na domyślne wyjście, warto więc nadać mu nazwę. W środkowej części edytora (tabela) stwórz dodatkowe wyjście (wpisz nazwę wyjścia do komórki Output Name): • Nazwa wyjścia (Output ( Name): Poprawne Wiersze ze. • W Podziale Warunkowym otrzymujesz kilka kanałów wyjściowych (zielone strzałki). Nadanie im nazw pozwala na prostszy wybór prawidłowego wyjścia. wyjścia • Condition (Warunek): SUBSTRING([Student],1,1) != " " Warunek ten ma na celu stwierdzenie, czy pierwszym znakiem wiersza jest spacja. Jeżeli tak nie jest, (czyli wiersz zawiera imię i nazwisko studenta wraz z jego oceną a nie jedynie numer indeksu), wiersz zostanie wysłany na wyjście nazwane Poprawne Wiersze. Wiersze Pomocą w pisaniu warunków są foldery dostępne w górnej części edytora transformacji Podział Warunkowy. Po ich rozwinięciu można zobaczyć, jakie funkcje są dostępne oraz zapoznać się z ich składnią. Aby uzyskać na ten temat więcej wiadomości można odwołać się do książki on-line line pod tytułem “SSIS Expression Reference” • Wybierz OK. i zamknij edytor 8. Dodanie transformacji Derived Column (Formatowanie Kolumny) przy użyciu wyjścia Poprawne Wiersze z transformacji Conditional Split Następnym krokiem jest odrzucenie enie niepotrzebnych danych z wierszy, które chcemy zatrzymać. • Przeciągnij narzędzie Derived Column (Formatowanie Kolumny) z Toolbox’a (Panelu Narzędzi). Transformacja Formatowanie Kolumny tworzy z istniejącej kolumny nową kolumnę. • Przeciągnij zieloną strzałkę strzałkę wyjścia Podziału Warunkowego do Formatowania Kolumny. Kolumny • Wybierz Poprawne Wiersze z listy możliwych wyjść i wybierz OK. • Kliknij podwójnie zadanie Derived Column (Formatowanie Kolumny), aby otworzyć edytor transformacji. transformacji • Wybierz folder Columns (kolumny) i przeciągnij kolumnę student do pierwszego wiersza listy Derived Column (Formatowanych Kolumn). Kolumn) • Ustaw opcję Derived Column: Replace ‘Student’. Można zachować wynik warunku w nowej kolumnie bądź też je nadpisać. W tym wypadku źródło nie jest potrzebne, więc nadpisujemy dane. Strona 17/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I • Zmień warunek Formatowanej Kolumny na: na SUBSTRING([Student],1,FINDSTRING([Student],"(",1)) • Wybierz OK. 9. Użycie opcji zaawansowanych, aby zobaczyć własności transformacji Derived Column • W panelu Data Flow (Przepływ Danych) kliknij prawym przyciskiem myszy (ppm) na Derived Column (Formatowaną Kolumnę) i wybierz opcję Show Advanced Editor. Tu możesz przeglądać oraz zmieniać zaawansowane właściwości komponentu. • Wybierz zakładkę Input and Output Properties. • Rozwiń Derived Column Input, rozwiń Input Columns, Columns i wybierz kolumnę Student. • Zamknij edytor. 10. Dodanie Flat File Destination (Źródła wynikowego jako Plik Płaski) wraz z nowych Menadżerem Połączeń Eksportuj Studentów • Przeciągnij Flat File Destination (Źródła wynikowego jako Plik Płaski) Toolbox’a (Panelu Narzędzi). • Wybierz Derived Column (Formatowanie Kolumny) i przeciągnij zieloną ziel strzałkę wyjścia Flat File Destination. • Kliknij podwójnie na Flat File Destination i wybierz przycisk New, aby stworzyć nowy Connection Manager (Menadżer Połączeń). • Wybierz domyślny format pliku: Delimited (Odgraniczany). • Wpisz nazwę Menadżera Połączeń: Połącz Eksportuj Studentów. Studentów • Wpisz nazwę pliku wraz ze ścieżką dostępu np: C:\HD\UID \StudenciDestination.txt StudenciDestination.txt. • Wybierz OK. Zwróć uwagę na pole informujące o nadpisaniu danych w pliku wynikowym. Pole to powinno zostać zaznaczone. • W edytorze Flat File Destination Editor (Źródła Wynikowego jako Plik Płaski) wybierz Mappings (Mapowania), aby powiązać kolumny wejściowe z wyjściowymi. • Zamknij edytor. 11. Uruchomienie pakietu integracji danych • Kliknij ppm na powstały pakiet i wybierz Execute Package. Package • Z menu Debug wybierz Stop Debugging. • Otworz plik C:\HD\UID\Studenci Studenci Destination.txt, Destination.txt aby sprawdzić czy dane zostały prawidłowo oczyszczone (plik powinien zawierać listę imion i nazwisk studentów). • Widzimy błąd, kolumna zawiera oprócz imienia i nazwiska również znak spacji i nawias, aby naprawić ten błąd należy zmodyfikować następująco warunek w komponencie Formatowana Kolumna (Derrived ( Column): SUBSTRING([Student],1,FINDSTRING([Student],"(",1) - 2) • Kliknij ppm na powstały pakiet, wybierz Execute Package i ponownie sp sprawdź plik wynikowy. Strona 18/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I Problem 2 (czas realizacji 15min) - kontynuacja problemu 1 W dalszej części ci zlececia z problemu drugiego otrzymałeś otrzymałe zadanie przeniesienia danych nie tylko do plików tekstowych, lecz także tak do bazy SQL Server 2008. Aby było to możliwe mo użyjesz transformacji Multiprzesyłu (Multicast). ( Dodasz również zadanie Wykonania SQL (Execute ( SQL Task) aby oczyścić tabelę ę wynikową wynikow przed załadowaniem danych, aby możliwe moż było uruchamianie pakietu kilka razy bez konieczności konieczno ręcznego czyszczenia tabeli. Zadanie 1. Stworzenie nowej bazy danych SQL Server o nazwie Studenci z Simple Recovery Model (Modelem Prostego Odtwarzania) Tok postępowania Aby użyć danych, które właśnie stworzyłeś jako źródło przeszukiwania rozmytego (Problem.1/2 Moduł2), dane muszą znajdować się w tabeli a nie w pliku płaskim. Zamiast usuwać obiekt Źródło Wynikowe jako Plik Płaski, dane wyjściowe mogą zostać przesłane do dodatkowego źródła wynikowego. Trzeba jedynie stworzyć bazę danych, która przechowa wyniki. • W Object Explorer (Eksploratorze Obiektów) w SSMS (SQL ( Server Management Studio), Studio kliknij ppm na folder Databases (Bazy Danych) i wybierz New Database (Nową Bazę Danych). SSMS musi być podłączony do serwera Baz Danych (DataBase Engine). Częstym błędem jest połączenie do np. Analysis Servces Ser lub Reporting Services. • Wprowadź nazwę bazy danych: Studenci. • Na stronie Options (Opcje), Zmień model Odzyskiwania na Simple (Prosty). 2. Dodanie transformacji Multicast (Multiprzesyłu) pomiędzy komponentami Derived Column (Formatowana Kolumna) a Flat File Destination Płaski (Źródło Wynikowe jako Plik) Teraz można przesłać wyniki z komponentu Derived Column do dwóch źródeł wynikowych pliku tekstowego oraz nowostworzonej bazy danych. • W module SSBIDS, przeciągnij narzędzie Multicast (Multiprzesył) z Toolbox ‘a (Panelu Narzędzi) do zakładki Data Flow (Przepływ Danych) w pakiecie Studenci. • Multicast (Multiprzesył) podobnie jak Conditional Split (Podział Warunkowy) ma wiele wyjść z tym, że w Multicast (Multiprzesyle) na każdym z wejść znajdują się dokładnie te same dane. • Usuń połączenie pomiędzy Derived Kolumn (Formatowaną Kolumną) a Flat File Destination (Źródłem wynikowym). • Przeciągnij zieloną strzałkę wyjścia Derived Column (Formatowanej Kolumny) do Multicast (Multiprzesyłu). • Przeciągnij zieloną strzałkę wyjścia Multicast (Multiprzesyłu) do Flat File Destination (Źródła Wynikowego jako Plik Płaski). Dopóki nie zmienia się “rodowodu” kolumn, możesz przerywać oraz dodawać kolejne przepływy danych bez ponownego mapowania. Jeżeli jednak w jakikolwiek sposób modyfikuje się kolumny należy usunąć poprzednie mapowania i stworzyć nowe. 3. Dodanie SQL Server Destination (Źródła • Przeciągnij SQL Server Destination (Źródła Wynikowego jako SQL Server) z Toolbox ‘a (Panelu Narzędzi). • Przeciągnij zieloną strzałkę wyjścia Multicast (Multiprzesyłu) (Multi do SQL Server Destination (Źródła Wynikowego jako SQL Server). Server) Strona 19/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Wynikowego jako SQL Server) wraz z nowym Menadżem Połączeń podłączonym z bazą danych Studenci i nową tabelą, Imie i Nazwisko Moduł I Proces Ekstrakcji Danych (ETL) I • Kliknij podwójnie SQL Server Destination (Źródła Wynikowego jako SQL Server) następnie wybierz New, aby stworzyć nowego Menadżera Połączeń. • Wybierz New na wyborze połączenia do danych (Select Data Connection aby zdefiniować nowe połączenie: Connection), • Ustaw local SQL Server (lokalny serwer SQL) jako źródło danych, wybierz Windows Authentication, i wybierz bazę danych Studenci. • Wybierz przycisk Test Connection,, aby sprawdzić połączenie. • Dwukrotnie Dwukrot wybierz OK. • Wybierz New w SQL Destination Editor (Use (Use a table or view), view aby stworzyć nową tabelę. • Zmień nazwę tabeli, na ImieNazwisko i wybierz OK. Menadżer Połączeń stworzy nową tabelę, w której brak jest pola nadpisania, które było obecne przy Pliku Płaskim. W związku z tym niezbędne jest dodanie dodatkowego komponentu czyszczącego tabelę, co ujęte jest w dalszej części ćwiczenia. • Wybierz Mappings (Mapowania) w SQL Destination Editor po to, aby ustawić prawidłowe mapowania pomiędzy kolumną wejściową i wyjściową. • Wybierz OK i zamknij edytor. 4. Dodanie Execute SQL Task (Wykonaj Zadania SQL) Następnym krokiem jest dodanie zadania czyszczącego tabelę wynikową przed wykonaniem zadania przepływu danych. • Na zakładce Control Flow (Kontroli Przepływu) dodaj Execute SQL Task (Wykonaj Wykonaj Zadania SQL): • Nazwa WyczyśćImięNazwisko. • Połączenie: localhost.Studenci. • Zadanie SQL (SQL Statement): Delete from ImieNazwisko. Imi 5. Dodanie Precedence Constraint (Wymuszenia Pierwszeństwa), aby uruchomić komponent Wyczyść ImieNazwisko przed Importuj Studentów • Przeciągnij strzałkę wyniku z elementu WyczyśćImieNazwisko Wyczy do Importuj Studentów 6. Uruchomienie pakietu integracji danych i sprawdzenie wyników • Kliknij ppm na pakiet i wybierz Execute Package. • Z menu Debug wybierz Stop Debugging. • Za pomocą SSMS, rozwiń Databases,, następnie Studenci, oraz rozwiń tabele. Możliwe, że koniecznym będzie odświeżenie, aby tabela ImieNazwisko była dostępna. • Kliknij Klik ppm na tabelę ImieNazwisko, i wybierz Open Table aby potwierdzić poprawność danych obecnych w tabeli. Strona 20/21 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł I Proces Ekstrakcji Danych (ETL) I Laboratorium rozszerzone Zadanie 1 (czas realizacji 30 min) Prosty projekt na laboratorium podstawowym zakłada oczyszczenie danych ograniczające się do otrzymania kolumny Imię nazwisko. Twoim zadaniem będzie stworzenie zarówno w pliku wynikowym jak i w naszej bazie docelowej dodatkowej kolumny, która będzie zawierać Numer Indeksu. Wiedza przedstawiona w laboratorium podstawowym powinna zostać dokładnie przyswojona i zastosowana w rozwiązaniu. Zauważ, że modyfikacje należy zacząć od odpowiedniego warunku w komponencie Derived column, pamiętaj również, że po każdej zmianie rodzaju kolumn należy zmodyfikować ich mapowanie oraz Connection Manager (Menadżer połączeń). Zadanie 2 (czas realizacji 60 min) Twoim zadaniem jest zaprezentowanie uzyskanych kompetencji podczas projektowania pilotowego wdrożenia prostej hurtowni danych w dziekanacie twojej uczelni. W katalogu z danymi znajdziesz pliki potrzebne do wykonania tego zadanie. Pierwszym twoim krokiem powinno być uruchomienia SQL Server Management studio, w którym utworzysz nową bazę „System Nauczania”. Następnie wykonaj tu zapytanie SQL „lms_skrypt.sql” dostarczone w pliku danych. To zapytanie stworzy tabele, do których musisz wyeksportować dane załączone w pliku. Przeanalizuj dokładnie tabele i zaprojektuj proces ETL, który pozwoli na wypełnienie nowej bazy odpowiednimi danymi. Strona 21/21 ITA-102 Hurtownie Danych Marcin Gorawski, Michał Jan Gorawski Moduł 2 Wersja 1.0 Proces ekstrakcji danych (ETL) II Spis treści Proces ekstrakcji danych (ETL) II .......................................................................................................... 1 Informacje o module ............................................................................................................................ 2 Podstawy teoretyczne zawiera moduł I pt.: Proces ekstrakcji danych (ETL): część 2. ......................... 3 Laboratorium podstawowe .................................................................................................................. 3 Problem 1 (czas realizacji 25 min) – kontynuacja modułu 1........................................................ 3 Problem 2 (czas realizacji 15min) - kontynuacja problemu 1 ...................................................... 6 Laboratorium rozszerzone ................................................................................................................... 8 Zadanie 1 (czas realizacji 30 min)................................................................................................. 8 Zadanie 2 (czas realizacji 30 min)................................................................................................. 8 Zadanie 3 (czas realizacji 30 min)................................................................................................. 8 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł II Proces ETL II Informacje o module Opis modułu W module tym znajdziesz informacje dotyczące zagadnień związanych z procesem ekstrakcji danych. Poznasz podstawową wiedzę na temat ekstrakcji danych. Zobaczysz, czym jest oraz jak zaprojektować prosty proces ETL (Ekstrakcja, Transformacja i Ładowanie danych) w środowisku SQL Server 2008. Cel modułu Celem modułu jest przedstawienie możliwości użycia pakietu Integration Services, jednego z komponentów SQL Server 2008, przy projektowaniu i implementowaniu procesu ETL o przeciętnej złożoności. W zadaniach ETL tego modułu nacisk położono na proces przeszukiwania rozmytego . Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • wiedział, czym jest oraz jak projektować proces ETL • potrafił zbudować mało złożony proces ETL w SQL Server 2008 • rozumiał mechanikę tworzenia procesów ekstrakcji danych w SQL Server 2008 Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • dobrze orientować się w zagadnieniach z zakresu baz danych • znać zasady pracy w środowisku Visual Studio Mapa zależności modułu Rys. 1 Mapa zależności modułu Strona 2/9 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł II Proces ETL II Podstawy teoretyczne zawiera moduł I pt.: Proces ekstrakcji danych (ETL) I. I Laboratorium podstawowe Problem 1 (czas realizacji 25 min) – kontynuacja modułu 1 Ćwiczenie pokaże e sposób użycia u Sequence Container (Kontenera Sekwencji) służącego słu do łączenia ze sobą grup zadań. zada Zapoznasz się również ze sposobem łączenia łą zmiennych, ze skryptami oraz z kontrolą Precedence Constraint (Wymuszenia Pierwszeństwa).Celem Pierwszeń ćwiczenia jest pokazanie możliwości ści zarządzania zarz kolejnością wykonanie poszczególnych komponentów za pomocą narzędzi Control Flow (Kontroli Przepływu).Prezentowany .Prezentowany jest również równie sposób pisania skryptów w środowisku rodowisku SQL Server 2008 : Integration Services Zadanie 1. Dodanie narzędzia Kontroli Przepływu, Sequence Container (Kontenera Sekwencji) o nazwie Plik Nie Istnieje do przechowania istniejących zadań Tok postępowania Celem tej prezentacji jest sprawdzenie, czy dany plik już istnieje. Jeżeli tak, jedynie część pakietu ma zostać wykonana, jeżeli natomiast plik nie istnieje wykonany musi zostać kompletny pakiet. Za pomocą kontenera sekwencji możliwe jest stworzenie METAprzepływu (większa część przepływu), do którego można wprowadzić sekwencję zadań. Najpierw stworzymy kontener sekwencji dla istniejących zadań, które óre zostaną wykonane tylko, jeżeli plik nie istnieje • Na zakładce Control Flow (Kontrola Przepływu) przeciągnij z Toolbox (Panela Narzędzi) komponent Sequence Container (Kontener Sekwencji) Sekwencji). Kontener sekwencji pozwala przechować zadanie lub grupę zadań, co pozwala na dodanie bądź usunięcie zadania bez konieczności zmiany całego grafu zadań. 2. Dodanie zmiennej PlikIstnieje Potrzebny jest sposób na sprawdzenie czy plik wynikowy istnieje i jeżeli tak jest to przejście do stworzonego właśnie kontenera sekwencji. Pierwszym krokiem jest stworzenie zmiennej pakietu. • Kliknij ppm na zakładkę ControlFlow i wybierz Variables (Zmienne). Okno, które się pojawi może zostać umieszczone z boku ekranu • Wybierz przycisk Add Variable z Panelu Variable. • Name: PlikIstnieje • Data Type: Boolean. 3. Dodanie zadania Skrypt Script Task nazwanego SprawdzPlik Teraz należy nadać wartość zmiennej PlikIstnieje poprzez użycie skryptu. • Z Toolbox (Panelu Narzędzi) przeciągnij komponent Script Task (Skrypt). Kliknij podwójnie na komponent, aby zmienić jego właściwości. Strona 3/9 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł II Proces ETL II Domyślnym językiem skryptu jest Microsoft Visual C# 2008 • Zmień język skryptu na Visual Basic 2008. • Na zakładce General (Ogólne) zmień nazwę na SprawdzPlik. SprawdzPlik • Na zakładce Script (Skrypt) wybierz Edit Script (Edytuj Skrypt) i dodaj następujący kod do funkcji Main(): Try Dim myVariable As Variables Dts.VariableDispenser.LockOneForWrite( "PlikIstnieje", myVariable) myVariable(“PlikIstnieje”).Value = _ System.IO.File.Exists( Dts.Connections( .Connections( “Eksportuj Studentów”).ConnectionString) Dts.TaskResult = ScriptResults.Success Catch Dts.TaskResult =ScriptResults.Failure End Try VariableDispenser należy do zadania, nie do pakietu. Jeżeli obsługujemy wiele zmiennych, każda dodawana jest niezależnie do VariableDispenser przy użyciu LockForRead i LockForWrite oraz jedynie nazwy zmiennej jako argumentu. Nie powoduje to zablokowania zmiennej, lecz dodanie jej do listy zablokowanych. Kiedy zmienne znajdują się w VariableDispenser wywołujemy wywołuje funkcję GetVariables, aby umieścić szereg zmiennych w lokalnej zmiennej (myVariable w tym przypadku). Jeżeli używamy jednej zmiennej funkcja LockOne pozwala na skrócenie kodu. Do testowania istnienia pliku używamy funkcji System.IO. Zamiast wpisywania ścieżki ś dostępu do pliku używamy funkcji connection (odnosi się ona nie bezpośrednio do pliku, ale do menadżera połączeń, który obsługuje dany plik). Zmienna FileFound zawiera wyniki testu. Niezależnie od istnienia pliku zadanie zwróci Success Nie trzeba zwalniać zmiennej na końcu funkcji. Jest to robione automatycznie na końcu pakietu. 4. Dodanie Precedence Constraint (Wymuszenia Pierwszeństwa), aby uruchomić zadanie SprawdzPlik przed zadaniem Plik Nie Istnieje 5. Dodanie Sequence • Przeciągnij zieloną strzałkę wyjścia z komponentu komponentu SprawdzPlik do Plik Nie Istnieje. • Kliknij podwójnie na połączenie (zielona strzałka), aby je edytować : • Evaluation Operation: Expression and Constraint • Expression: @PlikIstnieje == False Użycie symbolu @ przed nazwą zmiennej jest niezbędne aby z niej korzystać. • Wybierz przycisk Test, aby sprawdzić poprawność wyrażenia. Dodanie kontenera na zadania wykonane gdy plik istnieje. Strona 4/9 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł II Proces ETL II Container (Kontenera Sekwencji) o nazwie Plik Istnieje • Na zakładce Control Flow (Kontrola Przepływu) przeciągnij pr z Toolbox (Panelu Narzędzi) komponent Sequence Container. Container • Zmień jego nazwę na: Plik Istnieje 6. Dodanie Precedence Constraint (Wymuszenia Pierwszeństwa), aby uruchomić zadanie SprawdzPlik przed zadaniem Plik Istnieje • Przeciągnij zieloną strzałkę wyjścia z komponentu SprawdzPlik do Plik Istnieje Istnieje. • Kliknij podwójnie na połączenie (zielona strzałka), aby je edytować: 7. Usunięcie pliku wynikowego i dwukrotne uruchomienie pakietu • • • • • Evaluation Operation: Expression and Constraint. • Expression: @PlikIstnieje == True. Usuń plik StudenciDestination.txt. Uruchom pakiet. Jedynie gałąź Plik Nie Istnieje powinna zostać wykonana. Przerwij debugowanie i wykonaj pakiet ponownie. Jedynie gałąź Plik Istnieje powinna zostać wykonana. • Przerwij debugowanie. 8. Wymuszenie wykonania gałęzi Plik Istnieje Teraz jedynie jedna gałąź jest wykonywana, jednakże nawet, jeśli gałąź Plik Nie Istnieje wykona się, gałąź Plik Istnieje również musi się wykonać. Można dodać Wymuszenie Pierwszeństwa pomiędzy kontenerami, aby wymusić wykonanie gałęzi Plik Istnieje. Istnieje Przeciągnij eciągnij zieloną strzałkę wyjścia z komponentu File Plik Nie Istnieje • Prz do Plik Istnieje i kliknij podwójnie na połączenie (zielona strzałka) aby je edytować. • Dla nowego wymuszenia wybierz wymuszenie logical OR. Ponieważ jest więcej niż jedno wymuszenie na kontenerze Plik Istnieje, trzeba określić czy obydwa wymuszenia (logical AND) czy tylko jedno z nich (logical OR) musi być spełnione, aby wykonać zadania w kontenerze. W tym przypadku ypadku tylko jedno wymuszenie musi być wykonane, nigdy obydwa, więc używamy opcji wymuszenia OR. 9. Usunięcie pliku wynikowego i uruchomienie pakietu • Usuń plik wynikowy StudenciDestination.txt. Wykonaj pakiet. Obydwie gałęzie wykonają się. • Przerwij debugowanie. Strona 5/9 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł II Proces ETL II Problem 2 (czas realizacji 15min) - kontynuacja problemu 1 Ćwiczenie ilustruje użycie życie komponentu Fuzzy Lookup (Rozmytego Przeszukiwania) do porównywania wartości ci ze źródła wejściowego z przeszukiwaną tablicą tablicą. Omówione zostanie również użycie komponentu Data Viewer, który umożliwia podgląd d danych przetwarzanych podczas debugowania. Zadanie Tok postępowania 1. Przejrzenie plik InputA.txt • Otwórz plik z lokacji C: C:\HD\UID\InputA.txt. wskazanej przez prowadzącego np.: Niektóre wiersze odpowiadają liście studentów, podczas gdy inne są zbliżone lub błędne 2. Dodanie Data Flow Task (Zadania Przepływu Danych) nazwane Znajdź Nazwiska do kontenera Plik Istnieje • W SSBIDS, na zakładce Control Flow (Kontrola Przepływu) przeciągnij Data Flow Task (Zadanie Przepływu pływu Danych) z Toolbox (Panelu Narzędzi) do kontenera Plik Istnieje. • Nazwij zadanie: Znajdź Nazwiska. 3. Dodanie Źródła Flat File Source (Danych jako Plik Płaski). • Kliknij podwójnie na Znajdź Nazwiska, aby otworzyć zakładkę Data Flow (Przepływ Danych). • Przeciągnij Flat File Source (Źródło Danych jako Plik Płaski) z Toolbox (Panelu Narzędzi). 4. Dodanie Connection Manager (Menadżera Połączeń) Wprowadź Nazwiska. • Klikn Kliknij podwójnie na Flat File Source (Źródło Danych jako Plik Płaski) a następnie wybierz przycisk przycisk New, aby stworzyć nowego Connection Manager (Menadżera Połączeń) • Wprowadź nazwę menadżera: Wprowadź Nazwiska. Nazwiska • Jako źródła wskaż z lokacji podanej przez prowadzącego plik: np.: C: C:\HD\UID\InputA.txt • Wybierz Advanced (Zaawansowane): • Name: Nazwisko. • OutputColumnWidth: 250. Przeszukiwanie Rozmyte (Fuzzy Lookup) ostrzega, gdy wielkość kolumny źródła jest różna od kolumny, do której się odnosi. • W Edytorze Flat File Source (Danych jako Plik Płaski), wybierz zakładkę Columns (kolumny) aby ustawić mapowanie mapowani między kolumną zewnętrzną a kolumną wynikową. 5. Dodanie transformacji Fuzzy Lookup (Przeszukiwanie rozmyte) Teraz jesteś gotowy, aby porównać listę nazwisk w pliku wejściowym z tabelą ImieNazwisko. • Przeciągnij komponent Fuzzy Lookup (Przeszukiwanie Rozmyte) Rozmy z Toolbox ‘a (Panelu Narzędzi). • Połącz wyjście Flat File Source (Źródło Danych jako Plik Płaski) z Fuzzy Strona 6/9 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł II Proces ETL II Lookup (Przeszukiwanie Rozmyte). • Kliknij podwójnie na Fuzzy Lookup (Przeszukiwanie Rozmyte), aby otworzyć edytor: • Connection manager: localhost.Studenci. • Wygeneruj nowy index (new index)) przy użyci referencji do tabeli zawierającej nazwisko i nr indeksu np. NrAlbumu. NrAlbumu • Przeszukiwanie Rozmyte tworzy skomplikowany indeks na przeszukiwanej tabeli. Może tworzyć indeks za każdym razem bądź też przechowywać go w bazie danych. Dla dużych tablic, które nie zmieniają się zbyt często indeks powinien być przechowywany. • Wybierz zakładkę Columns (kolumny) i stwórz połączenie pomiędzy Nazwisko a Student. • Zaznacz Pass Through w Available Input Columns, aby nazwa pliku źródłowego była załączona w pliku wynikowym. • Wybierz kolumnę Student jako kolumną przeszukiwana. • Wybierz OK. 6. Dodanie SQL Server Destination (Źródła Wynikowego Jako SQL Server) z nowym menadżerem połączeń, aby połączyć bazę danych Studenci oraz nową tabelę ZnalezioneNazwis ka Umieść rezultaty wyszukiwania w nowej tabeli. • Przeciągnij SQL Server Destination (Źródło Wynikowe Jako SQL Server) z Toolbox ‘a (Panelu Narzędzi). • Przeciągnij zieloną strzałkę wyjścia Fuzzy Lookup (Przeszukiwania Rozmytego) do SQL Server Destination (Źródło Wynikowe Jako SQL Server). • Kliknij podwójnie na SQL Server Destination (Źródło Wynikowe Jako SQL Server) i wybierz przycisk New, aby stworzyć nowego Menadżera Połączeń. • Wybierz menadżera: localhost.Studenci. • Wybierz przycisk New aby stworzyć nową tabelę • Zmień nazwę tabeli z SQL Server Destination na ZnalezioneNazwiska Zwróć uwagę na dodatkową kolumnę stworzoną do przechowywania statystyk. • Wybierz Mapowania (Mappings) ( w Edytorze SQL Server Destination De (Źródło Wynikowe Jako SQL Server), Server), aby poprawnie zmapować wejściową i wyjściową kolumnę • Zamknij edytor. 7. Dodanie Data Viewer (podglądu danych) dla Przeszukiwania Rozmytego (Fuzzy Lookup) 8. Przetestowanie zadania Znajdź Nazwiska Podgląd Danych pozwala na monitorowanie przepływu danych. Umożliwia on na sprawdzenie wyników bez odnoszenia się do SQL Server Management Studio po zakończeniu zadania. • Kliknij ppm na połączenie pomiędzy Fuzzy Lookup (Przeszukiwaniem Rozmytym) a SQL Server Destination (Źródło Wynikowe Jako SQL Server) i wybierz Data Viewer (Podglądu Danych). • W zakładce Data Viewers wybierz przycisk Add, aby dodać nowy Podgląd Danych typu Grid. Można przetestować część pakietu poprzez komendę Execute Task (Wykonaj Zadanie). Strona 7/9 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł II Proces ETL II • Na zakładce Control Flow (Kontrola Przepływu) kliknij ppm na zadaniu Znajdź Nazwiska. Okno Podglądu zawiesza wykonanie zadania. Zwróć uwagę na dokładne trafianie (Adam Radomski, Aleksander Wukara, Artur Trulik, Arkadiusz Dorzyński), dla których statystyki „similarity” „similarit oraz „confidence” równe są 1. Aby kontynuować, zamknij okno podglądu, lub kliknij przycisk kontynuuj (zielona strzałka w lewym górnym rogu okna podglądu). • Wybierz przycisk przy Kontynuuj,, zamknij podgląd oraz zatrzymaj debuger. 9. Dodanie Execute SQL Task (wykonanie zadania SQL) Jeśli uruchomisz zadanie po raz drugi te same wiersze zostaną dodane ponownie do tabeli ZnalezioneNazwiska. Trzeba więc czyścić tabelę przed każdym przeszukaniem. • Na zakładce Control Flow (Kontrola Przepływu) dodaj Execute SQL Task (Wykonanie Zadania SQL) do kontenera Plik Istnieje: • Name: Wyczyść ZnalezioneNazwiska • Connection: localhost.Studenci • SQL Statement: Delete from ZnalezioneNazwiska. 10. Dodanie Wymuszenia Pierwszeństwa, aby uruchomić Wyczyść ZnalezioneNazwis ka przed wykonaniem Znajdź Nazwiska • Przeciągnij strzałkę wyjścia z Wyczyść ZnalezioneNazwiska do Znajdź Nazwiska. Laboratorium rozszerzone Zadanie 1 (czas realizacji 30 min) W Laboratorium podstawowym pisaliśmy prosty skrypt w języku Visual Basic 2008. Jednakże skrypt, skrypt który napisałeś nie jest satysfakcjonujący dla twojego przełożonego który nie akceptuje użycia funkcji Connection. Zmodyfikuj skrypt tak, aby nie było konieczności użycia tej funkcji. W razie problemów polecono ci skorzystać ze strony http://technet.micro http://technet.microsoft.com/enus/library/ms345171.aspx. Zadanie 2 (czas realizacji 30 min) W Laboratorium podstawowym pisaliśmy prosty skrypt w języku Visual Basic 2008, otrzymałeś polecenie przepisanie skryptu w języku Microsoft Visual C# 2008 . W razie problemów polecono ci skorzystać ze strony http://technet.microsoft.com/en-us/library/ms345171.aspx http://technet.microsoft.com/en us/library/ms345171.aspx Zadanie 3 (czas realizacji 30 min) Zlecono ci dokonać przeszukiwania rozmytego na tabeli NrAlbumu (Laboratorium rozszerzone moduł 1) przy użyciu pliku z numerami albumów InputI.txt InputI.txt oraz wyświetlenie rezultatów (oraz przechowanie ich w nowej tabeli systemu SQL Server) – numerów albumów oraz nazwisk studentów. Strona 8/9 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł II Proces ETL II Wskazówka: określenia kolumn przeszukiwanych i wyświetlanych dokonujemy w komponencie Fuzzy Lookup. Pamiętaj o czyszczeniu wynikowej tablicy Strona 9/9 ITA-102 Hurtownie Danych Marcin Gorawski, Sławomir Bańkowski Moduł 3 Wersja 1.0 Usługi analiz danych: zunifikowany model wymiarowy Spis treści Usługi analiz danych: zunifikowany model wymiarowy....................................................................... 1 Informacje o module ............................................................................................................................ 3 Przygotowanie teoretyczne ................................................................................................................. 4 Przykładowy problem .................................................................................................................. 4 Podstawy teoretyczne.................................................................................................................. 4 Identyfikacja wymiarów dla każdej z tablic faktów.............................................................................. 5 Fakty. .................................................................................................................................................... 5 Definicja atrybutów.............................................................................................................................. 6 Model logiczny ..................................................................................................................................... 6 Model danych w schemacie gwiazdy. .................................................................................................. 8 Model danych w schemacie płatka śniegu........................................................................................... 9 Przykładowe rozwiązanie ........................................................................................................... 12 Porady praktyczne ..................................................................................................................... 12 Uwagi dla studenta .................................................................................................................... 13 Dodatkowe źródła informacji..................................................................................................... 13 Laboratorium podstawowe ................................................................................................................ 14 Tworzenie widoku danych, definiowanie kostki i wymiarów (czas realizacji 20min) ................ 14 Definiowanie i publikowanie kostki danych (czas realizacji 20 min) ......................................... 17 Edycja wymiarów, poziomów i hierarchii (czas realizacji 15 min) ............................................. 20 Budowanie raportów za pomocą tabel przestawnych (czas realizacji 10 min) ......................... 25 Przeglądanie opublikowanej kostki za pomocą Microsoft SQL Server Management Studio (czas realizacji 10 min) ........................................................................................................................ 26 Laboratorium rozszerzone ................................................................................................................. 28 Zadanie 1 (czas realizacji 10 min)............................................................................................... 28 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Zadanie 2 (czas realizacji 10 min)............................................................................................... 28 Zadanie 3 (czas realizacji 15 min)............................................................................................... 28 Zadanie 4 (czas realizacji 15 min)............................................................................................... 28 Zadanie 5 (czas realizacji 40 min)............................................................................................... 28 Strona 2/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Informacje o module Opis modułu W module znajdziesz informacje na temat modelu wielowymiarowego, w którym przechowywane są dane użytkownika. Przedstawiamy budowę kostki zarówno z agregatami, jak i z współdzielonymi wymiarami i poziomami hierarchicznymi. Opisujemy edycję schematu wielowymiarowego, dostosowując schemat do modelu biznesowego. Przedstawiamy tworzenie prostych raportów za pomocą tabel przestawnych. Cel modułu Celem modułu jest przedstawienie procesu projektowania modelu wymiarowego na podstawie schematu relacyjnego, a także późniejszą modyfikację kostek danych. Umożliwia to analizę schematu relacyjnego, a następnie utworzenie schematu wielowymiarowego. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • znał model wielowymiarowy, • znał zasady konwersji modelu relacyjnego do modelu wymiarowego, • potrafił zaprojektować kostkę, wymiary, hierarchie, poziomy i atrybuty, • wiedział, jak szybko utworzyć prosty raport za pomocą tabel przestawnych. Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • znać podstawowe pojęcia związane z modelem relacyjnym, • rozumieć pojęcia tabeli, kolumny, wiersza i krotki, • wiedzieć, na czym polegają agregacje, widoki, zmaterializowane i partycje. widoki Mapa zależności modułu Aby rozpocząć ten moduł nie jest konieczne ukończenie innych modułów. Strona 3/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Przygotowanie teoretyczne Przykładowy problem Adventure Works Cycles jest dużym, międzynarodowym zakładem przemysłowym, który produkuje i sprzedaje ramy rowerowe i inne zbliżone wyroby metalowe na rynki Ameryki Północnej, Europy oraz Azji. Podstawowe procesy produkcyjne Adventure Works Cycles zachodzą w Bothel, w Waszyngtonie, gdzie zatrudnionych jest 290 pracowników, natomiast kilka regionalnych oddziałów sprzedaży zlokalizowanych jest na całym rynku, na którym działa firma. W 2000 roku Adventure Works Cycles kupiło mały oddział produkcyjny – Importadores Neptuno, z siedzibą w Meksyku. Jego zadaniem była produkcja kilku istotnych komponentów dla linii produkcyjnej Adventure Works Cycles, które były transportowane do Bothel, gdzie miało miejsce finalne złożenie produktu. W 2001 roku Importadores Neptuno zostało wyłącznym producentem oraz dystrybutorem rowerów trekingowych. Mijający, zdecydowanie pomyślny dla firmy rok podatkowy stworzył dogodne warunki dla zwiększenia udziału w rynku, na którym działa Adventure Works Cycles, poprzez ukierunkowanie sprzedaży na najlepszego klienta, ułatwienie dostępu do produktów dzięki stronie internetowej oraz redukcji kosztów sprzedaży uzyskanej poprzez obniżenie kosztów produkcji. Do sprawnego zarządzania przedsiębiorstwem niezbędne są analizy danych i bardzo sprawny system raportów dla podejmowania szybkich, strategicznych decyzji. Dane powinny być w postaci biznesowej, łatwej do zrozumienia dla klienta podejmującego decyzje zarządcze. Podstawy teoretyczne Budowa modelu HD jest poprzedzona jest przygotowaniem planu tego projektu oraz fazą zgromadzenia specyfikacji stawianych przed systemem HD. Przed analitykami i projektantami HD zostaje postawiony problem rozwiązania zagadnień budowy: • konceptualnego (pojęciowego) modelu biznesowego systemu na potrzeby użytkownicy aplikacji DSS ( ang. DSS – Decision Support Systems ), • logicznego modelu danych spełniających założenia konceptualnego modelu biznesowego • zagadnienia implementacji modelu fizycznego zoptymalizowanego pod kątem używanego sprzętu i oprogramowania ( systemu bazodanowego ) – zagadnienie to rozwiązują specjaliści. Dobrym rozwiązaniem wspomnianych zagadnień jest hurtownia, która: • będzie pozwalała znajdować odpowiedzi na postawione przez użytkowników zapytania, • będzie efektywnie realizowała zlecone zadania, • będzie łatwa w utrzymaniu i prosta w rozbudowie. Pojęciowy, wielowymiarowy model biznesowy Z dwunastu kluczowych decyzji, które należy podjąć przy projektowaniu hurtowni danych, aż pięć pierwszych ściśle związanych jest z tworzeniem wielowymiarowego modelu biznesowego systemu. Są to wybory: • • • • • procesów biznesowych, które będą podlegały analizie poziomu granulacji tablic faktów, wymiarów, dla każdej z tablic faktów, faktów: wartości dostępnych bezpośrednio oraz wartości wyliczanych, atrybutów wymiarów i zależności między nimi. Powyższe wybory i tworzony biznesowy model danych są ściśle zależne od wymagań końcowych użytkownika. Zwykle już na etapie projektowania modelu pojęciowego (konceptualnego), Strona 4/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy projektanci HD moją na uwadze zapewnienie odpowiedniej wydajności przetwarzania zapytań i zminimalizowanego kosztu zarządzaniu hurtownią. Budowę modelu biznesowego rozpoczyna się od zebrania wymagań funkcjonalnych, które powinien realizować tworzony system HD. Etap ten powinien być globalny w skali przedsiębiorstwa i obejmować definicję zintegrowanego modelu biznesowego danych przedsiębiorstwa oraz definicję zakresu hurtowni danych. Przyjęte ustalenia powinny prowadzić do utworzenia i zapisu konceptualnego, wielowymiarowego modelu biznesowego hurtowni w postaci diagramu, gdzie obiektami, które występują na takim diagramie są tablice faktów, wymiary hurtowni danych, atrybuty wymiarów oraz relacje między atrybutami wymiarów – powiązania i hierarchie. Bardziej szczegółowy diagram modelu może dodatkowo zawierać: • wyszczególnienie faktów przechowywanych w tablicy faktów, • dostarczenie szczegółowego opisu atrybutów oraz ustalenie przewidywanej liczby elementów unikalnych, • uzupełnienie relacji o ich krotności ( 1:1, 1:N, N:1, M:N ) wyliczone na podstawie wspomnianej wyżej liczby dostępnych elementów. Identyfikacja wymiarów dla każdej z tablic faktów. Słowo wymiar jest pojęciem-koncepcją stosowanym w nazewnictwie związanym z hurtowniami danych i oznacza pewien obszar zainteresowań lub kierunek potencjalnych analiz. Wymiary dostarczają perspektyw, z których końcowy użytkownik będzie mógł analizować dane zawarte w tablicach faktów. Z reguły systemy posiadają od 5 do 25 wymiarów. Na etapie identyfikacji wymiarów należy uważać, aby występujące w projektowanym modelu wymiary nie były z sobą skorelowane. Generalnie można przyjąć, że pomiędzy wymiarami powinna zachodzić relacja M:N. W przypadku, gdy taka zależność nie zachodzi, to istnieje podejrzenie, że można zrezygnować z jednego z wymiarów. Minimalny poziom granulacji wymiaru wyznaczony jest przez ustalony wcześniej poziom granulacji tablic faktów, do których dane wymiary zostaną przypisane. Z racji istnienia w projektowanym modelu wielu wymiarów oraz z racji możliwości późniejszej analizy danych w wielu perspektywach ( wymiarach ) tworzony model nazywa się modelem wielowymiarowym. Wybór wymiarów jest decydującym krokiem w projekcie tego modelu. Pozostałe dwie kluczowe decyzje ( czwarta i piąta ) służą wypełnieniu przygotowanych wcześniej obiektów – tabel faktów i wymiarów odpowiednią zawartością: faktami oraz atrybutami. Ponieważ wymiary hurtowni są tylko pewną koncepcją, to nie muszą one mieć fizycznego odpowiednika w samej hurtowni danych. Fakty. Wielkości i informacje charakteryzujące obserwowane procesy przechowywane są w tabelach faktów jako fakty. Wielkości te mogą być mierzone bezpośrednio ( np. dostępne informacje o poziomach sprzedaży, cenach, stanach magazynowych ) lub też mogą być pewnymi wartościami wyliczanymi ( np. ilość klientów, która w danym dniu zakupiła dany towar - wielkość wyliczona na podstawie rodzaju i ilości zawartych transakcji ). Fakty są podstawą budowy metryk, które dalej podlegają wszechstronnej analizie biznesowej i mogą służyć m.in. do monitorowania ważnych dla przedsiębiorstwa wskaźników ekonomicznych, badania skuteczności przeprowadzanej akcji promocyjnej itp. Ilość i rodzaj faktów przechowywanych w danej tablicy faktów wyznacza złożoność procesu, który ma podlegać analizie. Spotykane są też systemy, w których dla scharakteryzowania procesu nie potrzeba przechowywać żadnych faktów. Do opisu takich procesów wystarczy występowanie odpowiedniej kombinacji wymiarów, a tablice faktów takich procesów nazywa się tablicami bez faktów ( ang. factless ). Przykładem takiej tablicy może być tabela sygnalizująca Strona 5/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy zajście pewnego zdarzenia lub sytuacji – już samo istnienie wpisu w takiej tablicy wystarczająco zdarzenie reprezentuje. Przy definiowaniu faktów należy pamiętać, że informacje trafiające do hurtowni danych mogą pochodzić z różnych systemów źródłowych. Dane, które już znajdują się w hurtowni danych powinny być przechowywane w jednolitej postaci, tzn. posiadać ten sam stopień granulacji być wyrażone w tym samych jednostkach, w tym samym formacie, itd. Definicja atrybutów. W ramach każdego z wymiarów specyfikuje się występujące w nim atrybuty., które są pewnymi pojęciami opisującymi proces od strony jakościowej. Końcowemu użytkownikowi aplikacji DSS atrybuty pozwalają na zdefiniowanie wyglądu i poziomu szczegółowości raportu oraz kwalifikowanie wyników raportów ( narzucanie ograniczeń, filtrowanie według jednego lub większej liczby atrybutów ). Można przyjąć, że wymiary kwalifikują obliczenia na pewnym uogólnionym poziomie, a atrybuty na poziomach odpowiednio niższych. W skład wymiaru może wchodzić jeden lub więcej atrybutów. Między atrybutami wchodzącymi w skład danego wymiaru zachodzą pewne relacje. Relacje wyznaczają logiczne powiązania atrybutów w ramach wymiaru. Definicja relacji opisuje hierarchiczną zależność jednego atrybutu, tzw. dziecka ( np. regionu ) od drugiego zwanego rodzicem ( dla regionu będzie to menadżer ) oraz zawiera ilościową krotność zależności ( 1:1, 1:N, N:1, N:M ). Relacje między atrybutami są podstawą do zdefiniowania wielopoziomowej, logicznie uporządkowanej hierarchii atrybutów w wymiarze. W danym wymiarze może istnieć więcej niż jedna hierarchia. Wyróżniamy: hierarchię główną ( np. menadżer region sklep ), hierarchie atrybutów dodatkowych, tzw. hierarchie charakterystyczne budowane obok hierarchii głównej ( np. typ sklepu sklep, województwo sklep ). Hierarchię główną tworzą atrybuty, które leżą w centrum zainteresowań użytkowników. Hierarchie charakterystyczne - budowane w oparciu o atrybuty hierarchii głównej - dostarczają dodatkowych możliwości bardziej szczegółowego opisu procesów. Krotności relacji oraz zależności rodzic-dziecko odznaczają się własnością przechodniości w ramach hierarchii. Atrybuty należące do różnych wymiarów pozostają z sobą w relacji tylko dzięki łączącej wymiary tabeli faktów. W kontekście aplikacji DSS, relacje zachodzące między atrybutami definiują ścieżki przeglądania oraz analizy danych - ich rozwijania ( ang. drill down ) i zwijania ( ang. drill up ). Analizując dany atrybut należy zwrócić uwagę na sposób jego opisu. Atrybut może posiadać wiele cech charakterystycznych. Elementy opisu atrybutu przyjmują konkretne wartości występujące w rzeczywistości biznesowej i są atomowymi komponentami modelu danych, przechowywane w postaci rekordu w odpowiedniej tabeli wymiaru. Elementy atrybutu dostarczają wartości, według których można dokonać kwalifikacji ( filtrowania ) wyników raportów. Model logiczny Mając dopracowany i uzgodniony z końcowym użytkownikiem pojęciowy model biznesowy można przystąpić do budowy systemu HD. Takie systemy bazując na hurtowniach danych są zdolne do analitycznego przetwarzania danych na bieżąco (ang. On-Line Analytical Processing – OLAP). OLAP cechuje zdolność: • wykonywania analiz wielowymiarowych wg złożonych kryteriów wyszukiwania, • interaktywnego raportowania bez znajomości języków programowania, • uzyskiwania odpowiedzi na skomplikowane i często niestandardowe (ang. ad hoc) zapytania w trybie bieżącym. Strona 6/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy OLAP zdeterminowany jest zakresem czasowym i liczebnością przechowywanych danych. Analizy wielowymiarowe powinny być przeprowadzane na jak największej liczbie danych gromadzonych w organizacjach. Do analiz przekrojowych, wg złożonych kryteriów wyszukiwania, potrzebne są dane z całego okresu działalności organizacji i takie dane muszą być dostępne. Celem OLAP jest generowanie przekrojowych raportów ze wszystkich dziedzin działalności organizacji wg różnych kierunków analizy np. wymiarów, hierarchii. Dla pełniejszej analizy stosuje się różne techniki przetwarzania analitycznego np. rachunek prawdopodobieństwa, wnioskowanie statystyczne, analizy: regresji, korelacji, trendów, wrażliwości, czy analizy typu „co, jeśli”. Architektura OLAP transformuje różnorodne zbiory danych w zintegrowaną informację decyzyjną przy pomocy komponentów tj.: motor bazy danych, motor ekstrakcji danych, motor OLAP, motor eksploracji danych, repozytorium metadanych - muszą stanowić dobrze zintegrowany system. Jak na ironię, ta architektura sama w sobie stała się tak złożona, że stanowi źródło coraz poważniejszych problemów integracyjnych. Architektura OLAP pozwala na prezentację danych w postaci wielowymiarowej, odmiennej od tradycyjnie stosowanej w bazach danych znormalizowanej struktury relacyjnej. O ile przedmiotem relacyjnego modelu danych są pojedyncze rekordy danych i pojedyncze transakcje wykonywane w danym momencie czasu, to w modelu wielowymiarowym są analizowane skutki wielu transakcji dokonywanych w pewnym przedziale czasu lub pewnym obszarze analizy. Wszystkie architektury OLAP wymagają tworzenia wielowymiarowej struktury danych, w której wymiary reprezentują „obiekty” istotne z punktu widzenia prowadzonej analizy. W takiej strukturze danych, określanej potocznie jako „sześcian” lub „kostka” danych użytkownicy prowadzą analizy korzystając ze specjalizowanego motoru OLAP. Motory OLAP pozwalają użytkownikom na prezentowanie dowolnych widoków danych sumarycznych, a także rozwijanie tych danych do poziomu danych szczegółowych. Struktury wielowymiarowe mogą być posadowione w dedykowanych, trwałych bazach wielowymiarowych, w tymczasowych „mikro-kostkach” rezydujących w pamięci lub w bazach relacyjnych (w postaci schematów gwiazdy lub płatka śniegu). W architekturze OLAP wyróżniamy silniki: • MOLAP (OLAP wielowymiarowy; ang. Multidimensional On-Line Analytical Processing Multidimensional,) – do prowadzania analiz wykorzystuje serwer wielowymiarowej bazy danych MDDB (ang. Multidimensional Database). W tej architekturze dane muszą być przechowywane wielowymiarowo, jeżeli mają być wielowymiarowo analizowane i prezentowane. Cechą charakterystyczną tych baz danych jest pełna agregacja danych. • DOLAP (OLAP Desktop)– to silnik MOLAP operujący na plikach lub bazach danych zainstalowanych lokalnie, na stacjach klienta (brak serwera). • ROLAP (OLAP relacyjny; ang. Relational On-Line Analytical Processing) – do prowadzania analiz i wielowymiarowej prezentacji korzysta z danych przechowywanych w relacyjnej bazie danych (RDBMS) o specjalizowanej strukturze, najczęściej gwiazdy (ang. Star) lub płatka śniegu (ang. Snowflake). Dostęp do danych jest realizowany na poziomie zwykle złożonych zapytań SQL. Dane mogą być wstępnie agregowane lub potrzebne agregaty są wyliczane w trakcie wyszukiwania danych. • HOLAP (OLAP hybrydowy; ang. Hybrid OLAP) – to architektura mieszana pozwalająca użytkownikom na korzystanie (nie zawsze jednocześnie) z dwóch baz danych: wielowymiarowej lub relacyjnej. HOLAP wzbogaca architekturę OLAP o mechanizm semafora serwerów ROLAP i MOLAP. Ze względu na sposób przechowywania i przetwarzania danych najważniejsze są dwie architektury MOLAP i ROLAP, dwie pozostałe są ich pochodnymi. Strona 7/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Model danych w schemacie gwiazdy. W odróżnieniu od systemów transakcyjnych, które zazwyczaj starają się opisać rzeczywistość całościowo, podstawowe składniki systemu OLAP koncentrują się na pojedynczym procesie, którego przetwarzanie ( analiza ) powinna być maksymalnie efektywna. Podstawowym modelem realizującym ten postulat jest model zwany gwiazdą ( ang. star ). Struktura ta następująco odwzorowuje obiekty modelu biznesowego w model logiczny: • obiekty przechowujące fakty są zapisywane w postaci tablic faktów • wymiary i ich atrybuty są zapisywane w postaci tablic wymiarów, po jednej tablicy na każdy wymiar. Cechami charakterystycznymi tej struktury jest to, że model nie jest jednorodny (posiada wyraźne centrum – tabelę bazową), na schemacie występuje minimalna liczba połączeń oraz tabele wymiarów nie są znormalizowane. Zasadniczo można spotkać się z trzema typami struktur typu gwiazda, różniącymi się sposobem budowy tablic wymiarów. Każda z tych struktur może dodatkowo występować w dwóch odmianach zależnych od przyjętej strategii agregacji: z dodatkowymi tablicami faktów lub też z wykorzystaniem pojedynczej tablicy i dodatkowego pola wskazującego na poziom agregacji. Zastosowanie modelu gwiazdy jako schematu hurtowni danych ma wiele zalet: • model jest prosty i czytelny – w schemacie występuje niewielka liczba obiektów oraz minimalna liczba połączeń: • końcowemu użytkownikowi bardzo łatwo jest sobie przyswoić i zrozumieć ten model, • symetria układu powoduje, że każdy wymiar jest traktowany identycznie, podobnie wyglądają zapytania SQL kierowane do modelu i łatwo budować na nim aplikacje DSS, • ze względu na małą liczbę tabel uproszczona jest administracja systemu, • zoptymalizowany jest dostęp do danych: • w zapytaniach pojawia się niewielka liczba złączeń – schemat odznacza się najwyższą wydajnością przy przeglądaniu atrybutów należących do tego samego wymiaru, • złączenia tablic wymiarów z tablicą faktów następują tylko z wykorzystaniem kluczy numerycznych, • istnieje prosty algorytm wyznaczania wynikowego zbioru rozwiązań zapytania SQL kierowanego do struktury gwiazdy, • istnieją specjalne techniki optymalizacji zapytań ( indeksy bitmapowe, specjalna modyfikacja zapytań do schematu wykorzystująca tzw. transformację gwiaździstą – ang. star transformation ), • model jest bardzo efektywny w zakresie przechowywania danych: w tablicy faktów oprócz informacji merytorycznych przechowywane są tylko identyfikatory numeryczne pochodzące z tabel wymiarów; • rozbudowa modelu nie stanowi problemu: • model można rozbudowywać przez dodanie nowych faktów, wymiarów czy atrybutów wymiarów – co w żaden sposób nie zmienia podstawowej idei schematu, • rozbudowa modelu zasadniczo nie wpływa na ograniczenie funkcjonalności już wdrożonych systemów aplikacji DSS - nowy model jest pod względem schematu zgodny w dół ze starym. Modyfikacji natomiast będą musiały podlegać programy ładujące dane do hurtowni. • model gwiazdy jest uniwersalny – w każdym modelu da się wyróżnić tabelę bazową z faktami oraz tabele wymiarów, stąd łatwo jest stworzyć narzędzia do projektowania systemów DSS Strona 8/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy zapewniające możliwość współpracy z dowolnym modelem hurtowni przypominającym strukturę gwiazdy, • model gwiazdy stanowi de facto standard wśród schematów hurtowni danych, jest on wykorzystywany od lat i znane są jego dobre i słabsze strony – dopracowano się też zbioru standardowych rozwiązań obsługujących sytuacje złożone oraz nietypowe. Zalety modelu gwiazdy znacznie przewyższają jego wady i czynią go jednym ze standardów budowy schematu hurtowni danych. Model danych w schemacie płatka śniegu. Wymienione wyżej wady modelu gwiazdy stara się wyeliminować model płatka śniegu ( ang. snowflake ) nazywany też modelem rozwiniętej gwiazdy ( ang. extended star ). Zasadniczą zmianą, którą wprowadzono w tym modelu jest odejście od pełnej denormalizacji tablic wymiarów w kierunku ich normalizacji. W zależności od stopnia znormalizowania tablic wymiarów można wyróżnić cztery typy modeli płatka śniegu. Model płatka śniegu wnosi następujące zalety, których brakowało w modelu gwiazdy: • tablice wymiarów są znacznie lepiej skalowalne ( cecha ta nie dotyczy modelu płatka śniegu typu 3 ), • łatwo obsłużyć relację M:N, • w naturalny sposób można zrealizować agregację danych za pomocą dodatkowych tabel faktów zagregowanych, gdyż nie są konieczne żadne dodatkowe tablice wymiarów. Dodatkowo model płatka śniegu wnosi następujące korzyści: • zmniejszenie objętości bazy danych poprzez eliminację powtórzeń wartości atrybutów wymiarów – cecha ta dotyczy tylko modeli płatka śniegu typu 1 i 2, w modelu typu 3 może nastąpić zwiększenie ilości wymaganego miejsca. • uzyskanie eleganckiego schematu jawnie ukazującego rzeczywistą, hierarchiczną strukturę wymiarów, np. czasu ( rokmiesiącdzień ), położenia geograficznego, asortymentów produktów ( podział wg kategorii, grup, klas ), czy też takich struktur jak struktury organizacyjne przedsiębiorstwa, • uproszczenie niektórych zadań administracyjnych: tabele mają prostszą strukturę i są zazwyczaj mniejsze ( uwaga ta nie dotyczy modelu płatka śniegu typu 3 ): • tabele łatwiej się wypełnia danymi, składuje i odtwarza, • w prostszy sposób można sprawdzić jakość informacji zawartej w tabeli, • zwiększenie wydajności w przetwarzaniu zapytań typu: wyświetlenie listy dostępnych elementów atrybutów – w przypadku płatka śniegu możliwe jest użycie polecenia select w miejsce select distinct używanego w modelu gwiazdy [3], Niestety normalizacja schematu powoduje utratę części zalet, które występowały w modelu gwiazdy: • normalizacja może wywołać pewne problemy efektywnościowe, które nie występowały w modelu zdenormalizowanym – generalnie w planie wykonania zapytania pojawia się większa ilość złączeń [3]; uwaga dotyczy tylko modelu płatka śniegu typu 1 i 2, model płatka śniegu typu 3 jest w realizacji niektórych zapytań bardziej wydajny niż model gwiazdy, Strona 9/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy • normalizacja zakłóca maksymalną prostotę modelu gwarantowaną przez występowanie w nim minimalnej liczby obiektów i połączeń, przez co aplikacja DSS musi generować bardziej złożone frazy SQL, • fakt zmniejszenia objętości bazy danych w przypadku modelu znormalizowanego jest bardzo niewielki; przy tabelach faktów wielkości gigabajtów oszczędności miejsca sięgają zwykle ułamków procenta, przy modelu płatka śniegu typu 3 - ilość potrzebnego może powiększyć się, • pojawienie się większej ilości tabel w modelu płatka śniegu rozszerza zakres obowiązków administratora. Model płatka śniegu wraz z modelem gwiazdy stanowią zestaw dwóch podstawowych modeli używanych przy tworzeniu schematu hurtowni danych. Modele te są sobie pokrewne i przez to nie wykluczają się wzajemnie – a wprost przeciwnie – ich podobieństwo pozwala na budowę modelu pośredniego posiadającego najlepsze cechy obu tych modeli. W zależności od specyfiki danego wymiaru: liczby jego atrybutów, liczby elementów każdego z atrybutów, liczby hierarchii i rodzaju występujących relacji można zdecydować się na jego implementację w schemacie gwiazdy lub płatka śniegu lub też w schemacie będącym kombinacją obu tych technik. Współczesne narzędzia do tworzenia aplikacji DSS bez problemu obsługują oba te modele oraz wszelkie modele pośrednie. Powyższą wiedzę w wersji znacznie rozszerzonej zawierają następujące prace: • Frączek J., Gorawski M., Kozielski St. Modelowanie struktur wielowymiarowych w hurtowniach danych. Archiwum Informatyki Teoretycznej i Stosowanej. 2000 t. 12 z. 3, 173-201, strony 173-201. • Gorawski, M. Praktyczne aspekty projektowania hurtowni danych (Practical aspects of data warehouse design). Studia Informatica, 2003, vol. 24, nr 4(56). 2003, strony 189-210. • Gorawski, M. Ocena efektywności architektur OLAP (Estimation of the efficiency of OLAP architecture). [red.] Z. Mazur. Z. Huzar. Problemy i metody inżynierii oprogramowania. Warszawa, Wydaw. Naukowo-Techniczne. 2003, strony 233-250. • Gorawski, M. Definiowanie schematów rozszerzonej gwiazdy kaskadowej. [aut. książki] Praca zbiorowa. [red.] St. Kozielski [i in.]. Bazy danych. Nowe technologie.Architektura, metody formalne i zaawansowana analiza danych. Warszawa: Wydaw. Komunikacji i Łączności. 2007, strony 103-114. • Gorawski, M. Laboratorium hurtowni danych poziomu MS SQL SEVER 2005. [red.] Z. Huzar. B. Hnatkowska. Metody i narzędzia wytwarzania oprogramowania. Konferencja naukowa, Szklarska Poręba. Wrocław: Oficyna Wydaw. Politechniki Wrocławskiej. 2007, strony 583596. Microsoft SQL Server 2008 Analysis Services (SSAS) ułatwia tworzenie złożonych procesów analitycznych w trybie on-line (OLAP, ang. Online Analytical Processing) i rozwiązań z dziedziny eksploracji danych. Narzędzia dostępne poprzez Analysis Services umożliwiają projektowanie, tworzenie i zarządzanie kostkami oraz modelami analitycznymi pochodzącymi z hurtowni danych. Dzięki odpowiednim narzędziom klienci mogą także uzyskać dostęp do danych OLAP oraz wyników analiz dataminingowych. Narzędzia Analysis Services łączą aspekty tradycyjnego przetwarzania OLAP oraz raportowania relacyjnego poprzez dostarczenie projektantom i użytkownikom możliwości zdefiniowania jednolitego modelu wymiarów i faktów korzystającego z jednego lub wielu źródeł danych. Powoduje to, ze wszystkie zapytania użytkowników OLAP, usług raportujących i innych aplikacji BI (ang. Business Intelligence) mają zagwarantowany dostęp do różnych źródeł danych poprzez jeden wspólny widok biznesowy. Analysis Services dostarczają Strona 10/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy bogaty zestaw algorytmów eksploracji danych umożliwiając użytkownikom biznesowym analizę danych pod kątem wykrywania specyficznych wzorców i trendów. Algorytmy eksploracji danych są stosowane do jednolitego modelu wymiarów i faktów lub bezpośrednio do danych z określonego źródła danych. Struktura Analysis Services składa się z komponentów serwerowych i klienckich. Działanie tych komponentów jest zintegrowane w celu dostarczenia usług OLAP i funkcjonalności analitycznej dla aplikacji z dziedziny BI. Komponent serwerowy Analysis Services jest zaimplementowany jako usługa Microsoft Windows. SQL Server 2008 Analysis Services wspiera współdziałanie wielu instancji Analysis Services na jednym komputerze (każdy serwis jest wtedy odrębną usługa systemu Windows). Klienci komunikują się z serwisami Analysis Services używając standardu odmiany języka XML przeznaczonej do analiz, XML/A (ang. XML for Analysis) – protokołu opartego na SOAP służącego do wysyłania poleceń i odbierania odpowiedzi, działającego jako Usługa Web. Modele obiektów klienckich są także dostępne ponad XMLA i mogą być obsługiwane przy użyciu technologii określonego dostawcy (jak np. ADOMD.NET) lub przez natywnego dostawcę OLE DB. Zapytania mogą być zapisywane za pomocą następujących języków: SQL, MDX (ang. Multidimensional Expressions – język zapytań zorientowany na analizę danych), DMX (ang. Data Mining Extensions – język zapytań zorientowany na eksplorację danych). Język skryptowy ASSL (ang. Analysis Services Scripting Language) jest używany do zarządzania obiektami bazy danych Analysis Services. Analysis Services umożliwiają także pracę w aplikacjach klienckich odłączonych od serwera. Odpowiednie mechanizmy zapewniają możliwość przeglądania lokalnie przechowywanych danych wielowymiarowych. Komponenty Analysis Services, architektura serwera AS Komponent serwerowy Analysis Services działa jako serwis systemu Windows (jest uruchamiany za pomocą pliku msmdsrv.exe). Aplikacja ta składa się z komponentów bezpieczeństwa, komponentu do nasłuchu XML/A, komponentu procesora zapytań oraz licznych komponentów wewnętrznych, które wykonują następujące zadania: • • • • • • • • • odbiór i analiza zapytań klienta zarządzanie zbiorem metadanych utrzymywanie transakcji wykonywanie obliczeń zapisywanie danych obliczanie i zapis danych zagregowanych kolejkowanie zapytań zachowywanie obiektów w pamięci podręcznej zarządzanie zasobami serwera Architektura klienta Analysis Services wspiera architekturę cienkiego klienta (klienta niezależnego od systemu operacyjnego, działającego w oparciu o przeglądarkę stron WWW). Silnik Analysis Services jest zlokalizowany całkowicie na serwerze, zaś wartości wszystkich zapytań są obliczane przez komputer, na którym pracuje serwer. Dzięki zastosowaniu takiej architektury możliwa jest pojedyncza komunikacja na linii klient-serwer podczas obliczania i prezentowania wyników zapytania. Pozwala to na osiągnięcie dużej skalowalności, a co za tym idzie, umożliwia wykonywanie i prezentację wyników skomplikowanych zapytań. Strona 11/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Głównym, rodzimym protokołem Analysis Services jest język XML rozszerzony w celu wspierania analizy danych (XMLA). Analysis Services dostarczają kilku interfejsów dostępowych dla aplikacji klienckich, jednak wszystkie te komponenty komunikują się z instancją Analysis Services za pomocą XMLA. Analysis Services oferują różnych dostawców, którzy zapewniają obsługę komunikacji dla różnych języków programowania. Dostawca komunikuje się z Analysis Services poprzez przesyłanie i odbieranie XMLA w pakietach SOAP za pomocą protokołu TCP/IP lub HTTP przy wykorzystaniu Internet Information Services (IIS). Połączenie HTTP wykorzystuje obiekt COM powołany do życia przez IIS, tzw. pompę danych (ang. data pump), która działa na zasadzie bezpośredniego połączenia z danymi Analysis Services. Pompa danych nie analizuje danych przesyłanych przez protokół HTTP. Pojęcie kostki danych W dziedzinie analizy danych kostka (ang. cube) jest zbiorem powiązanych faktów i wymiarów używanym do analizy danych. Fakt (pomiar) jest wartością transakcyjną lub pomiarem, którą użytkownik może agregować. Fakty (pomiary) są zapisywane w kolumnach w jednej lub więcej tabel źródłowych i są grupowane w grupy faktów. Wymiar jest grupą atrybutów, które reprezentują dziedzinę zainteresowania związaną z faktami zawartym w kostce. Atrybuty są wykorzystywane do analizowania i interpretowania wyników analiz faktów. Przykład: wymiar Klient może zawierać atrybuty takie jak: Imię i Nazwisko (Nazwa), Płeć oraz Miasto. Atrybuty są przechowywane w jednej lub większej liczbie tabel źródłowych. Atrybuty w każdym z wymiarów mogą być zorganizowane w hierarchie w celu dostarczenia ścieżek analiz. Po zbudowaniu, kostka danych jest rozszerzana o wyniki obliczeń, perspektywy oraz translacje. W przypadku Analysis Services kostka danych jest utożsamiana z przedstawionym wcześniej jednolitym modelem wymiarów i faktów UDM (ang. Unified Dimensional Model). Analysis Services pozwalają na projektowanie i tworzenie kostki danych w oparciu o tabele i widoki modelowane w widoku danych źródłowych. Przykładowe rozwiązanie Na podstawie bazy relacyjnej firmy Adventure Works Cycles należy zaprojektować schemat wielowymiarowy składający się z kostek danych. Najpierw należy przeanalizować schemat źródłowy, wybrać tabele faktów i potencjalne tabele wymiarów. Wybór tabeli faktów wiąże się z określeniem granulacji i agregatów. Kolejno, dla każdego wymiaru wybiera się poziomy, a na nich tworzy się hierarchie. W razie potrzeby można dowolnie modyfikować schemat wielowymiarowy. Na końcu za pomocą tabel przestawnych należy zaprojektować potrzebne raporty. Wygenerowane w ten sposób raporty mogą służyć do generowania zestawień, wykresów i przekrojowych analiz. Porady praktyczne Uwagi ogólne • Podczas projektowania kostki danych zawsze ustal granulację każdej kostki: jakie dane są faktami i jakie agregaty można określić dla jednego faktu. Bardzo częstym błędem przy projektowaniu kostek danych jest niewłaściwa granulacja, przez co mimo braku błędów logicznych kostka jest całkowicie nieprzydatna. • Określanie wymiarów dla kostki jest istotnym krokiem w projektowaniu kostki. W większości przypadków liczba wymiarów kostki pokrywa się z liczbą kluczy obcych. • Wszystkie nazwy są widoczne z pozycji użytkownika końcowego. Z tego powodu, w odróżnieniu od schematu relacyjnego, używaj nazw znaczących ze spacjami jeżeli tylko potrzeba. Nazwę UnitPriceDctPct zmień na Unit Price Discount Percentage. • Panele i okna Visual Studio posiadają bufory pamięciowe. Jeżeli informacja nie pokazuje się mimo zmiany, zamknij okno i otwórz je jeszcze raz, a zobaczysz zmianę. Strona 12/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Uwagi dla studenta Jesteś przygotowany do realizacji laboratorium jeśli: • • • • umiesz odczytać schemat relacyjny (ERD) rozumiesz, jak ze schematu relacyjnego powstaje schemat wielowymiarowy wiesz z jakich elementów zbudowany jest schemat wielowymiarowy (UDM) jesteś w stanie wymienić komponenty Analysis Services Przed wykonywaniem każdego punktu dokładnie przeczytaj cały punkt, to spowoduje znaczne zmniejszenie liczby pomyłek podczas laboratorium i pozwoli na dokładniejsze poznanie materiału. Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. Dodatkowe źródła informacji 1. Klaus Aschenbrenner, Beginning SQL Server 2008 for Developers: From Novice to Professional, Apress, 2008 2. Erik Thomsen, OLAP Solutions: Building Multidimensional Information Systems, Wiley, 2002 3. Ralph Kimball, Margy Ross, The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling, Wiley, 2002 4. Teo Lachev, Applied Microsoft Analysis Services 2005: And Microsoft Business Intelligence Platform, Prologika Press, 2005 5. Sivakumar Harinath, Robert Zare, Sethu Meenakshisundaram, Matt Carroll, Professional Microsoft SQL Server Analysis Services 2008 with MDX, Wrox, 2008 6. W. Lehner, J. Albrecht, H. Wedekind - Normal Forms for Multidimensional Databases, 10th International Conference on Scientific and Statistical Database Management, Proceedings, Capri, Italy, July, 1998. IEEE Computer Society 1-3, 1998. 7. P. Vassiliadis - Modeling Multidimensional Databases, Cubes and Cube Operations. Proceedings, Capri, Italy, July, 1998. IEEE Computer Society 1-3, 1998. 8. E. Franconi, U. Sattler - A Data Warehouse Conceptual Data Model for Multidimensional Aggregation. Proc. of the Int. Workshop on Design and Management of Data Warehouse, 1999. 9. M. Gyssens, L. Lakshmanan - A Foundation for Multi-Dimensional Databases. Proc. of the 23rd VLDB Conference, 1997. Strona 13/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Laboratorium podstawowe Zarząd Adventure Works Cycles zamierza usprawnić zarządzanie firmą. W tym celu potrzebna jest hurtownia danych pozwalająca na zamodelowanie relacyjnych danych w biznesową postać danych. Potrzebne jest szybkie generowanie raportów podsumowujących za pomocą tabel przestawnych. Utworzone kostki danych pomogą także w późniejszej analizie analizie danych (zaawansowane raporty, eksploracja danych). Tworzenie widoku danych, definiowanie kostki i wymiarów (czas realizacji 20min) W tej części zaprezentujemy schemat danych źródłowych, zdefiniujemy połączenie z bazą danych, wybierzemy interesujące tabele, które w kolejnym ćwiczeniu będą tworzyć wymiary kostki. Dane wykorzystywane do budowy kostki danych mogą pochodzić z wielu różnego typu źródeł. Utworzenie widoku źródła danych pozwala na wybranie tych tabel, które będą potrzebne do zbudowania udowania kostki, oraz odfiltrowanie pozostałych tabel, często niepotrzebnie komplikujących postać źródła danych. Po wybraniu tabel ze źródła danych istnieje możliwość przypisania im tzw. przyjaznych nazw (ang. friendly names). Przyjazne nazwy mogą się na początku p wydać niepotrzebne, jednak jeśli ma się do czynienia z bazą danych, w której tabele są nazwane skrótami (często podobnymi do siebie), wtedy możliwość nadania friendly names jest bardzo przydatna. Zadanie Tok postępowania 1. Utworzenie projektu z szablonu Analysis Services • Uruchom aplikację SQL Server Business Intelligence Development Studio z grupy Microsoft SQL Server 2005. Uruchamia się Microsoft Visual Studio z zainstalowanymi możliwościami ościami tworzenia projektów BI dla SQL Server 2008. • Z menu głównego wybierz File -> New -> Project. • Z listy Project Types wybierz Business Intelligence Projects. Projects Jeżeli na komputerze jest już zainstalowany Microsoft Visual Studio w wersji 2003, 2005 lub 2008, to oprócz wspomnianego Business Intelligence Projects na liście może pojawić się więcej niż jeden typ projektu. • W Templates wskaż Analysis Services Project. • W polu Name podaj nazwę projektu (np. AdventureWorksDW). AdventureWorksDW • Kliknij OK. 2. Przeglądanie źródła danych • Otwórz Otw SQL Server Management Studio. • W Object Explorer wybierz Connect, a następnie Database Engine. Engine Rys. 1 Połączenie do bazy danych w Object Explorer • • • • Jako nazwę serwera wpisz localhost i kliknij Connect. Connect Rozwiń Databases -> Adventure Works DW. Rozwiń Database Diagrams. Jeżeli pokaże się okienko o konieczności dodania nowych tabel do przechowywania diagramów, kliknij Yes. Strona 14/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy • Kliknij prawym przyciskiem myszy Database Diagrams i wybierz New Database Diagram. Diagram Rys. 2 Tworzenie nowego diagramu dla bazy danych • Zaznacz wszystkie dostępne AdventureWorksDWBuildVersion i kliknij Add. tabele oprócz Zaznaczenie wszystkich tabel można łatwo uzyskać poprzez zaznaczenie pierwszej tabeli, a następnie kliknięcie na ostatniej z przytrzymanym klawiszem Shift.. Aby dodać lub usunąć tabelę z zaznaczenia należy kliknąć na tabelę z przytrzymanym klawiszem Ctrl. • Kliknij Close. • Na diagramie znajdź z tabelę FactInternetSales i sprawdź, do jakich tabel prowadzą klucze obce. • Zapisz diagram pod nazwą WarehouseSchema (File File -> Save Diagram). • Zamknij SQL Server Management Studio. 3. Definiowanie źródła danych • Przejdź do Microsoft Visual Studio. • W oknie Solution Explorer kliknij prawym przyciskiem myszy Data Sources i z kontekstowego menu wybierz New Data Source. Source Rys. 3 Tworzenie nowego źródła danych • W oknie dialogowym Select how to define the connection wybierz przycisk New. • W dialogu Connection Manager podaj szczegóły połączenia: — — — — Provider: Native OLE DB\Microsoft OLE DB B Provider for SQL Server. Server Server name: localhost. Use Windows Authentication Select or enter a database name: AdventureWorksDW. AdventureWorksDW • Klik Kliknij OK. • Kliknij Next, wybierz Use the service account i kliknij Next. Kliknij Finish. Rys. 4 Utworzone źródło danych Strona 15/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych 4. Definiowanie widoku źródła danych dla projektu Analysis Services Moduł III Zunifikowany Moduł Wymiarowy • Na panelu Solution Explorer kliknij prawym przyciskiem myszy Data Source Views i wybierz New Data Source View. Rys. 5 Tworzenie nowego widoku źródła danych • Z listy Relational data sources wybierz źródło Adventure Works DW i kliknij Next. • Przytrzymując klawisz Ctrl wybierz interesujące tabele: — — — — — DimCustomer DimGeography DimProduct DimDate FactInternetSales Należy dokładnie sprawdzić, jakie tabele zostały zaznaczone. Na liście jest kilka tabel o podobnych nazwach, więc nie trudno o pomyłkę. Aby odznaczyć tabelę, należy jeszcze raz jąą kliknąć przytrzymując klawisz Ctrl. • Za pomocą przycisku > przenieś wybrane tabele do listy Included Objects Objects. • Kliknij Next i później Finish. Rys. 6 Tabele wybrane do kostki danych Po kliknięciu Finish został utworzony widok danych zawierające tabele potrzebne do budowy kostki. tki. Panel edycyjny widoku został otwarty w głównym oknie Microsoft Visual Studio io i dzieli się na trzy części: — Diagram Organizer (po lewej na górze), — Tables (po lewej na dole), — Diagram (największa, centralna część). • Przeanaliz Przeanalizuj zawartość paneli Diagram, Tables oraz Diagram Organizer. • Kliknij prawym przyciskiem myszy puste pole Diagram, Diagram a następnie z kontekstowego menu wybierz Add/Remove Tables. Tables Strona 16/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Rys. 7 Dodawanie nowych tabel do źródła danych W otwartym oknie można dodawać lub usuwać tabele z widoku. Funkcja ta przydaje się, jeżeli zależy nam na dodatkowej tabeli, a zapomnieliśmy jej przy tworzeniu widoku. • Kliknij Anuluj. 5. Zmiana domyślnych nazw tabel źródłowych Każda z tabel oprócz nazwy, którą została jej nadana n w bazie danych, posiada także nawę przyjazną dla użytkownika. Domyślnie nazwa ta jest taka, jak nazwa tabeli w bazie danych. • Z menu głównego wybierz View -> Properties, Properties a następnie zaznacz tabelę DimGeography. Rys. 8 Zmiana przyjaznej nazwy dla tabeli • Za pomocą okna Properties zmień właściwość FriendlyName tabel zgodnie z poniższą listą: — — — — — FactInternetSales -> InternetSales DimCustomer -> Customer DimDate -> Date DimGeography -> Geography DimProduct -> Product Definiowanie i publikowanie kostki danych (czas realizacji 20 min) Kolejne ćwiczenie wiczenie przeprowadzi przeprowadz Cię przez proces budowania kostki danych. Określisz hierarchie, atrybuty oraz fakty tworzące kostkę danych. Zweryfikujesz działanie kreatora pomagającego przy budowie kostki danych. Ostatnimi krokami ćwiczenia są: budowa i publikacja oraz późniejsze przeglądanie utworzonej kostki danych. Zadanie Tok postępowania 6. Definiowanie kostki danych • W oknie Solution Explorer prawym przyciskiem zyciskiem myszy kliknij Cubes i wyb wybierz New Cube. Strona 17/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Rys. 9 Tworzenie nowej kostki danych • Zaznacz Use existing tables i kliknij Next. • Jako Data source view wybierz Adventure Works DW i zaznacz tabelę InternetSales Kliknij Next. InternetSales. • Odznacz następujące pola: — — — — Promotion Key Currency Key Sales Territory Key – Internet Sales Revision Number • Kliknij Next. • Wybierz wszystkie wymiary oprócz Internet Sales. Sales Rys. 10 Wybieranie wymiarów do utworzenia • Kliknij Next. • Przejrzyj Przejrzy utworzone agregaty i wymiary. Kliknij Finish. Finish Rys. 11 Projekt ze źródłem danych, widokiem źródła, kostką danych i wymiarami Została utworzona kostka Adventure Works DW i trzy wymiary: Product, Date, Customer.. Domyślnie okno projektowania kostki otwiera się w panelu głównym Microsoft Visual Studio, Studio nazwa zakładki to Adventure Works DW.cube.. W widoku projektowania kostki mamy dostępnych kilka zakładek: Cube Structure, Structure Dimension Usage, Calculations, KPIs, Actions, Partitions, Aggregations, Aggregations Perspectives, Translations, Browser.. Większość z tych zakładek omówimy w kolejnych punkach lub w następnych ćwiczeniach. Strona 18/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy • Przeanalizuj Przeanaliz zawartość zakładki Cube Structure. 7. Przeglądanie widoku edycji kostki • Przełącz się na zakładkę Dimension Usage. Należy zwrócić szczególną uwagę na liczbę stworzonych wymiarów. Pomimo podania 3 tabel wymiarów i jednej tabeli tab wymiaru czasu, na panelu Dimensions jest widocznych 5 wymiarów. Jest to spowodowane zdefiniowaniem waniem 3 różnych wymiarów czasu, a także złączeniem dwóch tablic wymiarów w jeden wymiar (tabele Customer i Geography). • Kliknij przycisk w prawej części wymiaru Product w grupie agregatów Internet Sales (na przecięciu Product i Internet Sales znajduje się napis Product Key). Key Rys. 12 Wymiary dla grup pomiarów • Sprawdź typ relacji (Relationship ( type), ), granulację granulacj atrybutu (Granularity Granularity attribute), attribute tabelę wymiaru (Dimension Dimension Table), Table tabelę grupy agregatów, agregatów czyli tabelę faktów (Measure Measure group table), table a także kolumn klucza obcego do tabeli wymiaru (Measure kolumnę Measure Group Columns). Columns • Kliknij OK. • Sprawdź pozostałe wymiary. 8. Publikowanie kostki danych na AS2008 W celu przeglądania danych zawartych w kostce danych konieczne jest opublikowanie stworzonej kostki danych. Idea procesu publikowania (deployowania) kostki danych jest w kilku aspektach zbliżona do procesu publikowania aplikacji webowych na serwerach aplikacji. Aby przygotować kostkę danych do opublikowania, opublikowania należy odpowiednio ustawić jej właściwości. • Kliknij prawym przyciskiem myszy nazwę projektu w oknie Solution Explorer i wybierz Properties. • Z drzewka po lewej stronie okna dialogowego wybierz Deployment. • Przeanalizuj zawartość pól po prawej stronie okna. Domyślną metodą publikacji jest publikowanie inkrementacyjne do domyślnej instancji Analysis Services na komputer lokalny. • Kliknij OK, aby zamknąć okno właściwości. • W celu opublikowania projektu w Solution Explorer kliknij prawym przyciskiem myszy jego nazwę i wybierz Deploy. Warto prześledzić zawartość okna Output oraz panelu Deployment progress.. Oba okna zawierają szczegóły operacji budowania bu i publikowana projektu. • Przeanalizuj zapytania używane do przetwarzania atrybutów wymiarów. 9. Przeglądanie opublikowanej • W widoku projektu kostki kliknij zakładkę Browser. Browser Aby otworzyć widok projektu kostki w panelu Solution Explorer, Explorer kliknij Strona 19/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych kostki Moduł III Zunifikowany Moduł Wymiarowy podwójnie kostkę Adventure Works DW.cube. DW.cube Jeżeli wymiary i agregaty nie są widoczne, kliknij przycisk Reconnect. Niekiedy najlepiej jest zamknąć okno edycji kostki i otworzyć je ponownie, klikając kostkę w Solution Explorer. Rys. 13 Odświeżenie danych poprzez ponowne połączenie Jakie są dostępne agregaty i wymiary? • Przenieś Sales Amount i Internet Sales Count na pole szczegółów (Drop ( Total or Detail Fields Here). Here • Przenieś Customer Key na pole wierszy (Frop Frop Row Fields Here). Here Rys. 14 Przykładowy raport zbudowany w oparciu o tabele tab przestawne Budowa raportu przestawnego została zakończona. Poziomy w wymiarach nie są jeszcze poprawnie zdefiniowane, dlatego nie ma sensu definiować innych raportów. Edycja wymiarów, poziomów i hierarchii (czas realizacji 15 min) Po utworzeniu pierwszej wersji kostki danych należy przejrzeć dokładnie kostkę danych i dokonać niezbędne zmiany w odniesieniu do wymiarów, poziomów, hierarchii i atrybutów. Zadanie Tok postępowania 10. Edycja poziomu Product • W Solution Explorer rozwiń Dimensions i kliknij dwukrotnie Product.dim aby otworzyć okno edycji wymiaru. Product.dim, W otworzonym oknie edycji wymiaru możemy zobaczyć trzy części: Attributes, Hierarchies, Data Source View.. Aktualnie jest tylko jeden poziom nazwany Product Key. • Aby dodać kolejny kolejny poziom powiązany z konkretną kolumną w tabeli wymiaru kliknij prawym przyciskiem myszy kolumnę EnglishProductName i z kontekstowego menu wybierz Add New Attribute from Column. Column Strona 20/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Rys. 15 Dodanie poziomu na podstawie kolumny Został dodany poziom o nazwie English Product Name. Name Aplikacja sama utworzyła nazwę poziomu z nazwy kolumny poprzez wstawienie spacji przed duże litery (EnglishProductName -> English Product Name). Name • Aby zmienić nazwę poziomu, poziomu kliknij prawym przyciskiem myszy poziom i z kontekstowego menu wybierz Rename.. Zmień nazwę na Product Name Name. • Dodaj pozostałe poziomy dla wymiaru Product: — — — — — — — — — — — — — — — WeightUnitMeasureCode -> Weight Unit Measure Code SizeUnitMeasureCode -> Size Unit Measure Code Color -> Color Size -> Size Weight -> Weight ProductLine -> Product Line DealerPrice -> Dealer Price Class -> Class Style -> Style ModelName -> Model Name EnglishDescription -> Description Status -> Status DealerPrice -> Dealer Price ListPrice -> List Price DaysToManufacture -> Days To Manufacture Kolejnym krokiem jest modyfikacja poziomów dla wymiaru Product. Poziom Product Key jest kluczem i nie powinien być wyświetlany, wyświetlany z kolei inne poziomy posiadają pewien typ i powinny być wyświetlane w określony sposób. • Kliknij prawym przyciskiem myszy Product Key i z kontekstowego menu wybierz Properties. • W oknie właściwości dla poziomu zmień AttributeHierarchyVisible z wartości True na wartość False. 11. Edycja poziomu Time • Dla wymiaru Date dodaj następujące poziomy: — — — — — — — CalendarYear -> Year CalendarQuarter -> Quarter MonthNumberOfYear -> Month Number EnglishMonthName -> Month Name WeekNumberOfYear -> Week Of Year DayNumberOfYear -> Day Of Year DayNumberOfMonth -> Day Of Month Strona 21/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy — FullDateAlternateKey -> Full Date • Klik Kliknij prawym przyciskiem myszy poziom Year i z kontekstowego menu wybierz Properties. W oknie właściwości dla poziomu Year zmień OrderBy z Name na Key, a także Type z Regular na Years (z rozwijanego drzewa Date \ Calendar \ Years). • Dla pozostałych wymiarów zmień wartości Type na następujące: następ — — — — — — — — Year -> Date \ Calendar \ Years Quarter -> Date \ Calendar \ Quarters Month Number -> Date \ Calendar \ MonthOfYear Month Name -> Date \ Calendar \ Months Week Of Year -> Date \ Calendar \ WeekOfYear Day Of Year -> Date \ Calendar \ DayOfYear Day Of Month -> Date \ Calendar \ DayOfMonth Full Date -> Date \ Calendar \ Date Zmiana typów dla poziomów nie jest istotna z punktu widzenia użytkownika, tylko utworzonych później agregacji. Na podstawie typów można określić, jakie relacje są pomiędzy poszczególnymi poszczegó poziomami. Poziomy zostały podświetlone na niebiesko, co oznacza pewne błędy w wymiarze. Powodem tego jest typ wymiaru Time, który jest typem Regular.. Należy zmienić typ wymiaru na Time. • Kliknij prawym przyciskiem myszy wymiar Time i wybierz Properties. Rys. 16 Wyświetlenie właściwości dla wymiaru • W okienku właściwości dla wymiaru Time zmień Type z Regular na Time Time. Kolejno chcemy ukryć ID dla tabeli daty i czasu. Poziom ten nie jest potrzebny w naszym wymiarze do widoku użytkownika. Nie możemy usunąć tego poziomu, ponieważ jest to klucz główny w tabeli wymiaru. Usunięcie Time Key spowoduje błąd w wymiarze uniemożliwiający publikację kostki. • Dla poziomu Time Key zmień właściwość AttributeHierarchyVisible na Fa False. 12. Dodawanie hierarchii dla wymiaru Time • W oknie projektowania wymiaru Date wybierz zakładkę dimension Structure Structure. • Przenieś poziom Year z panelu Attributes do panelu Hierarchies. Została utworzona hierarchia o nazwie Hierarchy, Hierarchy która posiada tylko jeden poziom: Year. • Przenieś kolumnę Quarter z panelu Attributes do panelu Hierarchies, Strona 22/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy hierarchii Hierarchy poniżej poziomu Year. • Dodaj do hierarchii następujące kolumny: Month Name, Name Day of Month, Full Date. Date • We właściwościach hierarchii zmień nazwę na Date by Year Quarter Month Month. 13. Edycja poziomu Customer • Dla wymiaru Customer dodaj poziomy z następujących kolumn: — — — — — — — — — — — — — — — — — — Title -> Title FirstName -> First Name LastName -> Last Name BirthDate -> Birth Date MaritialStatus -> Maritial Status Gender -> Gender Email Address -> Email YearlyIncome -> Yearly Income TotalChildren -> Total Children NumberChildrenAtHome -> Number of Children At Home EnglishEducation -> Education EnglishOccupation -> Occupation HouseOwnerFlag -> House Owner Flag NumberCarsOwned -> Number of Cars Owned AddressLine1 -> Address Phone -> Phone ComuteDistance -> Comute Distance EnglishCountryRegionName -> Country Region Name • Dla odpowiednich poziomów zmień właściwość Type: Type — — — — — — Country Region Name -> Geography \ Region Country Region Code -> Geography \ Region State Province Code -> Geography \ StateOrProvince State Province Name -> Geography \ StateOrProvince City -> Geography \ City Address -> Other \ Location \ Address Podobnie jak zmiany dla wymiaru Date,, typy dla poziomów wymiaru Customer pozwolą na lepsze zrozumienie zależności pomiędzy poszczególnymi poziomami i bardziej skuteczne projektowanie agregacji. • Ustaw właściwość AttributeHierarchyDisplayFolder Location dla poziomów: — — — — na wartość City Country Region Name Postal Code State Province Name Niektóre wymiary posiadają wiele poziomów. Ustawienie folderu dla każdego z nich pozwala uporządkować wymiar, aby łatwiej było odnaleźć potrzebne dane. • Ustaw właściwość AttributeHierarchyDisplayFolder Demographic dla poziomów: — Commute Distance Strona 23/29 na wartość Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych — — — — — — — — — 14. Dodawanie kolumn kalkulowanych Moduł III Zunifikowany Moduł Wymiarowy Education Gender House Owner Flag Marital Status Number Cars Owned Number Children At Home Occupation Total Children Yearly Income Jak można zauważyć, wymiar Customer posiada osobno imię i nazwisko klienta. Zależy nam jednak na informacji pełnej, peł która zawiera imię i nazwisko w jednej kolumnie.. Można to uzyskać dodając kolumnę kalkulowaną. • Otwórz widok edycji widoku źródła danych klikając dwukrotnie Adventure Works DW.dsv. DW.dsv • Kliknij prawym przyciskiem myszy tabelę Customer tomer (jej nazwę) i wybierz New Named Calculation. Calculation Rys. 17 Dodanie nowej kolumny kalkulowanej • Wpisz następujące wartości: — Column name: FullName — Description: Full name of customer — Expression: case when MiddleName is null then FirstName + ' ' + LastName else FirstName + ' ' + MiddleName + ' ' + LastName End • Kliknij OK. Wpisane wyrażenie jest to kod SQL który zostanie dopisany do zapytania SQL do frazy select,, co pozwoli na obliczenie pełnej nazwy klienta dla każdego wiersza. • Kliknij prawym przyciskiem myszy tabelę Customer i wybierz Explore Data Sprawdź, czy w dodanej na końcu w kolumnie Data. kolumn FullName znajdują się poprawne wartości. • Dodaj poziom Full Name w wymiarze Customer. Po dodaniu kolumny kalkulowanej lub w przypadku padku zmiany schematu źródłowego zmiany te są od razu widoczne w widoku źródła danych, dlatego jesteśmy w stanie bardzo szybko zmodyfikować kostkę. Strona 24/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Budowanie raportów za pomocą tabel przestawnych (czas realizacji 10 min) Po zmianach w wymiarach, hierarchiach i poziomach można przejść do budowania prostych raportów za pomocą wbudowanych tabel przestawnych. Jest to bardzo prosty sposób na eksplorację danych i sprawdzenie, jak prezentuje się zbudowana kostka danych. Zadanie Tok postępowania 15. Deploy kostki danych • Kliknij prawym przyciskiem myszy projekt Adventure Works DW i wybierz Process. • Jeżeli pokaże się okienko o ponownym budowaniu projektu, kliknij Yes. • Kliknij Klikn Run, aby rozpocząć przetwarzanie kostki danych. W razie ewentualnych błędów należy dobrze obrze sprawdzić wymiary, poziomy i hierarchie. Po przetworzeniu procesu można sprawdzić, jaka liczba wierszy została przetworzona i ile czasu trwało samo przetwarzanie. Rys. 18Log Log z publikowania kostki danych • Kliknij Klikn Close i jeszcze raz Close. • W oknie Adventure Works DW.cube przejdź na zakładkę Browser. Jakie wymiary i agregaty zawiera kostka Adventure Works DW? DW 16. Definiowanie prostego raportu • Prze Przeciągnij agregaty: Internet Sales Count i Unit Price do pola szczegółów (Drop ( Totals Or Detail Fields Here). • Przeciągnij poziom Color z wymiaru Product do pola wierszy (Drop ( Row Fields Here). Here Rys. 19 Raport przedstawiający cenę jednostek i liczbę sprzedaży w zależności od koloru produktu • Na raporcie kliknij Internet Sales Count i naciśnij Delete, kliknij także Color i naciśnij Delete. • Przeciągnij do raportu agregat Tax Amt i poziom Year z wymiaru Ship Date Date. Strona 25/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Rys. 20 Poziomy i hierarchia dla wymiaru Ship Date, raport przedstawiający cenę jednostek i podatek w zależności od roku Można zauważyć, że nie da się rozwinąć lat, ponieważ poziom Year został wybrany bezpośrednio z wymiaru, a nie z hierarchii. hier • Usuń z raportu Year, a następnie przeciągnij Year z wymiaru Ship Date z hierarchii Date by Year Quarter Month Day. Rys. 21 Poziomy i hierarchia dla wymiaru Ship Date, raport przedstawiający cenę jednostek i podatek w zależności od roku rozwijanego do kwartału i miesiąca 17. Tworzenie zaawansowanego raportu • • • • Do pól szczegółów przenieś agregaty Order Quantity i Sales Amount. Do pól kolumn przenieś poziom Education z wymiaru Customer. Do pól wierszy przenieś poziom Product Line z wymiaru Product. Do pól filtrów przenieś poziom Year z wymiaru Ship Date. Date Rozwiń lata i zaznacz tylko wartości 2002 i 2003. Rys. 22 Raport przedstawiający liczbę jednostek ostek zamówionych i sumę sprzedaży w zależności od linii produktu i płci Przeglądanie opublikowanej kostki za pomocą Microsoft SQL Server Management Studio (czas realizacji 10 min) Opublikowana kostka znajduje się w Analysis Services.. Można ją przeglądać nie tylko za pomocą projektu, ale także za pomocą konsoli zarządzającej bazami SQL Server. Server Przeglądanie kostki i tworzenie raportów wielowymiarowych możliwe jest także za pomocą Reporting Services i dowolnego narzędzia, które jest klientem klientem zgodnym ze specyfikacją XML/A. Zadanie Tok postępowania 18. Przeglądanie kostki danych za • Otwórz SQL Server Management Studio,, a następnie w oknie Object Explorer wybierz Analysis Services. Strona 26/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy pomocą konsoli zarządzającej Rys. 23Połączenie do serwera Analysis Services • Wpisz nazwę serwera (localhost), a następnie kliknij Connect. • Rozwiń Databases -> Cubes, a następnie kliknij prawym przyciskiem myszy kostkę i z kontekstowego menu wybierz Browse. • Utwórz kilka przykładowych raportów. Strona 27/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy Laboratorium rozszerzone Zadanie 1 (czas realizacji 10 min) W wymiarze Time utwórz hierarchię Year – Month Number – Day of Month. Zadanie 2 (czas realizacji 10 min) Kwartał jest wyświetlany jako numer kwartału: 1, 2, 3, 4. W raportach powinien być wyświetlany jako Q1, Q2, Q3 i Q4. Używając nowej kolumny, dodaj poziom Quarter Name i utwórz hierarchię: Year – Quarter Name – Month Name. Zadanie 3 (czas realizacji 15 min) Product Line zawiera oznaczenia: M, R, S i T. Nie jest to przejrzyste z punktu widzenia użytkownika biznesowego. Należy zmienić wyświetlanie tych wartości na raportach na nazwy znaczące. Używając kolumny kalkulowanej i polecenia case when when when else end <warunek1> then <rezultat1> <warunek2> then <rezultat2> <warunek3> then <rezultat3> <rezultat4> zmień poziom Product Line na następujące wartości: — — — — — M – Mountain R – Road S – Accessory T – Touring w pozostałych przypadkach – Components utwórz nową kolumnę kalkulowaną ProductFullLine, a następnie dodaj poziom Product Full Line oparty na nowo utworzonej kolumnie. Zadanie 4 (czas realizacji 15 min) Wymiar klienta (Customer) nie posiada żadnych hierarchii. W celu sprawnego projektowania raportów konieczne jest zdefiniowanie następujących hierarchii: • Customer by Location: Country Region Name -> State Province Name -> City • Customer By Education and Occupation: Education -> Occupation Zdefiniuj wspomniane hierarchie i utwórz dwa raporty: wszystkie agregaty w zależności od danej hierarchii. Zadanie 5 (czas realizacji 40 min) Firma Czysta Energia jest jednym z producentów i dostawców mediów do mieszkań. Właśnie wdrożone zostały odczyty elektroniczne z liczników gazu, wody i energii elektrycznej. Odczyty, w odróżnieniu od tradycyjnych przechowują stan różnicowy zużycia medium (oznacza to, że wartości wyznaczają zużycie od ostatnio przesłanego pomiaru, nie od początku założenia licznika). Dane są przechowywane w bazie danych, co umożliwia wystawianie rachunków dla odbiorców indywidualnych. Problemem są raporty, które należy generować co pewien czas – zajmuje to znaczące zasoby sprzętowe. Pojedynczy pomiar odczytywany jest co pół godziny, dlatego liczba pomiarów Strona 28/29 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł III Zunifikowany Moduł Wymiarowy przekracza kilkaset milionów miesięcznie. Powoduje to znaczne wykorzystanie bazy przy przekrojowych raportach analitycznych. Rozwiązaniem jest zbudowanie kostki danych z kilkoma wymiarami, dzięki czemu możliwe będzie bardzo szybkie tworzenie raportów za pomocą tabel przestawnych, a także późniejsza ich prezentacja na stronie WWW (za pomocą Reporting Services). Skrypt tworzący bazę danych wraz z przykładowymi danymi znajduje się w pliku DigitalMeters.sql. Zapoznaj się ze schematem relacyjnym, a następnie utwórz kostkę danych Measures z następującymi wymiarami: Meter, Date, Vendor, Temperature. Za pomocą tabel przestawnych zaprojektuj następujące raporty: • Suma zużycia mediów w zależności od roku i typu licznika. • Suma zużycia mediów w zależności od dostawcy, tylko dla energii. • Suma zużycia mediów w zależności od siły wiatru, tylko dla gazu. Strona 29/29 ITA-102 Hurtownie danych Marcin Gorawski, Sławomir Bańkowski Moduł 4 Wersja 1.0 Usługi analiz danych: tworzenie i modyfikacja kostki danych Spis treści Usługi analiz danych: tworzenie i modyfikacja kostki danych ............................................................. 1 Informacje o module ............................................................................................................................ 2 Podstawy teoretyczne .......................................................................................................................... 3 Laboratorium podstawowe .................................................................................................................. 4 Modyfikacja wymiarów, poziomów i hierarchii (czas realizacji 20min)....................................... 4 Modyfikacja wyświetlania agregatów, dodawanie agregatów kalkulowanych (czas realizacji 15min) .......................................................................................................................................... 9 Dodanie nowego wymiaru do kostki danych (czas realizacji 15min)......................................... 11 Tworzenie nowej perspektywy w kostce danych (czas realizacji 15min) .................................. 13 Tworzenie nowej kostki danych (cza realizacji 10 min) ............................................................. 17 Laboratorium rozszerzone ................................................................................................................. 19 Zadanie 1 (czas realizacji 10 min)............................................................................................... 19 Zadanie 2 (czas realizacji 10 min)............................................................................................... 19 Zadanie 3 (czas realizacji 15 min)............................................................................................... 19 Zadanie 4 (czas realizacji 15 min)............................................................................................... 19 Zadanie 5 (czas realizacji 40 min)............................................................................................... 19 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Informacje o module Opis modułu W module znajdziesz zaawansowane operacje dla usług analiz danych. Są to rozszerzone funkcje przedstawione w poprzednim module (Usługi analiz danych: zunifikowany model wymiarowy). Omawiamy także nowe funkcjonalności niezbędne do prawidłowego zbudowania kostek danych: edycję źródła danych, tworzenie perspektywy kostki, definiowanie agregatów kalkulowanych. Cel modułu Celem modułu jest przedstawienie modyfikacji istniejących kostek danych, wymiarów, ustawiania elementów domyślnych, całkowitych i niezdefiniowanych, zmianę formatowania poziomów, dodawania nowych agregacji kalkulowanych, dodawania perspektywy w kostce, a także dodawania nowych kostek danych. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • wiedział jak zmodyfikować poziomy i ustawić element domyślny, całkowity, niezdefiniowany • potrafił zmienić właściwości i sposób wyświetlania agregatów, dodać nowy agregat kalkulowany • znał sposoby dodania nowego wymiaru do kostki i modyfikację istniejących wymiarów • umiał dodać nową perspektywę do kostki danych, dodać nowy wymiar do koski, a także utworzyć zupełnie nową kostkę danych Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • rozumieć schemat relacyjny, a także jak powstaje kostka danych • znać model wielowymiarowy, z czego składa się schemat wielowymiarowy • potrafić utworzyć kostkę danych, agregaty dla kostki, a także poziomy, wymiary i hierarchie Strona 2/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Mapa zależności modułu Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w module 3. Rys. 1 Mapa zależności modułu Podstawy teoretyczne Podstawy teoretyczne zawiera moduł III pt.: Usługi analiz danych: zunifikowany model wymiarowy. Strona 3/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Laboratorium podstawowe W tej części przedstawimy możliwości modyfikacji utworzonej już uprzednio kostki danych. danych Zajmiemy się modyfikacja wymiarów: dodawaniem wymiarów, poziomów, agregatów, hierarchii, a także definiowaniem nowych perspektyw danych i samych kostek danych. Przed modyfikacją wymiarów i kostki będziemy zmieniać widok źródła danych dodając kolejne tabele. tabe Możliwość dostosowania kostki do potrzeb klienta znacząco wpływa na cały projekt hurtowni danych. Modyfikacja wymiarów, poziomów i hierarchii (czas realizacji 20min) min) Po utworzeniu pierwszej wersji kostki danych należy poprawnie zdefiniować wymiary, a w nich poziomy i hierarchie. Wszystkie kroki wykonywane w fazie projektowania są bardzo ważne i decydują o późniejszym wyglądzie hurtowni danych. Zadanie Tok postępowania 1. Otwarcie projektu • Otw Otwórz Business Intelligence Development Studio (BIDS), następnie z menu wybierz File -> Open -> Project/Solution. • Załaduj z dysku projekt Adventure Works DW z poprzedniego modułu. Jeżeli nie masz projektu z poprzedniego modułu, to możesz wykorzystać gotowy projekt dołączony razem z dokumentacją do aktualnego modułu. 2. Zmiana typów dla wymiarów • Otwórz widok projektu wymiaru Customer. • Wybierz właściwości dla poziomu Customer. Właściwości dla poziomu można wybrać poprzez prawy przycisk myszy Attributes, a następnie wybór Properties. Rys. 2 Wyświetlenie właściwości dla wymiaru • Zmień Type na wartość Customers. 3. Ustawianie elementów domyślnych dla poziomu Year • • • • Otwórz widok edycji dla wymiaru Date. W zakładce Dimension Structure odszukaj poziom Year. Otwórz właściwości dla poziomu Year. Kliknij na przycisk przy własności DefaultMember i wybierz element 2004 2004. Rys. 3 Ustawienie elementu domyślnego Strona 4/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Jeżeli nie można zobaczyć elementów na poziomie Year, należy przeprowadzić publikacje kostki i jeszcze raz otworzyć okno edycji dla poziomu. • Kliknij OK. Rys. 4 Edycja elementu domyślnego Element domyślny dla poziomu może określać różne fakty dla różnych poziomów. Dla daty może to być aktualny rok, kwartał lub miesiąc. Dla produktu może to być kluczowy produkt lub kluczowa branża. Dla departamentów może to być główny departament lub siedziba firmy. 4. Zadanie kontrolne • W ten sam sposób ustaw elementy domyślne dla następujących poziomów: — — — — 5. Ustawianie elementów niezdefiniowanyc h Customer -> City: Albany Customer -> Education: High School Customer -> Maritial Status: S Product -> Product Line: M • W widoku edycji dla wymiaru wyświetl właściwości dla wymiaru Customer Customer. • Sprawdź, czy właściwość UnknownMember jest ustawiona na Visible. • Ustaw właściwość UnknownMemberName na [Other Customers]. Customers] Element niezdefiniowany pomaga szeregować te fakty w kostce, dla których nie da się przypisać określonych danych dla wymiaru. Kostka danych nie posiada referencji typu null,, za to są połączenia do elementów niezdefiniowanych. Nazwa dla takiego elementu pozwala zamienić pusty łańcuch przykładowo na wartość [Brak klienta]. 6. Zadanie kontrolne • Ustaw nazwę elementu niezdefiniowanego dla wymiaru Product na [Other Products], Products] a dla wymiaru Time na [Unknown Date]. Date] 7. Ustawianie nazwy dla elementu całkowitego • W widoku edycji dla wymiaru wyświetl właściwości dla wymiaru Time. • Dla wymiaru Date ustaw właściwość AttributeAllMemberName na [All Dates] Dates]. 8. Zadanie kontrolne • Dla wymiaru Product zmień nazwę dla elementu całkowitego na wartość [All Products]. • Dla wymiaru Customer zmień nazwę dla elementu całkowitego na wartość [All Customers]. 9. Ukrywanie poziomów • Dla poziomu Geography Key w wymiarze Customer ustaw właściwość AttributeHierarchyVisible na wartość False. • Dla poziomu Product Key w wymiarze Product ustaw właściwość AttributeHierarchyVisible na wartość False. Element całkowity pozwala na zebranie ranie wszystkich danych dla elementów określonego wymiaru. Jest to używane w podsumowaniach, gdzie przykładowo mamy dane dla poszczególnych lat, a ostatni wiersz zawiera element [Wszystkie Daty] który sumuje dane dla wyżej wymienionych lat. Strona 5/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych 10. Uporządkowy wanie elementów Moduł IV AS2008 – tworzenie i modyfikacja kostki danych • Przejdź na zakładkę Browser i utwórz raport: Liczba sprzedanych sprzedanyc jednostek (Order ( Quantity)) w zależności od dnia miesiąca (Day ( of Month Month). Taki raport pozwoli nam na określenie, w których dniach klienci mniej chętnie kupują rowery, a następnie dodanie w te dni promocji przy zakupie roweru. Rys. 5 Dni miesiąca wyświetlone w nieprawidłowym porządku Jak można zauważyć, wygenerowany ygenerowany raport nie zawiera dni po kolei. Dni są uporządkowane wg nazw numerów, z tego powodu 10 jest przed 2. • Przejdź do okna edycji wymiaru Time i wyświetl właściwości dla poziomu Day of Month. • Zmień właściwość OrderBy dla poziomu Day of Month w wymiarze Time na wartość Key. • Przeprowadź operację Process dla kostki, a następnie wykonaj wykona poprzedni raport jeszcze raz. Rys. 6 Dni miesiąca wyświetlone w prawidłowym porządku Po zmianie kolejność dni jest już poprawna. Można zauważyć, że dla każdego poziomu można ustawić kolumnę klucza i nazwy, a także typ sortowania. Różne kolumny klucza i nazwy są przydatne w przypadku pr danych duplikujących się. Najlepszym przykładem jest poziom Full Name, który posiada imię i nazwisko osoby. Co jednak się stanie, jeżeli będą dwie osoby o nazwie John Smith? Te dwie osoby zostaną wyświetlone w jednym wierszu, ponieważ klucz dla poziomu poz jest ustawiony na określoną nazwę. W tym wypadku lepiej jest ustawić klucz na kolumnie klucza, natomiast nazwę poziomu na kolumnie FullName. Po takiej operacji na raporcie zobaczymy już dwa razy wartość John Smith. Strona 6/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych 11. Uporządkowa nie elementów Moduł IV AS2008 – tworzenie i modyfikacja kostki danych • Przejdź na n zakładkę Browser i utwórz raport: Liczba sprzedanych jednostek (Order ( Quantity) w zależności od koloru (Color). Kolory są ułożone w sposób losowy. Chcielibyśmy uporządkować kolory wg następującej kolejności: White, Yellow, Yellow Silver, Red, Blue, Black, Multi, NA.. Do tej operacji musimy zdefiniować nową kolumnę, kolumnę ustawić kolumnę jako atrybut dla poziomu i wybrać uporządkowanie poziomu względem tego atrybutu. • Przejdź do widoku projektu źródła danych Adventure Works DW.dsv. DW.dsv • Kliknij PPM na tabelę Product i z kontekstowego menu wybierz New Named Calculation. Calculation Wpisz następujące wartości: — Column name: ColorKey — Description: Key for color — Expression: case when Color='White' then 0 when Color='Yellow' then 1 when Color='Silver' then 2 when Color='Grey' then 3 when Color='Silver/Black' then 4 when Color='Blue' then 5 when Color='Red' then 6 when Color='Black' then 7 when Color='Multi' then 8 when Color='NA' then 9 else 10 1 end • Przejdź na widok projektowania wymiaru Product, Product zakładka Attribute Relationships Relationships. • W panelu Data Source View kliknij prawym przyciskiem myszy ColorKey i wybierz New Attribute from Column. • We właściwościach dla atrybutu ustaw AttributeHierarchyVisible na wartość False. • Przejdź do zakładki Attribute Relationships. Rys. 7 Relacje pomiędzy atrybutami wymiaru • W panelu Attribute Relationships odszukaj relacji Product Key -> Color Key Kliknij prawym przyciskiem myszy na tej relacji i wybierz Edit Key. Attribute Relationship... Relationship Strona 7/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Rys. 8 Modyfikacja relacji pomiędzy atrybutami wymiaru • Zmień Source Attribute z Product Key na Color. Rys. 9 Ustawienie atrybutu zależnego • Kliknij OK. Teraz powinien się zmienić widok w panelu głównym zakładki Attribute Relationships. Rys. 10Wyświetlenie właściwości dla atrybutu • Kliknij prawym przyciskiem myszy na poziomie Color i wybierz Properties. • Zmień właściwości OrderBy na AttributeKey i OrderByAttribute na Color Key. Rys. 11 Właściwości sortowania dla atrybutu • Wykonaj Process dla kostki danych, a następnie uruchom raport z początku punktu. Rys. 12 Kolory w ustalonym porządku 12. Zadanie kontrolne • Sprawdź poprawność wyświetlania następujących poziomów: — Month Name w wymiarze Date — Week of Year w wymiarze Date Strona 8/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Modyfikacja wyświetlania agregatów, dodawanie dodawanie agregatów kalkulowanych (czas realizacji 15min) Agregaty są bardzo ważną częścią kostki danych. Dane są w postaci biznesowej, gotowej do pokazania na raportach sprawozdawczych, dlatego należy dbać o nazwy agregatów i format ich wyświetlania. Zadanie Tok postępowania 13. Raport z wszystkimi agregatami • W widoku projektowania kostki przejdź na zakładkę Browser. • Przeciągnij wszystkie agregaty (Measures) ( ) na pola szczegółów. • Przeciągnij jeden z poziomów (przykładowo Ship Date.Year) Date.Year na pola wierszy. Można zauważyć, że niektóre agregaty mają niewłaściwą nazwę. Przykładem jest Unit Price Discount Pct,, który powinien się nazywać Unit Price Discount Percentage. Wiele do życzenia pozostawia również sposób wyświetlenia wartości dla tych agregatów: brakuje znaku % i poprawnego formatowania. 14. Zmiana nazw agregatów • W widoku projektowania kostki przejdź na zakładkę Cube Structure. • W panelu Measures kliknij PPM na aregacie Unit Price Discount Pct i wybierz Properties. W wyświetlonych właściwościach zmień nazwę (Name Name) agregatu na Unit Price Discount Percentage. Percentage • Zmień format wyświetlania (FormatString) agregatu Unit Price Discount Percentage na wartość Percent. Rys. 13 Format wyświetlania dla agregatu - użycie procentów • Zmi Zmień format wyświetlania (FormatString)) agregatu Extended Amount na wartość #,###. Rys. 14 Format wyświetlania dla agregatu - użycie notacji liczbowej • Wykonaj Deploy dla kostki danych i sprawdź formatowanie agregatów na przykładowym raporcie. 15. Zadanie kontrolne 16. Dodanie nowego agregatu kalkulowanego • Zmień nazwę agregatu Tax Amt na Tax Amount. • Zmień format wyświetlania wyś Unit Price, Product Standard Cost, Cost Total Product Cost, Cost Tax Amount na Currency. Jeżeli w zbiorze agregatów nie ma wszystkich potrzebnych nam agregatów, możemy dodać nowy agregat obliczany jako wyrażenie z dostępnych agregatów. Przykładowo, jest podatek i całkowity koszt, natomiast nie ma wartości procentowej podatku. • W widoku edycji kostki przełącz prz się na zakładkę Calculations. Calculations • Z paska wybierz New Calculated Member. Możesz także kliknąć PPM na Panelu Script Organizer i wybrać opcję Strona 9/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych New Calculated Member z kontekstowego menu. Rys. 15 Nowy agregat kalkulowany • Jako nazwę wpisz Tax Percentage. • Jako Expression wpisz: [Measures].[Tax Amount]/[Measures].[Total Product Cost] • Jako Format String wybierz Percent. • Jako Associated Measure Group wybierz Internet Sales. Sales • Wykonaj Process dla kostki i utwórz przykładowy raport: % podatek w zależności od roku dostarczenia i kraju. Rys. 16 Raport przedstawiający podatek procentowy w zależności od kraju i roku 17. Zmiana koloru wyświetlania agregatów Czasem potrzebne jest wyróżnienie pewnych elementów na raporcie, co znacznie zwiększa przejrzystość danych. Poniżej pokażemy prosty przykład zmiany koloru czcionki i tła dla bardzo prostych warunków. Calculati • W oknie projektowania kostki wybierz zakładkę Calculations. • W Script Organizer kliknij na utworzony poprzednio agregat Tax Percentage Percentage. • Rozwiń Additional Properties, a nastepnie Color Expressions. Expressions • W Color Expressions dla Fore color wpisz wyrażenie: IIF([Measures].[Tax Amount]/[Measures].[Total Product Cost] > 0.14,255, 16711680) Funkcja IIF przyjmuje trzy parametry, pierwszym jest warunek logiczny określający, czy podatek dla konkretnego wiersza jest mniejszy czy większy od 14%. Drugi argument zostanie zwrócony, jeżeli warunek logiczny jest spełniony, jeżeli niee jest, zostanie zwrócony trzeci parametr. Tajemnicze liczby 255 i 16711680 są to kolory odpowiednio niebieski i czerwony. Jeżeli ktoś nie chce obliczać numerów kolorów ręcznie, może skorzystać z przycisku wyboru koloru umieszczonego po prawej stronie pola edycyjnego dla warunku. • W Colors Expressions dla Back color wpisz: IIF([Measures].[Tax Amount]/[Measures].[Total Product Cost] < 0.136,8454016, 16777215) • Przeprowadź publikację kostki i utwórz raport z poprzedniego punktu jeszcze raz (jeżeli nie będzie widocznych zmian, należy zamknąć i otworzyć okno projektowania kostki danych lub zresetować połączenie). Strona 10/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Rys. 17 Raport z kolorowaniem agregatu kalkulowanego Dodanie nowego wymiaru do kostki danych (czas realizacji 15min) min) Kostka danych jest już zdefiniowana. Jeżeli jednak zapomnieliśmy o wymiarze, lub schemat relacyjny się zmienił i potrzebna jest nowa tabela, to należy zdefiniować nowy wymiar, dołączyć go do kostki, a także uzupełnić wszystkie niezbędne informacje na temat wymiaru. Zadanie Tok postępowania 18. Sprawdzanie schematu relacyjnego • • • • Otwórz SQL Server Management Studio. Podłącz się do bazy AdventureWorksDW (Database Database Engine) Engine . Otwórz diagram zapisany pod nazwą WarehouseSchema. WarehouseSchema Znajdź tabelę FactInternetSales,, odszukaj do jakich tabel oprócz DimProduct DimCustomer i DimDate prowadzą klucze obce. DimProduct, Można łatwo odszukać, że tabela FactInternetSales FactInternetSa posiada klucze obce do tabel: DimPromotion i DimSalesTerritory. DimSalesTerritory Chcielibyśmy dodać dwa wymiary na podstawie tych dwóch tabel. 19. Definiowanie nowego wymiaru • Przełącz się na Visual Studio,, otwórz widok źródła danych Adventure Works DW.dsv. DW.dsv • Kliknij PPM na pustej przestrzeni koło tabel i wybierz Add/Remove Tables Tables. Rys. 18 Dodanie nowych tabel do widoku źródła danych • Przenieś z Available objects do Included objects tabele DimPromotion i DimSalesTerritory. DimSalesTerritory • Kliknij OK. • Zmień właściwość FriendlyNames dla tabel: — DimPromotion -> Promotion — DimSalesTerritory -> SalesTerritory • W Solution Explorer kliknij PPM na Dimensions i wybierz New Dimension Dimension. Strona 11/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Rys. 19 Tworzenie nowego wymiaru • Zaznacz Use as existing table i kliknij Next. • Jako Main table wybierz Promotion i kliknij Next. Rys. 20 Ustawianie tabeli i kolumn kluczowych dla wymiaru • W Select Dimension Attributes wybierz rz następujące kolumny: — — — — — — — — English Promotion Name Discount Pct English Promotion Type English Promotion Category Start Date End Date Min Qty Max Qty • Jako nazwę wymiaru wpisz Promotion i kliknij Finish. Finish Nowy wymiar został zdefiniowany. Należy teraz zmienić właściwości dla wymiaru, a także dodać wymiar do kostki. 20. Edycja nowego wymiaru • Zmień nazwy następujących poziomów: — — — — — — Discount Pct -> Discount Percent English Promotion Category -> Promotion Category English Promotion Name -> Promotion Name English Promotion Type -> Promotion Type Max Qty -> Max Quantity Min Qty -> Min Quantity • Dla wymiaru Promotion dodaj hierarchię: Promotion Category -> Promotion Type -> Promotion Name. 21. Dodanie wymiaru do kostki • W widoku edycji kostki wybierz zakładkę Dimension Usage. Usage • Kliknij prawym przyciskiem myszy na puste pole i z kontekstowego menu wybierz Add Cube Dimension. Strona 12/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Rys. 21 Dodanie nowego wymiaru do grupy agregatów • Z dostępnych wymiarów wybierz Promotion i kliknij OK. Wymiar został ał dodany do kostki, powiązanie pomiędzy kostką danych i wymiarem zostało utworzone automatycznie na podstawie kluczy obcych w schemacie relacyjnym. • Kliknij na Promotion Key i sprawdź, czy powiązanie pomiędzy kostką i wymiarem jest poprawne. Można zauważyć, że połączenie jest regularne, kluczem obcym jest PromotionKey, tabelą wymiarów DimPromotion, DimPromotion a tabelą faktów FactInternetSales. • Kliknij OK. 22. Raport z nowym wymiarem • Przeprowadź Process dla kostki danych. • W widoku edycji kostki przełącz się na zakładkę Browser. Browser • Utwórz raport zawierający wszystkie agregaty w zależności od kategorii, typu i nazwy promocji. Rys. 22 Raport przedstawiający agregaty w zależności od kategorii, typu i nazwy promocji Tworzenie nowej perspektywy w kostce danych (czas realizacji 15min) W ramach jednej kostki można zdefiniować wiele perspektyw danych. Perspektywy posiadają grupę agregacji i listę połączonych wymiarów. Perspektywa może być rozpatrywana jako przysłonięcie pewnych ewnych wymiarów i agregatów lub jako nowe agregaty i wymiary w kostce danych. Zadanie Tok postępowania 23. Dodawanie tabel do widoku • Otwórz edycję edycj źródła danych Adventure Wors DW.dsv. DW.dsv • W pustym polu diagramu Adventure Wors DW.dsv kliknij PPM i wybierz Add/Remo tables. Add/Remove • Z Available objects przenieś do Included object tabele: — — — — DimAccount DimDepartmentGroup DimOrganization DimScenario Strona 13/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych — FactFinance Kilka tabel można zaznaczyć przytrzymując klawisz Ctrl. • Kliknij OK. • Zmień FriendlyNames dla nowych tabel: — — — — — DimDepartmentGroup -> DimDepartmentGroup DimScenario -> DimScenario DimOrganization -> DimOrganization DimAccount -> DimAccount FactFinance -> Finance • Sprawdź jakie są powiązania pomiędzy tabelą Finance a innymi tabelami. Rys. 23 Schemat dla nowej perspektywy Widok danych zawiera już wszystkie potrzebne dane dla nowej partycji. Kostka będzie zawierać teraz dwie partycje, dlatego konieczne jest wydzielenie tej pierwszej w postaci odrębnej partycji. 24. Dodawanie nowej grupy agregacji • W widoku projektu kostki Adventure Works DW.cube wybierz zakładkę Cube Structure. Structure • W panelu Measures kliknij PPM na kostkę Adventure Works DW i wybierz New Measure Group. • Na liście tabel zaznacz Finance i kliknij OK. Prawdopodobnie pokazało okazało się ostrzeżenie, że grupa agregacji nie posiada żadnych agregatów wspólnych z innymi grupami agregatów i sugerowane jest przeniesienie funkcjonalności do osobnej kostki. Aktualnie nie zajmujemy się tym tematem, będzie to poruszone w kolejnych punktach. Rys. 24 Widok wszystkich grup agregatów w kostce 25. Dodanie • W Solution Explorer kliknij PPM na Dimensions, Dimensions a następnie wybierz Strona 14/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych nowych wymiarów dla perspektywy Moduł IV AS2008 – tworzenie i modyfikacja kostki danych New Dimension. Dimension • Wybierz Wybi Use an existing table i kliknij Next. • Jako Data source view wybierz Adventure Works DW, DW jako Main table wybierz Account i kliknij Next. • Jako Available attributes zaznacz: — — — — — — — — Account Key Account Parent Key Account Desctiption Account Type Operator Custom Members Value Type Custom Member Options • Kliknij Next, a potem Finish. • Dodaj następujące wymiary na podstawie odpowiednich tabel z atrybutami: • Wymiar Department Group na podstawie tabeli DepartmentGroup z wszystkimi możliwymi atrybutami. • Wymiar Organization na podstawie tabeli Organization Orga z wszystkimi atrybutami oprócz CurrencyKey. • Wymiar Scenario na podstawie tabeli Scenario z wszystkimi możliwymi atrybutami. Rys. 25 Wszystkie wymiary utworzone w kostce danych 26. Dodawanie wymiarów do kostki • Przełącz się na zakładkę Dimension Usage. • Na pustym polu kliknij prawym przyciskiem myszy i wybierz Add Cube Dimension Dimension. • Z listy wymiarów zaznacz Account i kliknik OK. • W ten sam sposób dodaj wymiary: Department Group, Group Organization, Scenario Scenario. Można zauważyć, że wymiary zostały automatycznie połączone z grupą agregatów Finance,, co jest logiczne, ponieważ tabela Finance w której znajdują się agregaty posiada klucze obce do wcześniej wybranych tabel wymiarów. Strona 15/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Rys. 26 Przyporządkowanie wymiarów do grup agregacji 27. Definiowanie perspektyw • Przełącz się na zakładkę Perspectives. • W pustym polu kliknij prawym przyciskiem myszy i wybierz New Perspective Perspective. Rys. 27 Utworzenie nowej perspektywy • Zmień Perspective Name na Internet Sales. • Ustaw DefaultMeasure na Sales Amount. • Dla perspektywy Internet Sales zostaw tylko zaznaczone: — Grupa agregatów Internet Sales. — Wymiary: Ship Date, Order Date, Due Date, Date Product, Customer, Promotion. — Kalkulację Tax Percentage. • Dodaj nową perspektywę Finance i zaznacz: — Grupę agregatów Finance. — Wymiary: Date, Account, Department Group, Group Organization, Scenario. • Dla perspektywy Finance ustaw DefaultMeasure na Amount. Uwaga! Bardzo częstym błędem jest zostawianie zaznaczonych lub odznaczonych elementów dla określonych perspektyw. Po utworzeniu wymiaru lub nowej kalkulacji należy sprawdzić, do których perspektyw zostały te elementy przypisane. Strona 16/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Rys. 28 Przyporządkowanie grup agregacji, wymiarów, hierarchii, poziomów i agregatów kalkulowanych do perspektyw 28. Publikowanie kostki • Opublikuj kostkę danych poprzez wybranie Process (menu kontekstowe kostki Adventure Works DW). • Po opublikowaniu przełącz się na zakładkę Browser. Aktualnie widoczne są wszystkie agregaty i wymiary. • Wybierz perspektywę Finance. Rys. 29 Wybór perspektywy przy tworzeniu raportów • Sprawdź dostępne agregaty i wymiary. • Utwórz raport: wszystkie agregaty względem roku i nazwy organizacji: Rys. 30 Przykładowy raport dla perspektywy Finance Tworzenie nowej kostki danych (cza realizacji 10 min) Jeżeli tabela faktów nie łączy się z tabelami rozpatrywanymi w innych tabelach faktów, należy utworzyć nową kostkę danych zamiast tworzenia nowej perspektywy. Na podstawie jednego widoku można dodać dowolną liczbę kostek. Zadanie Tok postępowania 29. Przeglądanie schematu relacyjnego • Otwórz SQL Server Management Studio i połącz się z bazą AdventureWorksDW. • Otwórz diagram bazy i sprawdź z jakimi tabelami łączy się tabela Strona 17/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych FactSalesQuota FactSalesQuota. Rys. 31 Schemat relacyjny dla nowej kostki danych • Tabela DimDate już jest w naszym widoku źródła danych, pozostałe dwie tabele należy dodać. 30. Dodawanie potrzebnych tabel do widoku danych • Otwórz widok danych Adventure Works DW.dsv. • Do widoku dodaj tabele i zmień odpowiednio FriendlyNames: FriendlyNames — FactSalesQuota -> SalesQuota — DimEmployee -> Employee Tabele do widoku dodajemy za pomocą kliknięcia prawym przyciskiem myszy w puste pole na diagramie i wybrania Add/Remove Tables z kontekstowego menu. 31. Definiowanie nowej kostki • W Solution Explorer kliknij prawym przyciskiem myszy na Cubes i wybierz New Cube. • Zaznacz Use existing tables i kliknij Next. • W oknie Select Measure Group Tables zaznacz tabelę SalesQuota i kliknij Next. • Przejrzyj dodane agregaty do kostki, odznacz agregat Calendar Quarter i kliknij Next. • Przejrzyj automatycznie dodane wymiary do kostki i kliknij Next. Do kostki został włączony wymiar Time, ponieważ był on już wcześniej zdefiniowany. • Jako nowy wymiar został zaproponowany Employee. Employee Kliknij Next. • Zmień nazwę kostki na Sales Quota i kliknij Finish. Finish Strona 18/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Laboratorium rozszerzone Laboratorium rozszerzone zawiera opcjonalne zadania do wykonania. Każde zadanie jest niezależne i posiada orientacyjny czas wykonania. Zadanie 1 (czas realizacji 10 min) Jest pewna niedogodność przy utworzeniu raportu dla perspektywy Finance: agregaty w zależności od scenariusza. Zamiast nazw scenariuszy są tam klucze. Dostosuj wymiar Scenario tak, aby w poziomy w hierarchii miały odpowiednie nazwy, a także scenariusze były identyfikowane przez nazwę, a nie przez klucz ID. Zadanie 2 (czas realizacji 10 min) Za pomocą tabel przestawnych (zakładka Browser), zaprojektuj raport dla kostki Adventure Works DW, perspektywy Internet Sales przedstawiający podatek (Tax Amount), całkowity koszt produktu (Total Product Cost) i różnicę pomiędzy całkowitym kosztem i podatkiem (Netto Product Cost) w zależności od kraju, regionu i miasta klienta. Do tego zadania należy utworzyć agregat kalkulowany [Netto Product Cost] = [Total Product Cost] – [Tax Amount], a także hierarchię w wymiarze Customer: Country Region Name, State Province Name, City. Zadanie 3 (czas realizacji 15 min) Rozszerz definicję wymiaru Product o 2 tabele, które są na schemacie relacyjnym, ale nie zostały wcześniej uwzględnione w widoku źródła danych: DimProductSubcategory, DimProductCategory. Dodaj nowe poziomy: Product Subcategory i Product Category, a także utwórz hierarchię: Product Category - Product Subcategory – Product Name. Zadanie 4 (czas realizacji 15 min) Dodaj nową kostkę Reseller Sales na podstawie tabeli FactResellerSales. Do kostki dodaj wymiary: Date, Employee, SalesTeritory, Reseller, Currency, Promotion i Product. Utwórz perspektywę Reseller Sales Employee która będzie złożona tylko z 3 (dowolnie wybranych) agregatów i wymiarów Reseller i Product. Zadanie 5 (czas realizacji 40 min) Firma DziekanatSoftware zaprojektowała i wykonała system dziekanatowy SuperDziekanat do obsługi dziekanatu na uczelniach. System bazodanowy złożony jest z kilkudziesięciu tabel połączonych ze sobą kluczami obcymi. Problem jest z modułem raportującym dla tego systemu. Każdy raport napisany jest w języku SQL, następnie dodawany do aplikacji i wykonywany na bazie danych. Raporty są przekrojowe, dlatego cała baza jest skanowana, co zajmuje sporo czasu i odbywa się w czasie największego użycia systemu. Przy kilkunastu tysiącach studentów w największych tabelach jest nawet kilka milionów rekordów z kilku ostatnich lat, dlatego użycie bazy danych dla raportów nie wchodzi w grę. Ponadto, użytkownicy biznesowi ze znajomością narzędzia MS SQL Server Management Studio chcieliby mieć możliwość tworzenia raportów za pomocą tabel przestawnych. Rozwiązaniem jest utworzenie kostek danych ze schematu relacyjnego, a następnie zdefiniowaniem agregatów, wymiarów, poziomów i hierarchii. Skrypt tworzący bazę danych wraz z przykładowymi danymi znajduje się w pliku DziekanatSoftware.sql. Strona 19/20 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł IV AS2008 – tworzenie i modyfikacja kostki danych Zapoznaj się ze schematem relacyjnym, a następnie utwórz kostki danych (w nawiasie są proponowane wymiary): ocena (student, data, grupa, typ oceny), obecność (student, zajecie, data dla zajecia), logowanie (uzytkownik, data). Za pomocą tabel przestawnych zaprojektuj następujące raporty: • • • • Średnia ocena w zależności od typu studiów. Średnia ocena w zależności od instytutu i roku dziekańskiego. Liczba nieobecności w zależności od przedmiotu. Procentowa obecność w zależności od prowadzącego. Strona 20/20 ITA-102 Hurtownie danych Marcin Gorawski, Sławomir Bańkowski Moduł 5 Wersja 1.0 Usługi analiz danych: funkcje zaawansowane, skalowalność i optymalizacja Spis treści Usługi analiz danych: funkcje zaawansowane, skalowalność i optymalizacja ..................................... 1 Informacje o module ............................................................................................................................ 2 Przygotowanie teoretyczne ................................................................................................................. 3 Przykładowy problem .................................................................................................................. 3 Podstawy teoretyczne.................................................................................................................. 3 Przykładowe rozwiązanie ............................................................................................................. 4 Porady praktyczne ....................................................................................................................... 4 Uwagi dla studenta ...................................................................................................................... 4 Dodatkowe źródła informacji....................................................................................................... 4 Laboratorium podstawowe .................................................................................................................. 5 Różne rodzaje wymiarów (czas realizacji 15min) ........................................................................ 5 Definiowanie translacji (czas realizacji 15min) ............................................................................ 7 Partycje w kostkach danych (czas realizacji 30min)..................................................................... 9 Laboratorium rozszerzone ................................................................................................................. 17 Zadanie 1 (czas realizacji 45min) ............................................................................................... 17 Zadanie 5 (czas realizacji 45 min)............................................................................................... 17 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008-funkcje zaawansowane Informacje o module Opis modułu W module znajdziesz opis funkcji zaawansowanych budowania kostek danych: definiowania translacji, dodawania wymiarów o innym typie niż Regular, dodawania KPI, a także problemu skalowalności kostek danych i stosowania partycji danych. Cel modułu Celem modułu jest dokładne poznanie zaawansowanych funkcji budowania kostek danych, co pozwoli na budowanie profesjonalnych struktur pełni wykorzystujących możliwości Analysis Services. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • znał różne rodzaje wymiarów dla kostki danych • potrafił dodać translację dla dowolnego języka i skorzystać z tej translacji • wiedział jakie są możliwe typy wymiarów powiązanych z kostkami danych • rozumiał pojęcie skalowalności kostki danych • umiał utworzyć nową partycję wraz z agregatami zgodnie z hierarchiami Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • rozumieć schemat relacyjny i budowę modelu wielowymiarowego • potrafić utworzyć kostkę danych, a także poziomy, wymiary i hierarchie dla kostki • potrafić dodać tabele do widoku źródła danych, dodać nowe wymiary do kostki i zdefiniować perspektywy Mapa zależności modułu Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w module 3, 4. Rys. 1 Mapa zależności modułu Strona 2/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008-funkcje zaawansowane Przygotowanie teoretyczne Przykładowy problem Adventure Works Cycles jest dużym, międzynarodowym zakładem przemysłowym, który produkuje i sprzedaje ramy rowerowe i inne, zbliżone wyroby metalowe na rynki Ameryki Północnej, Europy oraz Azji. Podstawowe procesy produkcyjne Adventure Works Cycles zachodzą w Bothel, w Waszyngtonie, gdzie zatrudnionych jest 290 pracowników, natomiast kilka regionalnych oddziałów sprzedaży zlokalizowanych jest na całym rynku, na którym działa firma. W 2000 roku, Adventure Works Cycles, kupiło mały oddział produkcyjny – Importadores Neptuno, z siedzibą w Meksyku. Jego zadaniem była produkcja kilku istotnych komponentów dla linii produkcyjnej Adventure Works Cycles, które były transportowane do Bothel, gdzie miało miejsce finalne złożenie produktu. W 2001 roku Importadores Neptuno zostało wyłącznym producentem oraz dystrybutorem rowerów trekingowych. Mijający, zdecydowanie pomyślny dla firmy, rok podatkowy, stworzył dogodne warunki dla zwiększenia udziału w rynku, na którym działa Adventure Works Cycles poprzez skierowanie sprzedaży na najlepszego klienta, ułatwienie dostępu do produktów dzięki stronie internetowej oraz redukcji kosztów sprzedaży uzyskanej poprzez obniżenie kosztów produkcji. Do sprawnego zarządzania przedsiębiorstwem niezbędne są analizy danych i bardzo sprawny system raportów dla podejmowania szybkich, strategicznych decyzji. Dane powinny być w postaci biznesowej, łatwej do zrozumienia dla klienta podejmującego decyzje zarządcze. Podstawy teoretyczne Działająca poprawnie hurtownia danych, która pozwala ze zgromadzonych w niej danych wydobywać wiedzę, stanowi tylko część sukcesu jej administratora. Oprócz poprawnego działania, hurtownia danych powinna działać wydajnie, niezależnie od faktu jak duża ilość danych (agregatów) jest w niej zgromadzona. W tym miejscu pojawiają się dwa zagadnienia, które zostaną poruszone podczas zajęć: skalowalność oraz optymalizacja. Pod pojęciem skalowalności rozumiemy tutaj „odporność” na ciągle rosnącą ilość danych. Podstawowym środkiem zapewniającym skalowalność jest partycjonowanie. Dzięki partycjonowaniu możemy uzyskać np.: • zwiększenie wydajności przetwarzania zapytań MDX, • połączenie w jedną logiczną kostkę danych rozmieszczonych w kilku niezależnych źródłach danych, • zmniejszenie skutków ewentualnej awarii nośnika danych (utrata tylko części danych). Minusem partycjonowania jest większa podatność systemu na awarie, gdyż im więcej jest elementów składowych systemu, tym większe jest prawdopodobieństwo, że w danej chwili przynajmniej jeden z nich ulegnie uszkodzeniu. Jednakże tego typu rozważania nie są przedmiotem zajęć. Optymalizacja to proces takiego konfigurowania serwera, który pozwala uzyskać maksymalną wydajność, co w przypadku Analysis Services przekłada się po prostu na czas realizacji zapytań MDX. Aby osiągnąć cel możemy odpowiednio zaplanować proces budowania (odświeżania) kostki danych korzystając z tzw. buforowania proaktywnego. Oprócz tego na wydajność wpływa liczba zaplanowanych agregacji oraz utworzone hierarchie agregatów. Proces strojenia może być dokonywany przez administratora, może być również zautomatyzowany i wykonywany z poziomu aplikacji odwołującej się do AS za pośrednictwem interfejsu AMO (Analysis Management Objects). Dostępny zestaw obiektów pozwala tworzyć partycje, planować agregacje, itd. z poziomu programowego. Strona 3/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008-funkcje zaawansowane Niniejsze opracowanie przedstawia zagadnienia związane ze skalowalnością SQL Server 2008 Analysis Services. W dalszej części omówione zostaną następujące cechy: • • • • • partycje, przetwarzanie i strojenie nośnika danych, agregacje, właściwości składowe, agregacje w czasie projektowania AMO. Przykładowe rozwiązanie Na podstawie bazy relacyjnej firmy Adventure Works Cycles należy zaprojektować schemat wielowymiarowy składający się z kostek danych. Najpierw należy przeanalizować schemat źródłowy, wybrać tabele faktów i potencjalne tabele wymiarów. Wybór tabeli faktów wiąże się z określeniem granulacji i agregatów. Kolejno, dla każdego wymiaru wybiera się poziomy, a na nich tworzy się hierarchie. W razie potrzeby można dowolnie modyfikować schemat wielowymiarowy. Na końcu za pomocą tabel przestawnych należy zaprojektować potrzebne raporty. Wygenerowane w ten sposób raporty mogą służyć do generowania zestawień, wykresów i przekrojowych analiz. Porady praktyczne Uwagi ogólne • Dla drobnych zmian w schemacie wymiarów nie trzeba przeprowadzać przetwarzania dla całego projektu lub kostki (Process), wystarczy tylko opublikować kostkę (Deploy). • Przy translacji zastanów się, jakie znaczenie ma definiowanie każdego elementu osobno: wymiarów, agregatów, poziomów i hierarchii. Uwagi dla studenta Jesteś przygotowany do realizacji laboratorium jeśli: • wiesz co to są translacje • rozumiesz znaczenie partycji danych • potrafisz wymienić zalety i wady agregacji Przed wykonywaniem każdego punktu dokładnie przeczytaj cały punkt, to spowoduje znaczne zmniejszenie liczby pomyłek podczas laboratorium i pozwoli na dokładniejsze poznanie materiału. Jeżeli są błędy niewiadomego pochodzenia, spróbuj cofnąć ostatnie akcje i powtórzyć jeszcze raz. Definiowanie partycji i agregatów jest bardzo czułe na błędy, czasem najmniejsze pomyłki powodują bardzo duże błędy w całym projekcie. Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. Dodatkowe źródła informacji 1. Klaus Aschenbrenner: Beginning SQL Server 2008 for Developers: From Novice to Professional 2. Erik Thomsen: OLAP Solutions: Building Multidimensional Information Systems 3. Ralph Kimball, Margy Ross: The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling Strona 4/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane Laboratorium podstawowe W ramach laboratorium podstawowego przedstawiamy definiowanie translacji na projekcie AdventureWorksDW.. Na tym samym projekcie prezentujemy utworzenie partycji, a później agregacji. Kolejnym krokiem są agregacje w hierarchiach naturalnych. Różne rodzaje wymiarów (czas realizacji 15min) Do tej pory rozpatrywaliśmy kostkę, w której agregaty były w centralnej centralne tabeli faktów, natomiast każdy wymiar był połączony z tabelą faktów za pomocą klucza obcego. Wymiar składał się z kilku tabel, każda kolejna tabela była dołączona za pomocą klucza obcego do jednej z tabeli wymiaru. Czasami zależy nam na wymiarze, który nie nie jest bezpośrednio połączony z tabelą faktów, poziomy mogą znajdować się także w samej tabeli faktów. Nie należy mylić jednak poziomu z agregatem – poziom posiadający tyle samo elementów co liczba wierszy w tabeli faktów rzadko ma sens logiczny. Możemy sobie sobie wyobrazić tabele z pomiarami pogody dla pewnego regionu. W tabeli faktów posiadamy siłę wiatru, temperaturę i opady deszczu lub śniegu. Tabelami wymiarów mogą być lokalizacja zmierzonych warunków atmosferycznych, data pomiaru, typ urządzenia mierzącego. mierzącego. Jeżeli chcielibyśmy uzyskać średnią temperaturę dla określonych przedziałów opadów – kostka zbudowana w pierwotny wzór nie umożliwi nam tego. Z całą pewnością możemy dodać kolumnę kalkulowaną, która będzie nam dyskretyzowała wartości opadów na kilka przedziałów: przedziałów: bardzo niskie, niskie, średnie, wysokie, bardzo wysokie. Z tej kolumny znajdującej się w tabeli faktów powinniśmy utworzyć osobny wymiar. Cały czas wiemy, że wymiar ten nie będzie miał zbyt dużej liczby różnych róż elementów. Zadanie Tok postępowania 1. Otwarcie projektu • Otw Otwórz Business Intelligence Development Studio (BIDS), następnie z menu wybierz File -> Open -> Project/Solution. • Załaduj z dysku projekt Adventure Works DW z poprzedniego modułu. Jeżeli nie masz projektu z poprzedniego modułu, to możesz wykorzystać gotowy projekt dołączony razem z dokumentacją do aktualnego modułu. 2. Definiowanie wymiaru połączonego przez tabelę pośrednią • Zakładamy, że zależy nam na wymiarze kategorii i podkategorii produktu nie wchodząc w szczegóły samego produktu. • W Solution Explorer kliknij dwukrotnie na kostce Adventure Works DW DW.dsv aby otworzyć widok źródła danych. • Sprawdź, czy na diagramie znajdują się tabele ProductCategory i ProductSubcategory. ProductSubcategory. Jeżeli tych tabel nie ma, dodaj je i zmień nazwy odpowiednio na: Product Category i Product Subcategory. Subcategory • W Solution Explorer kliknij prawym przyciskiem myszy na Dimensions i wybierz New Dimension. • Zaznacz Use an existing table i kliknij Next. Jako Data source view wybierz Adventure Works DW i kliknij Next. • Jako Main table wybierz Product Subcategory i kliknij Next. • W Related tables zaznacz Product Category (powinno być już zaznaczone) i kliknij Next. • W available attributes zaznacz English Product Category Name i English Product Subcategory Name i zmień nazwy tych atrybutów odpowiednio na Product Category Name i Product Subcategory Name. Name Kliknij Next. • Przejrzyj utworzony wymiar i kliknij Finish. • W widoku edycji kostki wybierz zakładkę Dimension Usage. Usage Strona 5/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane • Kliknij na puste pole prawym przyciskiem myszy i wybierz Add Cube Dimension Dimension. • Z listy dostępnych wymiarów w oknie Select Dimension wybierz Product Subcategory i kliknij OK. • Kliknij na pole dla wymiaru Product Subcategory i grupy agregatów Internet Sales. Sales Rys. 2 Łączenie wymiaru z grupa agregatów • W oknie definicji relacji zmień Select relationship type z No relationship na Referenced. • W Intermediate dimension wybierz Product. • W Reference dimension attribute wybierz Product Subcategory Key. Key • W Intermediate dimension attribute wybierz Product Subcategory Key. Key • Kliknij OK. Rys. 3 Zadeklarowany wymiar z polaczeniem poprzez tabele posrednia 3. Tworzenie wymiaru z tabeli faktow W poniższym punkcie zależy nam na wymiarze określającym cenę jednostki.. Taki wymiar składałby się z kilku progów przykładowo: 'do 1000', 'od 1000 do 2000', 'od 2000 do 3000', 'powyzej 3000’. W ramach takiego wymiaru można zaprojektować raport: suma zarobionych pieniędzy w zależności od ceny jednostkowej produktu. • W widoku edycji źródła danych kliknij prawym przyciskiem myszy na tabeli InternetSales i wybierz New Named Calculation. Calculation • Jako Calculation name wpisz Unit Price Discretized. Discretized • Jako Description wpisz: Cena jednostki. • Jako Ja Expression wpisz: case when UnitPrice<1000 then 'do 1000' when UnitPrice<2000 then 'od 1000 do 2000' when UnitPrice<3000 then 'od 2000 do 3000' else 'powyzej 3000' end • W Solution Explorer kliknij prawym przyciskiem myszy na Dimensions i wybierz New Dimension. • Zaznacz Use as existing table i kliknij Next. • Jako Data source view wybierz Adventure Works DW. DW • Jako Main table wybierz InternetSales. • Jako Key columns wybierz: SalesOrderNumber i SalesOrderLineNumber. Sales • Jako Name column wybierz Unit Price Discretized. Discretized • W Select related tables odznacz wszystkie tabele i kliknij Next. • Odznacz wszystkie kolumny oprócz SalesNumber i kliknij Next. • Wpisz nazwę wymiaru: Unit Price Level i kliknij Finish. Finish Strona 6/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane • W oknie edycji dla wymiaru wybierz zakładkę Dimension structure. structure • W panelu Data Source View dodaj kliknij prawym przyciskiem myszy na kolumnie Unit Price Discretized i wybierz New Attribute from Column. Column Rys. 4 Tworzenie nowej kolumny dla wymiaru • Dla poziomu Sales Order Number ustaw właściwość AttributeHierarchyVisible na False. • W oknie projektowania kostki wybierz zakładkę Dimension Usage. Usage • Kliknij w puste pole i wybierz Add Cube Dimension. Dimension • Z listy wymiarów wybierz Unit Price Level i kliknij OK. Można zauważyć, ć, że został dodany nowy wymiar z charakterystyczną ikonką grupy agregatów (taka ikona jest też koło grup agregatów: Internet Sales i Finance). Rys. 5 Nowy wymiar o typie Fact Definiowanie translacji (czas realizacji 15min) Kostka danych, która została stworzona w poprzednich częściach używa danych i funkcji, co do których zostało przyjęte niejawne założenie, że osoba używająca projektu Analysis Services zna język angielski. Nie zawsze jednak założenie takie jest słuszne i często zdarza się, że konieczne jest przyjęcie założenia, że odbiorcy posługują się tylko językiem ojczystym. Analysis Services umożliwiają całkowite dostosowanie tworzonych kostek danych do wymagań klienta pod względem językowym. Należy eży pamiętać, że oprócz języka dostosowania wymagają także formaty wyświetlania danych takie jak: czas (sposób zapisu daty), waluta (inna jednostka monetarna), separator części ułamkowej liczb zmiennoprzecinkowych zmiennoprzeci (kropka vs. przecinek). Zadanie Tok postępowania postęp 4. Definiowanie nowej translacji • W Solution Explorer kliknij dwukrotnie na kostce Adventure Works DW aby otworzyć widok edycji kostki danych. • Wybierz zakładkę Translations. Aktualnie nie ma zdefiniowanych translacji, są tylko oznacz oznaczenia dla domyślnego języka. Oznaczenia te możemy zmieniać we właściwościach odpowiednich elementów. • Kliknij prawym przyciskiem myszy w puste pole i wybierz New Translation Translation. Rys. 6 Definiowanie nowej translacji • Wybierz język polski (Polish) i kliknij OK. Nowa translacja została utworzona, należy teraz zmodyfikować nazwy Strona 7/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane elementów dla translacji: grupy agregatów, agregaty, poziomy, perspektywy i agregaty kalkulowane. 5. Definiowanie nazw dla nowej translacji • Wypełnij nazwy dla nowej translacji. Rys. 7 Przykładowe nazwy dla translacji Przykładowe uzupełnienie nazw dla kilku elementów znajduje się na rysunku powyżej. 6. Wypełnianie translacji dla wymiaru • W Solution Explorer kliknij dwukrotnie ie na wymiarze Time aby otworzyć okno edycji wymiaru. • Przełącz się na zakładkę Translations. Dla kostki i każdego wymiaru należy definiować translacje osobno. Jeżeli nie będzie zdefiniowana translacja wybrana przez użytkownika, nazwy będą pochodzić z translacji domyślnej. • Kliknij prawym przyciskiem myszy na puste pole i wybierz New Translations Translations. Rys. 8 Nowa translacja dla wymiaru • Wybierz język polski i kliknij OK. • Wypełnij nazwy elementów dla nowo utworzonej translacji: Strona 8/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane Rys. 9 Tłumaczenia nazw elementów wymiaru Daty 7. Translacja dla wymiaru Product • Zdefiniuj translacje dla wymiaru Product dla języka polskiego. 8. Weryfikacja translacji • Przeprowadź Process dla kostki danych. • Otwórz widok edycji kostki, przełącz się na zakładkę Browser. • Przełącz się na język polski. Rys. 10 Zmiana języka na polski • Przełącz się na perspektywę Fakty Sprzedazowe. • Sprawdź, jak nazywają się się teraz wymiary i poziomy w wymiarze Data. Rys. 11 Polskie nazwy kostki i wymiarów Partycje w kostkach danych (czas realizacji 30min) Celem prezentacji jest przedstawienie pojęć partycjonowania i projektowania agregacji. Pokazane zostanie jak utworzyć dwie partycje w oparciu o jedną tabelę faktów oraz jak określić parametry przetwarzania i nośnika dla każdej partycji. Zadanie Tok postępowania 9. Sprawdzanie dostępnych partycji dla każdej grupy agregacji • W Solution Explorer kliknij dwukrotnie na Adventure Works DW.cube. DW.cube • Wybierz zakładkę Partitions. Zwykle pierwsza partycja jest domyślnie rozwinięta, a pozostałe są zwinięte, co ułatwia przeglądanie wszystkich partycji. W naszym Strona 9/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane przypadku mamy dostępne dwie partycje zdefiniowane domyślnie dla dwóch tablic faktów dostępnych w kostce: Internet Sales, Sales Finance. Domyślnie każda grupa pomiarów ma przypisaną jedną partycję. • Rozwiń wszystkie partycje. Należy zauważyć, że grupa pomiarów Internet Sales posiada obecnie jedną partycję. 10. Utworzenie nowych partycji Gdy zachodzi potrzeba utworzenia wielu partycji, konieczne jest zróżnicowanie danych zawartych w każdej z nich. Jedną z możliwości jest posiadanie osobnych tabel faktów. Jest to jednak czasem kłopotliwe. opotliwe. Inna możliwość to określenie podzbioru danych dla każdej partycji przy użyciu klauzuli WHERE.. Próba modyfikacji lub utworzenia nowej partycji wykorzystującej tablicę faktów będącą już w użyciu a nieposiadającej klauzuli WHERE spowoduje błąd. Aby utworzyć nową partycję dla istniejącej tablicy faktów konieczne jest ręcznie usunięcie istniejącej partycji a następnie utworzenie nowej. • Kliknij prawym przyciskiem myszy na numerze przy partycji Internet Sales i wybierz Delete. • Kliknij na łącze New Partition. • Jako Measure group wybierz Internet Sales, w Available tables zaznacz pole przy InternetSales i kliknij Next. • Zaznacz pole Specify a query to restrict rows.. Przeanalizuj zapytanie które pokazało się w oknie edycji ed Query. Zostanie automatycznie utworzone zapytanie zawierające pełną listę kolumn tabeli wybranej z Data Source View.. W przypadku, gdy jest to pojedyncza tabela można zamienić listę kolumn na "select * from" co automatycznie uwzględni nowe kolumny, jeżeli takie zostaną zo dodane później do tabeli. • Na końcu zapytania (po WHERE) dodaj: orderdatekey >= 915 Rekord o kluczu 915 odpowiada dacie 1 Styczeń 2004. Bieżący rok w danych projektu AdventureWorksDW to 2004, więc uwzględnione będą tylko dane z roku 2004. Po dodaniu u klauzuli WHERE partycja będzie zawierać tylko podzbiór całej tabeli określony przez wprowadzone wyrażenie warunkowe. • Kliknij Next. • Wybierz Wybi Current Server instance i Default Server location i kliknij Next. • Zmień nazwę na Fact Internet Sales 2004,, zaznacz Design aggregation later later. • Kliknij Finish. 11. Zadanie utworzenia partycji • Zaprojektuj partycje dla pozostałych lat: — Fact Internet Sales 2003: orderdatekey >= 550 and orderdatekey <= 914 — Fact Internet Sales 2002: orderdatekey >= 185 and orderdatekey >= 549 — Fact Internet Sales 2001: Strona 10/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane orderdatekey <= 184 12. Zmiana agregacji dla partycji Może się zdarzyć,, że dla pewnej partycji dane zostaną dodane. Co nastąpi w momencie dodania danych? Czy uaktualnienie pojawi się także w kostce? MOLAP czyli Multidimensional OLAP OLA powoduje, że kostka danych korzysta z agregacji obliczanych przy procesie uruchamianym ręcznie co pewien czas. Oznacza to, że najnowsze dane nie znajdą się w kostce dopóki nie wykonamy ponownego procesu. Można to zmienić poprzez zmianę trybu synchronizacji dla partycji. • W widoku projektu kostki na zakładce Partitions kliknij na partycje Fact Internet Sales 2004 i kliknij na Storage Settings. Sprawdź jakie opisy są przy przeciąganiu suwaka z pozycji MOLAP po ROLAP. • Kliknij Options. W tym miejscu można ustawić parametry, które są już przygotowane w standardowych wariantach predefiniowanych. predefiniowanych MOLAP storage jest specyficzną strukturą przeznaczoną do składowania danych wielowymiarowych. Domyślnie nie jest włączony tryb aktywnego buforowania (proactive caching). ). Oznacza to, że jedynym sposobem na odświeżenie danych jest ręczne uruchomienie przetwarzania partycji lub poprzez zdefiniowanie zadania za pomocą pakietu Integration Services. • Z MOLAP przestaw suwak na Scheduled MOLAP. Rys. 12 Opcje przechowywania danych: od ROLAP przez HOLAP do MOLAP • Sprawdź jakie konsekwencje pociąga za sobą poprzednia zmiana – przeczytaj opis i zastanów się co w rzeczywistości się zmieni. • Wybierz opcję Custom settings, a następnie ie naciskamy przycisk Options Options. Aktualnie jako Storage Settings jest zaznaczony MOLAP, ale można już zaznaczyć lub odznaczyć opcję Enable proactive caching. caching Poniżej znajduje się zaznaczona opcja Update the cache periodically. periodically Bufor będzie automatycznie uaktualniany co pewien okres czasu. Domyślnie będzie to co 1 dzień, ale czy wiadomo, o której godzinie? • Zmieniamy okres przebudowy (Rebuild ( Interval): ): 10 minutes. Jeżeli chcemy uzyskać przetwarzanie OLAP niemal w czasie rzeczywistym, ustawiamy znacznie częstsze aktualizacje. Oczywiście częstsze aktualizacje to również obciążenie dla systemu. Stosunkowo małe partycje mogą być przetwarzane bardzo często, jednak, jeżeli rozmiar partycji jest dość duży, lepiej żeby nie było potrzeby aktualizowania jej zbyt często. • Kliknij przycisk Cancel,, a następnie ustaw suwak na pozycję MediumStrona 11/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane latency MOLAP. MOLAP Kliknij przycisk Options. W tym wariancie dostępne jest nieco inne podejście do aktualizacji. Wybierając opcję Medium-latency MOLAP lub Low-latency MOLAP decyzję o tym, kiedy zawartość bufora staje się nieaktualna podejmujemy na podstawie sposobu zmian danych. Przyjrzyjmy się parametrowi Silence interval.. Załóżmy, że szczytowa liczba transakcji przypada na pierwsze 5 minut każdej godziny. Ponieważ w tym czasie c występuje ogromna liczba modyfikacji tabeli faktów, chcemy poczekać aż będzie nieco spokojniej i dopiero wtedy wykonamy agregacje. W ten sposób zabezpieczamy się przed aktualizacją po wstawieniu każdego nowego rekordu. Parametr Silence interval określa jak długa cisza jest konieczna aby nastąpiło przetwarzanie danych przez mechanizm Proactive Cache.. Jeżeli jednak czas szczytu trwa zbyt długo to ustawiając parametr Silence Override Interval możemy mimo wszystko wymusić przetwarzanie, aby udostępnić najnowsze naj dane. Takie rozwiązanie najlepiej sprawdza się w przypadku poklastrowanych tabel faktów. Nawet po zmianie parametrów, nie jest możliwe kliknięcie OK – przycisk jest nieaktywny, nieaktywny jest to spowodowane typem partycji, która jest ograniczona poprzez frazę WHERE.. Należy zdefiniować zapytanie, które będzie uzupełniało dane z tabeli źródłowej. • Kliknij na zakładkę Notifications. • Zaznacz Scheduled polling,, a następnie kliknij obok <Add Query>. • W dolnym panelu wpisz zapytanie: SELECT * FROM [dbo].[FactInternetSales] WHERE OrderDateKey >= 915 • Kliknij na tabele powyżej. Sprawdź jak zmieniło się zapytanie w panelu oraz jak wygląda wiersz dla OrderDateKey. Rys. 13 Dane na temat kolumny OrderDateKey • Kliknij Klikni Cancel. Przyjrzeliśmy się różnym możliwościom realizacji aktualizacji danych w kostce. Można zdecydować się na ręcznie sterowaną aktualizację, jak również można zastosować aktualizacje automatyczne: planowane lub dobierane dynamicznie. • Ustaw suwak na pozycję po MOLAP i kliknij OK. 13. Konfiguracja opcji agregacji • Wybierz zakładkę Aggregations. • Kliknij prawym przyciskiem myszy na Internet Sales i wybierz Design Aggregations Aggregations. Strona 12/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane Rys. 14 Tworzenie nowych agregacji dla kostki • Zaznacz partycję dla roku 2004 i kliknij Next. • Dla wymiaru Order Date zmień opcję Default na Full dla poziomów: Year Quarter, Month Name. Year, Przy zaznaczaniu pierwszego poziomu na Full może pokazać się okno z ostrzeżeniem, że przy poziomach z dużą licznością liczności wierszy agregacje mogą zająć bardzo dużo czasu i zasobów, dlatego nie jest zalecane włączanie takich poziomów do agregacji. • Kliknij Next. Aktualnie zliczone wiersze są tylko dla grupy agregatów Internet Sales. Można sprawdzić, ile jest wierszy w tabelach. Zakładamy, że są to tylko dane testowe pomocne przy budowie kostki i nie odzwierciedla to danych produkcyjnych, których może być kilka lub nawet kilkadziesiąt razy więcej. • Kliknij Count aby zliczyć wiersze dla wszystkich poziomach dla których będzie utworzona agregacja. • Sprawdź jakie są liczności poszczególnych poziomów dla wszystkich wymiarów, w szczególności jakie są liczności wymiarów zaznaczonych w poprzednim kroku. Rys. 15 Określanie przybliżonej liczby elementów dla poziomów Liczba szacunkowa (Estimated Count)) jest domyślną dla kostki. Jeżeli podana zostanie liczba wierszy dla partycji, to ona będzie brana pod uwagę. Jeżeli zarówno Estimated Count jak i Partition Count są równe zero, nie można zdefiniować agregacji. Bieżąca liczba wierszy może się różnić od liczby wierszy na etapie produkcyjnym. Nie trzeba być zbyt dokładnym, jednak nie należy podawać zbyt niskiej wartości. Najgorszym przypadkiem jest pozostawienie ostawienie wartości testowej i użycie jej w środowisku produkcyjnym bez żadnych zmian. Może to spowodować znaczne obniżenie wydajności. • Ustaw Estimated Count dla tabeli faktów: 100,000,000. Podanie liczby elementów składowych każdego wymiaru jest konieczne. W kolumnie Estimated Count wpisać należy ile rekordów Strona 13/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane przynależy do wybranego atrybutu. Liczbę tę można nadpisać mniejszą lub większą wartością w kolumnie Partition Count. Count • Ustaw Estimated Count dla określonych poziomów: — — — — Product Key: 1000 Customer Key: 20000 Promotion Key: 10000 Promotion Category: 100 • Ustaw Partition Count dla tych poziomów na jedną czwartą ich wartości Estimated Count. Count Zauważmy, iż jedynymi wierszami akceptującymi parametr Partition Count są atrybuty reprezentujące poziom liści. W tej kostce mamy cztery wymiary, z których każdy posiada jeden atrybut, który może być poddany agregacji. • Kliknij Klik przycisk Next. 14. Strojenie agregacji Opcje agregacji są kolejną drogą kontrolowania ile agregatów będzie obliczanych. • Ustaw Performance Gain Reaches na wartość 50% i naciśnij naci przycisk Start. Wybierając tę opcję nie utworzymy wszystkich możliwych agregacji. Utworzone zostanie tylko tyle, aby zysk wydajności w porównaniu do zapytań wykonywanych bez danych zagregowanych wyniósł 50%. Możemy następnie nie zobaczyć, ile agregacji zostało zaproponowanych dla bieżącej kombinacji wymiarów w kostce danych. Patrząc na wykres po prawej stronie możemy zaobserwować związek pomiędzy zyskiem wydajności, a rozmiarem miejsca wymaganego na dysku na przechowywanie wyników ików agregacji. Czasem znacznie większe użycie dysku pociąga za sobą relatywnie niewielki wzrost wydajności. Innym razem niewiele więcej nośnika pozwala na znaczny wzrost wydajności, by za chwilę znów wykres spłaszczył się. Gdy dojdzie już do spłaszczenia wykresu wydajności, kolejne agregacje kompletnie nic nie dają, zajmują tylko niepotrzebnie miejsce na dysku. W przypadku większych i bardziej wyszukanych kostek danych wykres może mieć znacznie bardziej złożony kształt (krzywa) lecz, gdy już dojdzie do jego o spłaszczenia, zwiększanie liczby agregacji nie będzie przynosić korzyści. • Przeanalizuj, ile agregacji zostało wykonanych. Rys. 16 Krzywe określające zysk z agregacji Strona 14/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane • Zmień Performance Gain Reaches na wartość 30%, kliknij Reset a następnie Start. Jak widać liczba wierszy każdego z atrybutów wymiarów ma wpływ na zaplanowane agregacje. • Przetestuj parametr Gain Reaches dla wartości 55% i 60%. • Naciśnij Naci przycisk Back i zmień parametr Estimated Count poziomu Product Key na 100000. Zmień także Estimated Count dla poziomu Customer Key na 20000. Podobnie jak poprzednio ustaw Partition Count na ¼ wartości Estimated Count. Gdy jeden lub więcej wymiarów posiada większą liczbę rekordów re zaobserwujemy, że liczba proponowanych agregacji będzie inna. Czasem może być to mniej agregacji niż poprzednio, gdyż mogłoby się okazać, że rozmiar zbioru agregacji byłby większy o 30% niż sama tabela faktów. • Naci Naciśnij przycisk Next i wybierz opcję Save ave the aggregations but do not process them aby zapisać agregacje bez ich przetwarzania. • Kliknij Finish. 15. Przegląd agregacji utworzonych w zbiorze AdventureWorks. partition • W oknie Solution Explorera naciśnij przycisk Show All Files. Rys. 17 Przycisk pokazania wszystkich plików w ramach projektu • Kliknij prawym przyciskiem myszy na Adventure Works DW.partitions i wybierz View Code. • Przewiń Przew otwarte okno w poszukiwaniu znaczników <Aggregation>. Odszukać podany ciąg znaków można za pomocą skrótu klawiszowego Ctrl-F. Przeglądając kod pliku partycji można dostrzec informacje o grupach pomiarów oraz zaplanowanych agregacjach. Można sprawdzić, czy liczba agregacji zgadza się z liczbą znaczników <Aggregation>. Przyjrzyjmy się agregacji Aggregation 0. 0 Jeżeli nie zawiera ona ID atrybutu dla wskazanego wymiaru, to znaczy, że wykorzystuje wszystkie poziomy wskazanego wymiaru. Jeżeli agregacja ma określony atrybut, będzie to agregacja na poziomie liścia. Podsumowując,, dla każdej agregacji będzie utworzona tabela przechowująca agregaty konkretnych atrybutów w kombinacji z wszystkimi poziomami wskazanych wymiarów, dla których nie określono atrybutu. Analizując nalizując definicje agregacji jesteśmy w stanie stwierdzić, które wymiary ary będą agregowane na poziomie atrybutów, a które będą agregowane całościowo. 16. Zmiana agregacji dla poziomów Jeżeli podczas agregacji chcemy brać pod uwagę szczególne atrybuty, możemy zmienić im typ agregacji na pełny, co spowoduje tworzenie agregacji w oparciu o ten agregat. • W widoku edycji kostki Adventure Works DW otwórz zakładkę Cube Structure Structure. • W panelu Dimensions rozwiń atrybuty dla wymiaru Product. Strona 15/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008 AS2008-funkcje zaawansowane Istnieje wiele produktów, ale mają relatywnie mało kolorów. Jeżeli liczba elementów dla wymiaru jest mała, koszt wykonania agregacji dla poziomu jest także niski. Należy zadać pytanie, czy określony wymiar jest potrzebny i czy będą wykonywane zapytania z tym poziomem. • Na atrybucie Color kliknij prawym przyciskiem myszy i wybierz Properties Properties. • W oknie właściwości zmień właściwość AggregationUsage na Full. • Przełącz się na zakładkę Aggregations. • Na Internet Sales kliknij prawym przyciskiem myszy i wybierz Design Aggregations Aggregations. • Zaznacz Fact Internet Sales 2004 i kliknij Next. • Sprawdź atrybut at Color w wymiarze Product. Jak można zauważyć, atrybut Color ma już ustawioną wartość na Full. • Kliknij Cancel. Strona 16/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008-funkcje zaawansowane Laboratorium rozszerzone Zadanie 1 (czas realizacji 45min) Utwórz nową kostkę Finance zawierającą wymiary: Time, Account, Department, Scenario, Organization, Currency (wymiar poprzez tabelę DimOrganization). Dla wymiarów utwórz stosowne hierarchie. Dla kostki utwórz perspektywy zawierające następujące wymiary: • Time, Account • Time, Scenario, Currency. Utwórz nowe agregaty kalkulowane, które wyznaczają podatki od sumy operacji. Wartości ujemne powinny się wyświetlać w kolorze czerwonym. Wartości dodatnie powyżej 1000 powinny się wyświetlać w kolorze niebieskim. • Tax Amount 7 • Tax Amount 22 Utwórz wymiar pozwalający obliczyć, na jaką sumę były operacje w następujących przedziałach (wartości dodanie i ujemne): • • • • • Poniżej -20000 Od -20000 do 0 (rozłącznie) Od 0 do 5000 Od 5000 do 20000 Powyżej 20000 Utwórz translację języka polskiego dla kostki Finance. Utwórz partycje dla kostki Finance wg roku i scenariusza (4 lata * 3 scenariusze). Dla partycji z ostatniego roku ustaw opcje przechowywania (Storage Settings) na Medium-latelency MOLAP. Utwórz agregacje dla kostki Finance zgodnie z raportami przedstawionymi poniżej. Za pomocą tabel przestawnych utwórz następujące raporty: • • • • Suma wypłat i podatku 7% w zależności od scenariusza, roku i kwartału. Suma wypłat i podatku 7% w zależności od departamentu (3 poziomy). Suma wypłat w zależności od scenariusza i waluty. Suma wypłat w zależności od wielkości wypłat (w odpowiednio utworzonych wcześniej przedziałach). Zadanie 5 (czas realizacji 45 min) Firma DziekanatSoftware zaprojektowała i wykonała system dziekanatowy SuperDziekanat do obsługi dziekanatu na uczelniach. System bazodanowy złożony jest z kilkudziesięciu tabel połączonych ze sobą kluczami obcymi. Problem jest z modułem raportującym dla tego systemu. Każdy raport napisany jest w języku SQL, następnie dodawany do aplikacji i wykonywany na bazie danych. Raporty są przekrojowe, dlatego cała baza jest skanowana, co zajmuje sporo czasu i odbywa się w czasie największego użycia systemu. Przy kilkunastu tysiącach studentów w największych tabelach jest nawet kilka milionów rekordów z kilku ostatnich lat, dlatego użycie bazy danych dla raportów nie wchodzi w grę. Ponadto, użytkownicy biznesowi ze znajomością narzędzia MS SQL Server Management Studio chcieliby mieć możliwość tworzenia raportów za pomocą tabel przestawnych. Zadanie to jest kontynuacją zadania z poprzedniego modułu. Rozwiązaniem jest utworzenie kostek danych ze schematu relacyjnego, a następnie zdefiniowaniem agregatów, wymiarów, poziomów i hierarchii. Strona 17/18 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł V AS2008-funkcje zaawansowane Skrypt tworzący bazę danych wraz z przykładowymi danymi znajduje się w pliku lms_skrypt.sql. Zapoznaj się ze schematem relacyjnym, a następnie utwórz kostki danych (w nawiasie są proponowane wymiary): ocena (student, data studenta, data, grupa, typ oceny), obecność (student, zajecie, data dla zajecia), logowanie (uzytkownik, data), zajecie (grupa, termin). Za pomocą tabel przestawnych zaprojektuj następujące raporty: • • • • Średnia ocena w zależności od typu studiów. Średnia ocena w zależności od instytutu i roku dziekańskiego. Liczba nieobecności w zależności od przedmiotu. Procentowa obecność w zależności od prowadzącego. Utwórz agregacje i partycje wg typowych raportów. Utwórz perspektywy zawierające czas i jeden wybrany wymiar. Strona 18/18 ITA-102 Hurtownie Danych Marcin Gorawski, Sławomir Bańkowski Moduł 6 Wersja 1.0 Analityczny język zapytań MDX: wstęp Spis treści Analityczny język zapytań MDX: wstęp ................................................................................................ 1 Informacje o module ............................................................................................................................ 2 Przygotowanie teoretyczne ................................................................................................................. 3 Podstawy teoretyczne.................................................................................................................. 3 Porady praktyczne ....................................................................................................................... 4 Uwagi dla studenta ...................................................................................................................... 4 Dodatkowe źródła informacji....................................................................................................... 5 Laboratorium podstawowe .................................................................................................................. 6 Laboratorium rozszerzone ................................................................................................................. 15 Zadanie 1 (czas wykonania 8 min) ............................................................................................. 15 Zadanie 2 (czas wykonania 8 min) ............................................................................................. 15 Zadanie 3 (czas wykonania 8 min) ............................................................................................. 15 Zadanie 4 (czas wykonania 10 min) ........................................................................................... 15 Zadanie 5 (czas wykonania 10 min) ........................................................................................... 15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp Informacje o module Opis modułu W module poznasz podstawy języka MDX (MultiDimensional eXtensions), za pomocą którego można operować na danych przechowywanych w schemacie wielowymiarowym. Opisana jest składnia, a także podstawowe funkcje w MDX wraz z przykładami. Przykłady operują na testowym schemacie firmy Adventure Works. Cel modułu Celem modułu jest poznanie podstawowej składni języka MDX, co pozwala na projektowanie zapytań operujących na kostkach danych, a także zrozumienie różnic pomiędzy kostką, wymiarem, hierarchią, poziomem, atrybutem i agregatem. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • znał podstawy języka MDX • potrafił napisać proste zapytanie MDX bazujące na kostce wielowymiarowej • rozumiał różnice pomiędzy wymiarem, hierarchią, poziomem, atrybutem i agregatem Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • znać podstawy języka SQL • rozumieć budowę kostek danych Mapa zależności modułu Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w modułach 3, 4, 5. Rys. 1 Mapa zależności modułu Strona 2/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp Przygotowanie teoretyczne Podstawy teoretyczne Język MDX nie jest wrażliwy na wielkość liter. Wszystkie słowa kluczowe mogą być napisane małymi lub dużymi literami. Różnica jest przy nazwach kostek, wymiarów, hierarchii, poziomów, atrybutów i elementów. Zapytanie MDX posiada następującą składnię (w uproszczonej wersji): [WITH <specyfikacja formuly> [,<specyfikacja formuly> …]] SELECT [<specyfikacja osi> [,<specyfikacja osi> …]] FROM [<specyfikacja kostki>] [WHERE [<specyfikacja warunków]] Na każdej osi jest lista punków w przestrzeni wielowymiarowej <specyfikacja osi>:: <zbiór punktów> ON <nazwa osi> Nazwa osi dopuszcza następujące wartości: <nazwa osi>:: COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS | AXIS (index) Zapytanie którego wynikiem jest przestrzeń dwuwymiarowa: SELECT { <KOLEKCJA> } ON COLUMNS, { <KOLEKCJA> } ON ROWS FROM [<KOSTKA DANYCH>] WHERE (<WARUNEK>) Schemat zapytania jest wielowymiarowy (wielowymiarowa kostka), podobnie jak wynik też może być wielowymiarowy. Wiele wymiarów uzyskujemy zastępując COLUMNS i ROWS odpowiednio na AXIS(0) i AXIS(1). Dalsze wymiary uzyskujemy poprzez zwiększanie parametru: AXIS(N) gdzie N=0..127. Choć istnieje 128 osi, to pięciu pierwszym przypisane są nazwy (jako komentarz w poniższym przykładzie): SELECT { KOLEKCJA } ON AXIS(0), // COLUMNS { KOLEKCJA } ON AXIS(1), // ROWS { KOLEKCJA } ON AXIS(2), // PAGES { KOLEKCJA } ON AXIS(3), // SECTIONS { KOLEKCJA } ON AXIS(4) // CHAPTERS FROM [KOSTKA DANYCH] WHERE (WARUNEK) W jednej z wersji zapytania jedna z kolekcji powinna zawierać agregaty. W kolejnych zapytaniach składnia zapytania znacznie się rozbuduje, pojawią się nowe funkcje i słowa kluczowe. Zapytanie MDX jest bardzo podobne do zapytania SQL. Bardziej rozbudowane zapytanie może wyglądać tak: SELECT { [Measures].[Agregat 1], [Measures].[Agregat 2] } ON COLUMNS, { [Wymiar].[Hierarchia].[Poziom].&[Element 1], [Wymiar].[Hierarchia].[Poziom].&[Element 2], [Wymiar].[Hierarchia].[Poziom].&[Element 3] } ON ROWS FROM [KOSTKA DANYCH] WHERE ([Wymiar 2].[Hierarchia 2].[Poziom 2].&[Element 1]) Kolekcję można również wyrazić poprzez: { [Wymiar].[Poziom].&[Element 1], [Wymiar].[Poziom].&[Element 2] } Strona 3/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp We frazie WHERE mogą także być umieszczone agregaty, w tym przypadku na osiach należy umieścić kolekcje elementów z różnych hierarchii: SELECT { KOLEKCJA } ON COLUMNS, { KOLEKCJA } ON ROWS FROM [KOSTKA DANYCH] WHERE ([Measures].[Agregat 1]) W powyższym przypadku kolekcje powinny zawierać zbiory elementów w ramach wymiarów. Inny przykład kolekcji z użyciem funkcji: { [Wymiar].[Poziom].Funkcja } { [Wymiar].[Hierarchia].Funkcja } { [Wymiar].[Poziom].&[Klucz Elementu].Funkcja } Niektóre funkcje istnieją tylko w postaci parametrycznej, gdzie parametrem jest wymiar, poziom, hierarchia lub element: { Funkcja([Wymiar]) } { Funkcja([Wymiar].[Poziom]) } { Funkcja([Wymiar].[Hierarchia].[Poziom]) } { Funkcja([Wymiar].[Hierarchia]) } { Funkcja([Wymiar].[Poziom].&[Klucz elementu]) } { Funkcja([Wymiar].[Poziom].[Nazwa elementu]) } Funkcje można zagnieżdżać, typ wyjściowy funkcji wewnętrznej musi się zgadzać z typem wejściowym funkcji zewnętrznej. Niektóre funkcje posiadają wiele parametrów. { Funkcja2( Funkcja1( KOLEKCJA | ELEMENT ) ) } Porady praktyczne Uwagi ogólne • Każde zapytanie MDX znajdujące się w instrukcji spróbuj wykonać i przeanalizować, co dokładnie otrzymujemy jako wynik. • O ile to możliwe, spróbuj korzystać z pomocy online dotyczącej języka MDX (link znajduje się w dodatkowych źródłach informacji). • Mity na temat MDX: wszyscy znają SQL, ale nikt nie zna MDX, MDX jest językiem trudnym i skomplikowanym, nie można napisać prostych zapytań w MDX. • Fakty na temat MDX: podstawowe zapytania są podobne do zapytań SQL, tworzenie raportów jest dużo prostsze w MDX niż w SQL, nie trzeba tworzyć skomplikowanych złączeń wielu tabel, operowanie na zbiorach jest tak samo proste jak operowanie na relacjach. Uwagi dla studenta Jesteś przygotowany do realizacji laboratorium jeśli: • • • • • • rozumiesz jak zbudowany jest schemat wielowymiarowy znasz pojęcie kostki, wymiaru, hierarchii, poziomu, właściwości, agregatu umiesz napisać proste zapytanie SQL rozróżniasz pojęcie poziomu od elementu dla tym poziomie znasz podstawowe operacje na zbiorach (suma zbiorów, różnica zbiorów, iloczyn zbiorów) wiesz jaka jest różnica pomiędzy wartością agregowaną i nieagregowaną Przed wykonywaniem każdego punktu dokładnie przeczytaj cały punkt, to spowoduje znaczne zmniejszenie liczby pomyłek podczas laboratorium i pozwoli na dokładniejsze poznanie materiału. Strona 4/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. Dodatkowe źródła informacji 1. George Spofford: "MDX Solutions: With Microsoft SQL Server Analysis Services" 2. Mark Whitehorn, Robert Zare, Mosha Pasumansky: "Fast Track to MDX" 3. Strona internetowa: http://msdn.microsoft.com/en-us/library/ms145595.aspx 4. Strona internetowa: http://www.mosha.com/msolap/articles/MDXForEveryone.htm Strona 5/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp Laboratorium podstawowe Na wstępie zaprezentujemy środowisko, w którym będziemy projektować i uruchamiać raporty MDX. Następnie poprzez szereg przykładów, przeplatającej się teorii i zadań kontrolnych nauczymy Cię analizować schemat wielowymiarowy, a następnie projektować proste zapytania MDX korzystając z szeregu dostępnych funkcji. Zadanie Tok postępowania 1. Konfigurowani e i przenoszenie bazy • Uruchom SQL Server Business Intelligence Development Studio. Studio • Otwórz Otw projekt AdventureWorksDW. W projekcie jest gotowy przykład hurtowni danych opartej na bazie relacyjnej. acyjnej. Należy zmienić tylko źródło danych, którym będzie baza AdventureWorksDW.. Może to być lokalna baza podawana jako (local), lub baza zdalna na serwerze jako IP\nazwa_bazy nazwa_bazy. • W oknie Solution Explorer rozwiń Data Sources. • Kliknij Klik dwukrotnie na Adventure Works DW.ds. • Wybierz Wybier przycisk Edit – otworzy się okienko do ustawienia danych źródłowych dla tego projektu hurtowni. • Ustaw nazwę serwera (podaną przez prowadzącego) i nazwę bazy danych na AdventureWorksDW. • Przetestuj połączenie z bazą za pomocą przycisku Test Connection (znajduje się w lewym dolnym roku okienka). • Naciśnij Naci OK potwierdzając wybór pliku bazy, kolejny raz OK potwierdzając wybór połączenia. • Wybierz Wybier menu kontekstowe dla projektu (prawy przycisk myszy) i następnie wybierz wybier opcję Properties, w Configuration Properties wybier Deployment, w polu Server wpisz ścieżkę do serwera (np.: wybierz localhost lub ADRES\NAZWA_SERWERA,, w szczególności będzie to localhost, jeżeli baza działa na lokalnym komputerze), jako bazę danych localhost, wpis AdventureWorksDW. wpisz • Wybierz Wyb menu kontekstowe dla projektu (prawy przycisk myszy) i następnie wybierz wyb opcję Rebuild. Wyniki budowania pokażą się w oknie Output, Output jeżeli okno nie jest widoczne, to można go pokazać za pomocą wybrania View | Output w menu głównym, lub przyciśnięcia skrótu tu klawiszowego Ctr-Atl-O. • Wybier Wybierz menu kontekstowe dla projektu (prawy przycisk myszy) i następnie wybierz wyb opcję Process – po tej operacji baza danych będzie już na serwerze MS SQL Server 2008 razem z informacjami o kostkach i wymiarach. W pojawiającym się okienku naciśnij śnij Run i czekaj chwilę do zakończenia procesu. Po naciśnięciu Process może pokazać się komunikat, że najpierw trzeba przeprowadzić akcję Rebuild i Deploy.. Należy kliknąć Tak aby przebudować projekt. 2. Analiza kostek danych i wymiarów dla hurtowni • Uruchom SQL Server Management Studio. • W oknie Object Explorer kliknij Connect i z rozwijanego menu wybierz Analysis Services. Services • Wpisz nazwę serwera (localhost) ( ) i kliknij na przycisk Connect. • Rozwiń dostępne bazy danych. • Kliknij prawym przyciskiem myszy na bazie Adventure Works DW Strona 6/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp i z kontekstowego menu wybierz New Query ->> MDX. MDX Po wybraniu nowego zapytania MDX pojawiło się okienko, dla którego z lewej strony jest do dyspozycji skrócona wersję danych o kostkach i wymiarach. • Sprawd Sprawdź dostępne kostki. • Dla każdej kostki sprawdź sprawd dostępne wymiary. • Dla każdej kostki sprawd sprawdź dostępne agregaty (Measures Measures). Czy wymiary są współdzielone czy osobne dla każdej kostki? Czy agregaty są współdzielone czy osobne dla każdej kostki? 3. Przykładowe zapytania MDX • Do okienka zapytania MDX wpisz: SELECT {[Measures].[Amount]} ON COLUMNS, {[Account].[Account Number].&[8030]} ON ROWS FROM [Finance] • Naciśnij klawisz F5 (wykonanie zapytania). Następnie przeanalizuj wynik zapytania. Co uzyskałeś uzysk za pomocą takiego zapytania? zapytania W SQL definiowane są kolumny, natomiast zapytanie wyznacza wiersze, natomiast w MDX definiujemy zarówno kolumny jak i wiersze, zapytanie oblicza wartości w komórkach. Na jednej osi powinny znajdować się agregaty (Measures). • Do okienka zapytania MDX wpisz: SELECT {[Measures].[Amount]} ON COLUMNS, {[Account].[Account Number]} ON ROWS FROM [Finance] Jak można zauważyć, brak elementu dla wymiaru powoduje wypisanie elementu domyślnego, w tym m przypadku sumarycznego konta [All Accounts]. • Wykonaj Wykon powyższe zapytania. 4. Wymiar przecięcia • Do poprzedniego zapytania na końcu dodaj: doda WHERE ([Date].[Calendar Year].&[2001]) • Wykona Wykonaj zapytanie i przeanalizuj wynik. Co uzyskujemy za pomocą takiego zapytania? • Poprzednią frazę WHERE zamień na poniższą: WHERE ({[Date].[Calendar Year].&[2001], [Date].[Calendar Year].&[2002]}) Ważne są tutaj nawiasy klamrowe { } – ograniczają one kolekcję złożoną z kilku elementów oddzielonych przecinkiem. Bez tych nawiasów kolekcja zostanie potraktowana jako dwa osobne argumenty, a całe zapytanie zwróci błąd – we frazie WHERE może być tylko jeden argument z danej hierarchii. • Aby filtrować po wielu hierarchiach, należy kolekcje z różnych hierarchii oddzielić przecinkami: SELECT {[Measures].[Amount]} ON COLUMNS, Strona 7/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp {[Account].[Account Number]} ON ROWS FROM [Finance] WHERE ({[Date].[Calendar Year].&[2001], [Date].[Calendar Year].&[2002]}, {[Organization].[Organizations].[Northwest Division]}, {[Department].[Departments].[Quality Assurance], [Department].[Departments].[Research and Development], [Department].[Departments].[Sales and Marketing]}) • Wykonaj Wykon powyższe zapytania. 5. Kolekcja elementów • Kolekcję tworzymy za pomocą wymieniania wszystkich jej składowych po przecinku, kolekcja musi być ujęta w nawiasy { }. Wpisz Wpis zapytanie: SELECT {[Measures].[Order Count], [Measures].[Sales Amount]} ON COLUMNS, {[Product].[Product Line].&[S], [Product].[Product Line].&[M]} ON ROWS FROM [Sales Summary] Jak można zauważyć, kody &[S] i &[M] zostały przetłumaczone na konkretne elementy linii produktu. Można się zastanowić, czy kody tych elementów są dostępne poprzez ich nazwy. • Wpisz zapytanie: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Product].[Product Line].&[Accessory], Line [Product].[Product Line].&[Mountain]} [Mountain]} ON ROWS FROM [Sales Summary] • Elementy nie zostały odnalezione, dlatego w wyniku nie ma żadnych wierszy Wpisz ponownie zapytanie: wierszy. SELECT {[Measures].[Order Count],[Measures].[Sales Count],[Measures].[Sales Amount]} ON COLUMNS, COLUM {[Product].[Product Line].[Accessory], [Product].[Product Line].[Mountain]} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytanie. Tym razem zapytanie wykonało się i zostały pobrane elementy o nazwie wskazanej w zapytaniu. Ważne jest zrozumienie różnicy pomiędzy wymiarem, hierarchią i elementem. W prezentowanym wyżej przykładzie [Product] jest nazwą wymiaru, [Product Line] jest nazwą poziomu, a [Accessory] jest to element na konkretnym poziomie. Jeżeli poziom jest bezpośrednio pod wymiarem, wymiarem a nie pod hierarchią, to do danego elementu poziomu można odwołać się za pomocą [Nazwa wymiaru].[Nazwa elementu], zamiast [Nazwa wymiaru].[Nazwa poziomu].[Nazwa elementu].. 6. Funkcja Children • Można wymienić wszystkie elementy należące do danego wymiaru, hierarchi poziomu lub elementu poprzezz zastosowanie funkcji hierarchii, Children. { [Wymiar].Children } { [Poziom w wymiarze].Children } Strona 8/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp { [Hierarchia].Children } { [Element].Children } Uwaga! W dalszej części ćwiczenia dla wielu funkcji pokażemy możliwość użycia ich w odniesieniu do wymiaru. W większości przypadków jest to ograniczone do wymiarów, dla których jest tylko jeden poziom lub jedna hierarchia. Dla wymiarów z wieloma poziomami lub hierarchiami nie ma możliwości użycia tych funkcji. • Wpisz zapytanie: zapytanie SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Product].[Category].Children} ON ROWS FROM [Sales Summary] Funkcja Children nie może być użyta do poziomów w hierarchii, dlatego niepoprawne iepoprawne jest zastosowanie funkcji Children do [Category] położonego w hierarchii [Product Categories]: • Wpisz i wykonaj zapytanie: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Product].[Product Categories].[Category].Children} ON ROWS FROM [Sales Summary] • Powyższy przykład nie wykona się. Poprawne zastosowanie funkcji Children Children: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Product].[Product Line].Children} ON ROWS FROM [Sales Summary] • Wymiar Date posiada kilka poziomów (Day Day Name, Name Month of Year, Day of Year), Year spróbuj użyć funkcji Children do każdego z tych poziomów: poziomów SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Date].[Day Name].Children} ON ROWS FROM [Sales Summary] • Funkcję Children można użyć do elementu w hierarchii jak na przykładzie poniżej: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Product].[Product Categories].[Category].[Accessories].Children} ON ROWS FROM [Sales Summary] • Wpisz zapytanie: SEL SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Date].[Month of Year].[January].Children} ON ROWS FROM [Sales Summary] Przy używaniu funkcji Children do elementu należy sprawdzić, czy dany element posiada elementy leżące niżej w hierarchii, przykładem jest zapytanie o elementy należące do January – zapytanie nie zwróci żadnych wierszy. Można zauważyć, że January nie posiada żadnych Strona 9/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp elementów leżących na niższym poziomie, ponieważ jest to poziom leżący bezpośrednio w wymiarze Date. Poziom leżący w hierarchii może posiadać poziomy leżące poniżej w hierarchii (o ile nie jest to poziom położony na samym dole), w takim wypadku funkcja Children zwróci konkretne elementy. • Wpisz zapytanie: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Date].[Fiscal].[Month].[January 2003].Children} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytania. 7. Przykłady dla funkcji Children • Przykłady użycia funkcji Children dla wymiaru, hierarchii, poziomu i elementu: SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Sales Channel].Children} ON ROWS FROM [Sales Summary] SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory].Children} ON ROWS ROW FROM [Sales Summary] SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory Country].Children} ON ROWS FROM [Sales Summary] SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory].[Sales Territory Group].&[Europe].Children} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytania. 8. Zadanie kontrolne • Napis Napisz raport przedstawiający całkowity koszt produktu (Total ( Product Cost i podatek (Tax Amount) dla kostki Sales Summary w zależności od Cost) roku dostarczenia (wymiar: Delivery Date). 9. Funkcja Members Funkcja Members zwraca wszystkie elementy w danym dan wymiarze, hierarchii lub poziomie,, łącznie z elementem sumującym wszystkie w dane (zazwyczaj [All]). Dla poziomów lub elementów w hierarchii, funkcja Members zwraca wszystkie elementy leżące poniżej (nie tylko na tym samym poziomie). • Wpisz zapytanie { [Wymiar].Members [Wymiar]. } { [Poziom w wymiarze].Members } { [Poziom w hierarchii].Members } { [Hierarchia].Members } Strona 10/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp • Przykład zastosowania funkcji Members: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Product].[Subcategory].Members} ON ROWS FROM [Sales Summary] Members tym różni się od Children, że Members można stosować tylko dla wymiaru (jeżeli dla wymiaru jest tylko jeden poziom lub jedna hierarchia),, hierarchii lub poziomu, a nie dla elementu. elementu • Wpisz zapytanie: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Sales Channel].Members} Channel].Me ON ROWS FROM [Sales Summary] • Members dla hierarchii: SELECT {[Measures].[Order Count], [Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory].Members} ON ROWS FROM [Sales Summary] • Members dla poziomu w wymiarze: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory Country].Members} ON ROWS FROM [Sales Summary] • Members dla poziomu w hierarchii: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory Country].Members} ON ROWS FROM [Sales Summary] • Natomiast NIE jest prawidłowe zapytanie (funkcja zastosowana do elementu w hierarchii, a nie do hierarchii): hi Members SELECT {[Measures].[Order Count], [Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory].[Sales Territory Group].&[Europe].Members} ON ROWS Group].&[Europe]. FROM [Sales Summary] • Przy czym dla funkcji Children prawidłowe jest: SELECT {[Measures].[Order Count], [Measures].[Sales Amount]} ON COLUMNS, {[Measures].[Order {[Sales Territory].[Sales Territory].[Sales Territory Group].&[Europe].Children} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytania. 10. Przykłady dla funkcji Members • Przykłady dla funkcji Members: SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Delivery Date].[Day of Year].Members} ON ROWS Strona 11/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp FROM [Sales Summary] SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Promotion].[Promotions].[Promotion Category].Members} ON ROWS FROM [Sales Summary] SELECT {[Measures].[Order Count],[Measures].[Sales Amount]} ON COLUMNS, {[Promotion].[Promotions].Members} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytania. 11. Funkcja Members dla agregatów • Zamiast wypisywania wszystkich agregatów możesz moż użyć funkcji Members dla [Measures],, tak jak to pokazane w poniższym przykładzie: SELECT {[Measures].Members} ON COLUMNS, {[Promotion].[Promotion Type].Members} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytanie. 12. Members dla poziomu w wymiarze i hierarchii Poziomy mogą być bezpośrednio pod wymiarem, lub uporządkowane w hierarchii. Należy jednak zrozumieć różnicę pomiędzy uporządkowanymi elementami w hierarchii, gdzie każdy element może mieć elementy leżące poniżej w hierarchii lub leżące powyżej w hierarchii. W przypadku poziomu dla wymiaru, mamy różne elementy nieuporządkowane (bez rodziców i dzieci przyporządkowanych dla określonego elementu). elementu) W niektórych przypadkach, h, nie widać dużej różnicy (głównie dla poziomów najwyżej i najniżej w hierarchii). • Wpisz poniższe zapytanie z funkcją Members zastosowaną zastosowan dla poziomu w wymiarze (bez uporządkowania w hierarchii): hierarchii SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Delivery Date].[Calendar Quarter of Year].Members} ON ROWS {[Delivery FROM [Sales Summary] • Members zastosowane dla poziomu w hierarchii: SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Delivery Date].[Calendar].[Calendar Quarter].Members} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytania. Można się zastanowić, dlaczego tym razem każdy z kwartałów został wypisany kilka razy? Oczywiście ie zgodnie z opisem można się domyślać, domyślać że pierwsze zapytanie zwraca kwartały każdego roku razem: pierwsze kwartały każdego roku reprezentowane eprezentowane są w jednym wierszu. Drugie zapytanie zwraca wszystkie kwartały osobno – każdy kwartał jest reprezentowany poprzez osobny wiersz. 13. Zadanie • Dla kostki Sales Summary wypisz wszystkie agregaty w zależności od Strona 12/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych kontrolne 14. Fraza WHERE Moduł VI MDX-wstęp kategorii promocji, tylko dla daty dostarczenia w 2002 roku. Fraza WHERE może być użyta do zapytań w których na osiach znajdują się kolekcje, wtedy agregat w komórkach określany jest we frazie WHERE. • Wpisz zapytanie: SELECT {[Product].[Product Line].Children} ON COLUMNS, {[Date].[Fiscal Year].Children} ON ROWS FROM [Sales Summary] WHERE ([Measures].[Sales Amount]) • Wykonaj Wykon powyższe zapytanie. 15. Zadanie kontrolne • Napisać zapytanie wyświetlające liczbę zamówionych jednostek (Order ( Quantity w zależności od kategorii produktu (oś X) i kanału sprzedaży Quantity) (oś oś Y - Sales Channel) dla kostki Sales Summary. 16. Funkcja FirstChild • Aby zapytać zapyta się tylko o pierwsze dziecko, użyj funkcji FirstChild. [Hierarchia].FirstChild [Poziom].FirstChild [Element w hierarchii].FirstChild • Przykłady dla FirstChild: SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory].FirstChild} ON ROWS FROM [Sales Summary] SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory Country].FirstChild} ON ROWS FROM [Sales Summary] SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory].[Sales Territory Group].&[Europe].FirstChild} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytania. 17. Funkcja LastChild • Analogicznie, aby a zapytać tać się tylko o ostatnie dziecko, dziecko użyj funkcji Last LastChild. [Hierarchia]. [Hierarchia].LastChild [Poziom]. [Poziom].LastChild [Element w hierarchii].LastChild hierarchii]. • Przykład dla LastChild: SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory Country].LastChild} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytania. Strona 13/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych 18. Funkcja DefaultMember Moduł VI MDX-wstęp • Aby zapytać się tylko o domyślne dziecko z danej hierarchii, hiera użyj funkcji DefaultMember DefaultMember. [Hierarchia].DefaultMember [Poziom].DefaultMember Elementy domyślne zostały ustawione w fazie projektowania kostki i wymiarów. • Przykład dla DefaultMember: SELECT {[Measures].[Sales Amount]} ON COLUMNS, {[Sales Territory].[Sales Territory Country].DefaultMember} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytania. 19. Funkcja UnknownMember W kostkach każda dana agregacyjna jest przypisana do określonego elementu dla wszystkich wymiarów. Jeżeli z pewnych względów nie da się przypisać elementu do faktu, tworzy się element niezdefiniowany. Aby wyświetlić element niezdefiniowany dla określonego poziomu, należy użyć funkcji UnknownMember. [Wymiar]. [Wymiar].UnknownMember [Hierarchia]. [Hierarchia].UnknownMember [Poziom]. [Poziom].UnknownMember Elementy niezdefiniowane zostały ustawione w fazie projektowania kostki i wymiarów. • Wpisz zapytanie z przykładem użycia funkcji UnknownMember: UnknownMember SELECT {[Measures].Members} ON COLUMNS, {[Product].[Model Name].UnknownMember} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytanie. 20. Zadanie kontrolne • Napis Napisz zapytanie wyświetlające podatek (Tax Tax Amount) Amount dla pierwszego, ostatniego i domyślnego roku dostarczenia dla kostki Sales Summary. Strona 14/15 Marcin Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł VI MDX-wstęp Laboratorium rozszerzone Do podejmowania decyzji potrzebne są przekrojowe dane, które powinny być dostępne dla użytkowników biznesowych. Z tego powodu należy przygotować szereg raportów w postaci zapytań MDX gotowych do uruchomienia (poprzez przeglądarkę lub bezpośrednio w SQL Server Management Studio). Przedstawione niżej zadania są raportami, które pochodzą od użytkowników biznesowych. Laboratorium rozszerzone zawiera raporty do wykonania. Każde zadanie jest niezależne, zadania zostały ustawione od najłatwiejszych do najtrudniejszych. Dla każdego zadania podany jest orientacyjny czas wykonania. Wykonaj następujące raporty w języku MDX: Zadanie 1 (czas wykonania 8 min) Dla kostki Finance wypisz wszystkie agregaty dla scenariuszy. Zadanie 2 (czas wykonania 8 min) Dla kostki Finance wypisz Amount w zależności od docelowej waluty. Zadanie 3 (czas wykonania 8 min) Dla kostki Finance wypisz Amount dla wszystkich typów konta (oś X) i scenariuszy (oś Y). Zadanie 4 (czas wykonania 10 min) Dla kostki Finance wypisz pierwszy, ostatni i domyślny element dla poziomu kwartału w hierarchii [Fiscal]. Zadanie 5 (czas wykonania 10 min) Dla kostki Finance wypisz wszystkie agregaty względem scenariuszy (tylko dla roku 2002 i 2003). Strona 15/15 ITA-102 Hurtownie Danych Marcin Gorawski, Sławomir Bańkowski Moduł 7 Wersja 1.0 Analityczny język zapytań MDX: podstawy Spis treści Analityczny język zapytań MDX: podstawy .......................................................................................... 1 Informacje o module ............................................................................................................................ 2 Przygotowanie teoretyczne ................................................................................................................. 4 Podstawy teoretyczne.................................................................................................................. 4 Porady praktyczne ....................................................................................................................... 5 Uwagi dla studenta ...................................................................................................................... 5 Dodatkowe źródła informacji....................................................................................................... 6 Laboratorium podstawowe .................................................................................................................. 7 Laboratorium rozszerzone ................................................................................................................. 16 Zadanie 1 (czas wykonania 10 min) ........................................................................................... 16 Zadanie 2 (czas wykonania 10 min) ........................................................................................... 16 Zadanie 3 (czas wykonania 12 min) ........................................................................................... 16 Zadanie 4 (czas wykonania 12 min) ........................................................................................... 16 Zadanie 5 (czas wykonania 15 min) ........................................................................................... 16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy Informacje o module Opis modułu W module poznasz zaawansowane zapytania MDX operujące na wielowymiarowych kostkach danych. Projektowane zapytania są analityczne i przekrojowe, korzystają z wielu funkcji języka MDX: Cousin, Distinct, Except, DrillDownLevel, NonEmpty, Order, TopCount, BottomCount, Filter. W module znajdziesz informacje o operacjach na zbiorach wielowymiarowych i zastosowanie funkcji CrossJoin, NonEmptyCrossJoin, a także operatora iloczynu kartezjańskiego (*). Przedstawione są także metody tworzenia nowych agregatów i elementów kalkulowanych na podstawie istniejącej struktury. W ostatniej części modułu jest pokazana metoda wydobywania atrybutów dla poziomów za pomocą funkcji Properties i CurrentMember. Cel modułu Celem modułu jest nauczenie projektowania skomplikowanych, przekrojowych raportów i analiz korzystając z języka MDX, a także definiowania nowych agregatów i elementów na podstawie istniejących. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • znał zaawansowane funkcje języka MDX • potrafił wykorzystać język MDX do budowania skomplikowanych, przekrojowych raportów analitycznych • używać funkcji CrossJoin i NonEmptyCrossJoin do uzyskania wielu hierarchii na jednej osi wynikowej • potrafił definiować nowe agregaty i elementy na podstawie istniejących • wydobywał informacje o właściwościach dla poziomów Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • znać składnię języka MDX • potrafić utworzyć kolekcję elementów poprzez wyliczenie • umieć zastosować podstawowe funkcje języka MDX: Children, Members, FirstChild, LastChild, DefaultMember • potrafić zastosować frazę WHERE zarówno jako wymiar przecięcia, jak i do definicji agregacji w krotkach wynikowych Strona 2/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy Mapa zależności modułu Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w modułach 4, 5, 6. Rys. 1 Mapa zależności modułu Strona 3/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy Przygotowanie teoretyczne Podstawy teoretyczne Zapytanie MDX posiada następującą składnię (w uproszczonej wersji): [WITH <specyfikacja formuly> [,<specyfikacja formuly> …]] SELECT [<specyfikacja osi> [,<specyfikacja osi> …]] FROM [<specyfikacja kostki>] [WHERE [<specyfikacja warunków]] Na każdej osi jest lista punków w przestrzeni wielowymiarowej <specyfikacja osi>:: <zbiór punktów> ON <nazwa osi> Nazwa osi dopuszcza następujące wartości: <nazwa osi>:: COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS | AXIS (index) Zapytanie którego wynikiem jest przestrzeń dwuwymiarowa: SELECT { <KOLEKCJA> } ON COLUMNS, { <KOLEKCJA> } ON ROWS FROM [<KOSTKA DANYCH>] WHERE (<WARUNEK>) Jedna z kolekcji powinna zawierać agregaty. W kolejnych zapytaniach składnia zapytania znacznie się rozbuduje, pojawią się nowe funkcje i słowa kluczowe. Zapytanie MDX jest bardzo podobne do zapytania SQL. Bardziej rozbudowane zapytanie może wyglądać tak: SELECT { [Measures].[Agregat 1], [Measures].[Agregat 2] } ON COLUMNS, { [Wymiar].[Hierarchia].[Poziom].&[Element 1], [Wymiar].[Hierarchia].[Poziom].&[Element 2], [Wymiar].[Hierarchia].[Poziom].&[Element 3] } ON ROWS FROM [KOSTKA DANYCH] WHERE (WARUNEK) Kolekcję można również wyrazić poprzez: { [Wymiar].[Poziom].&[Element 1], [Wymiar].[Poziom].&[Element 2] } We frazie WHERE mogą także być umieszczone agregaty, w tym przypadku na osiach należy umieścić kolekcje elementów z różnych hierarchii: SELECT { KOLEKCJA } ON COLUMNS, { KOLEKCJA } ON ROWS FROM [KOSTKA DANYCH] WHERE ([Measures].[Agregat 1]) W powyższym przypadku kolekcje powinny zawierać zbiory elementów w ramach wymiarów. Inny przykład kolekcji z użyciem funkcji: { [Wymiar].[Poziom].Funkcja } { [Wymiar].[Hierarchia].Funkcja } { [Wymiar].[Poziom].&[Klucz elementu].Funkcja } Niektóre funkcje istnieją tylko w postaci parametrycznej, gdzie parametrem jest wymiar, poziom, hierarchia lub element: { Funkcja([Wymiar]) } Strona 4/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy { Funkcja([Wymiar].[Poziom]) } { Funkcja([Wymiar].[Hierarchia].[Poziom]) } { Funkcja([Wymiar].[Hierarchia]) } { Funkcja([Wymiar].[Poziom].&[Klucz elementu]) } { Funkcja([Wymiar].[Poziom].[Nazwa elementu]) } Funkcje można zagnieżdżać, typ wyjściowy funkcji wewnętrznej musi się zgadzać z typem wejściowym funkcji zewnętrznej. Niektóre funkcje posiadają wiele parametrów. { Funkcja2( Funkcja1( KOLEKCJA | ELEMENT ) ) } Składnia funkcji Children: { [Wymiar].Children } { [Poziom w wymiarze].Children } { [Hierarchia].Children } { [Element].Children } Składnia funkcji Members: { [Wymiar].Members } { [Poziom w wymiarze].Members } { [Poziom w hierarchii].Members } { [Hierarchia].Members } Składnia funkcji FirstChild: [Hierarchia].FirstChild [Poziom].FirstChild [Element w hierarchii].FirstChild Składnia funkcji LastChild: [Hierarchia].LastChild [Poziom].LastChild [Element w hierarchii].LastChild Składnia funkcji DefaultMember: [Hierarchia].DefaultMember [Poziom].DefaultMember Porady praktyczne Uwagi ogólne • Każde zapytanie MDX znajdujące się w instrukcji spróbuj wykonać i przeanalizować, co dokładnie otrzymujemy jako wynik. • O ile to możliwe, spróbuj korzystać z pomocy online dotyczącej języka MDX (link znajduje się w dodatkowych źródłach informacji). • Mity na temat MDX: wszyscy znają SQL, ale nikt nie zna MDX, MDX jest językiem trudnym i skomplikowanym, nie można napisać prostych zapytań w MDX. • Fakty na temat MDX: podstawowe zapytania są podobne do zapytań SQL, tworzenie raportów jest dużo prostsze w MDX niż w SQL, nie trzeba tworzyć skomplikowanych złączeń wielu tabel, operowanie na zbiorach jest tak samo proste jak operowanie na relacjach. Uwagi dla studenta Jesteś przygotowany do realizacji laboratorium jeśli: • znasz składnię języka MDX, • rozumiesz różnice pomiędzy wymiarem, hierarchią, poziomem, atrybutem, agregatem i elementem, Strona 5/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy • potrafisz napisać proste zapytanie MDX korzystając z takich funkcji jak: Children, Members, Cousin, FirstChild, LastChild, DefaultMember. Przed wykonywaniem każdego punktu dokładnie przeczytaj cały punkt, to spowoduje znaczne zmniejszenie liczby pomyłek podczas laboratorium i pozwoli na dokładniejsze poznanie materiału. Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. Dodatkowe źródła informacji 1. George Spofford: "MDX Solutions: With Microsoft SQL Server Analysis Services" 2. Mark Whitehorn, Robert Zare, Mosha Pasumansky: "Fast Track to MDX" 3. Strona internetowa: http://msdn.microsoft.com/en-us/library/ms145595.aspx 4. Strona internetowa: http://www.mosha.com/msolap/articles/MDXForEveryone.htm Strona 6/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy Laboratorium podstawowe Na wstępnie zaprezentujemy połączenie do kostki danych. Kolejno omówimy podstawowe funkcje funk przypominając ich składnię. Następnie przejdziemy do omawiania zaawansowanych funkcji języka. Na końcu ćwiczenia są zadania do samodzielnego wykonania. Zadanie Tok postępowania 1. Połączenie do bazy • Uruchom SQL Server Management Studio. • W oknie Object Explorer kliknij Connect i z rozwijanego menu wybierz Analysis Services. Services • Wpisz nazwę serwera (localhost) ( ) i kliknij na przycisk Connect. • Rozwiń dostępne bazy danych. • Kliknij prawym przyciskiem myszy na bazie Adventure Works DW i z kontekstowego menu wybierz New Query -> MDX. MDX Po wybraniu nowego zapytania MDX pojawiło się okienko, dla którego z lewej strony jest do dyspozycji skrócona wersję danych o kostkach i wymiarach. 2. Funkcja Cousin Można użyć funkcji Cousin aby wyznaczyć element elemen w hierarchii na tym samym poziomie i miejscu (kolejności), ale dla innego rodzica. rodzica Cousin( [Element] , [Element na wyższym poziomie] ) Obydwa argumenty funkcji Cousin muszą być w tej samej hierarchii, natomiast nie muszą się różnić tylko jednym poziomem. W poniższym przykładzie [Canada] jest pierwszym państwem w [North America], dlatego zostanie wyznaczone pierwsze państwo w [Europe]. • Wpisz zapytanie: SELECT {[Measures].[Sales Amount]} ON COLUMNS, {Cousin([Sales Territory].[Sales Territory].[Sales Territory Country].&[Canada], [Sales Territory].[Sales Territory].[Sales Territory Group].&[Europe])} ON ROWS FROM [Sales Summary] • Przykład dla Cousin z wykorzystaniem niem wymiaru daty: SELECT {[Measures].[Sales Amount]} ON COLUMNS, {Cousin([Delivery Date].[Calendar].[Calendar Quarter].&[2001]&[3], [Delivery Date].[Calendar].[Calendar Year].&[2003])} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytania. 3. Funkcja Distinct Funkcja Distinct pozwala na eliminację powtórzonych elementów w zbiorze. Distinct( KOLEKCJA ) Wszystkie elementy kolekcji powinny inny być na tym samym poziomie lub z tej samej hierarchii. W poniższym przykładzie element [Bike Racks] nie zostanie wypisany dwa razy,, tylko jeden raz. raz • Wpisz zapytanie: SELECT {[Measures].[Sales Amount]} ON COLUMNS, Strona 7/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy {Distinct({[Product].[Product Model Categories].[Category].[Accessories].Children, Categories].[Category].[ Accessories].Children, [Product].[Product Model Categories].[Subcategory].[Bike Racks]})} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytania. zapytania 4. Funkcja Except Aby wykonać różnicę dwóch zbiorów, należy użyć funkcji Except: Except( KOLEKCJA , KOLEKCJA ) Z kolekcji podanej jako pierwszy parametr usuwane są wszystkie elementy należące do kolekcji podanej jako drugi parametr. W podanym niżej przykładzie wyświetlamy wszystkie kategorie produktu bez kategorii [Bikes]. • Wpisz zapytanie: SELECT {[Measures].[Sales Amount]} ON COLUMNS, COLU {Except({[Product].[Category].Children}, {Except( {[Product].[Category].[Bikes]} )} ON ROWS FROM [Sales Summary] Poniżej przykład, w którym wyświetlamy wszystkie modele produktu oprócz tych, które należą do linii [Accessory]. [Accessory] Do zapytania wykorzystywana jest hierarchia [Product Model Lines]. Lines] • Wpisz zapytanie: SELECT {[Measures].[Sales Amount]} ON COLUMNS, COLU {Except({[Product].[Product Model Lines].[Model Name].Members}, {[Product].[Product Model Lines].[Product Line].[Accessory].Children})} ON ROWS FROM [Sales Summary] W pierwszym parametrze funkcji Except do wyciągania elementów używamy funkcji Members (nie można użyć tutaj funkcji Children), ponieważ poziom [Model Name] jest w hierarchii. Drugi parametr zawiera funkcję Children (nie można użyć tutaj funkcji Members), ponieważ [Accessory] jest to element na poziomie [Product Line]. • Wykonaj powyższe zapytania. 5. Zadanie kontrolne 6. Funkcja DrillDownLevel • Dla kostki Sales Summary wypisać wszystkie agregaty dla podkategorii produktu bez podkategorii: [Cleaners], [Fenders],, [Helmets]. Za pomocą DrillDownLevel możemy wyświetlić elementy znajdujące się poniżej określonego poziomu. DrillDownLevel( [Wymiar] ) DrillDownLevel( [Poziom] ) DrillDownLevel( [Element] ) Poniższe zapytanie wyświetli wszystkie kategorie produktu, a także wszystkie podkategorie (w tej hierarchii pod poziomem [Category] znajduje się poziom [Subcategory]). • Wpisz zapytanie: SELECT Strona 8/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy {[Measures].[Sales Amount]} ON COLUMNS, {DrillDownLevel([Product].[Product Categories].[Category])} ON ROWS FROM [Sales Summary] • Przeanalizuj poniższe przykłady p użycia DrillDownLevel dla wymiaru, poziomu w wymiarze, poziomu w hierarchii, hierarchii, elementu elem w wymiarze, elementu w hierarchii. DrillDownLevel( rillDownLevel( [Sales Channel] ) DrillDownLevel( [Product].[Category] ) DrillDownLevel( [Product].[Product Categories].[Category] Categories].[Category ) DrillDownLevel( [Product].[Product uct].[Product Categories] ) DrillDownLevel( [Product].[Category].[Accessories] ory].[Accessories] ) DrillDownLevel( [Product].[Product Dr Categor Categories].[Category].[Accessories] ) • Wykonaj powyższe zapytania. Przykłady z DrillDownLevel wklej do pierwszego przykładu i wykonaj. 7. Zadanie kontrolne • Dla kostki Sales Summary dla wszystkich kategorii, podkategorii i produktów wypisz liczbę jednostek sprzedanych, uwzględnij tylko rok 2003. 8. Funkcja NonEmpty W przypadku wielu elementów w zbiorze zdarza się, że część elementów nie posiada danych i komórki są wypełniane wartością (null). Aby usunąć elementy, dla których wszystkie wartości agregacji są puste, należy użyć funkcji NonEmpty. NonEmpty( KOLEKCJA ) • Przykładowe Prz zapytanie: SELECT {[Measures].[Sales Amount],[Measures].[Tax Amount]} ON COLUMNS, {NonEmpty([Product].[Model Name].Children)} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytanie. zapytani 9. Zadanie kontrolne 10. Funkcja Order • Dla kostki Sales Summary wyświetlić liczbę zamówień i podatek w zależności od roku i kwartału. Nie wypisywać kwartałów, dla których nie ma zamówień. Aby posortować elementy zbioru względem pewnego agregatu, należy użyć funkcji Order: Order( KOLEKCJA, [Agregat], TYP_SORTOWANIA ) Dostępne są cztery typy sortowania: ASC, DESC, DESC BASC, BDESC. Dwa pierwsze typy sortują tylko w ramach jednej określonej hierarchii, kolejne dwa służą do sortowania ze złamaniem hierarchii (Break hierarchy). • Przykład dla Order: SELECT {[Measures].[Sales Amount],[Measures].[Tax Amount]} ON COLUMNS, {Order([Product].[Category].Children, [Measures].[Sales Amount], DESC)} ON ROWS FROM [Sales Summary] Strona 9/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy • Wykonaj powyższe zapytanie. 11. Zadanie kontrolne 12. Funkcje TopCount i BottomCount • Dla kostki Sales Summary wyświetl całkowity koszt produktu i liczbę zamówionych jednostek w zależności od typu promocji. Wynik posortuj posort rosnąco wg całkowitego kosztu produktu. Funkcje TopCount i BottomCount sortują zbiór odpowiedni rosnąco i malejąco względem em agregatu, a następnie wyświetlają tylko N pierwszych elementów: TopCount( KOLEKCJA , N, AGREGAT ) BottomCount( KOLEKCJA , N, AGREGAT ) • Wpisz przykład p dla TopCount – pięć najlepszych produktów pod względem sprzedaży: SELECT {[Measures].[Sales Amount]} ON COLUMNS, {TopCount([Product].[Product].Children,5, [Measures].[Sales Amount])} ON ROWS FROM [Sales Summary] • Wpisz przykład p dla BottomCount – pięć najsłabiej sprzedających się produktów, nie są liczone produkty dla których nie zarejestrowano faktu fakt sprzedaży: SELECT {[Measures].[Sales Amount]} ON COLUMNS, {BottomCount(NonEmpty([Product].[Product].Children),5, [Measures].[Sales Amount])} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytania. 13. Zadanie kontrolne • Dla kostki Sales Summary wyświetl 2 najlepsze i 2 najgorsze kraje (Sales ( Territory Country) Country) względem liczby sprzedanych jednostek – wykonaj to za pomocą jednego zapytania. Podpowiedź: najpierw napisz to za pomocą dwóch zapytań, a następnie użyj przecinka aby utworzyć kolekcję: { A , B }. 14. Funkcja Filter Funkcja Filter pozwala wybrać z kolekcji tylko te elementy, które spełniają pewien warunek. Filter( KOLEKCJA , WARUNEK ) • Wpisz przykład dla funkcji Filter,, gdzie rezultatem są produkty dla których liczba sprzedanych jednostek przekracza 1000: których SELECT {[Measures].[Order Quantity]} ON COLUMNS, {Filter([Product].[Product].Children, [Measures].[Order Quantity]>1000)} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytanie. 15. Zadanie kontrolne 16. Obiekty wielowymiarowe • Dla kostki Sales Summary wyświetl wszystkie agregaty tylko dla tych krajów dla których całkowity koszt produktu przekracza 7000000. 7000000 Dotychczas rozpatrywaliśmy tylko przypadki, gdzie na jednej osi znajdują się elementy z jednej hierarchii (z jednego wymiaru lub Strona 10/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy agregaty). W języku MDX jest możliwość operacji na zbiorach (dodawanie, różnica), ale także definiowanie iloczynu dwóch zbiorów zbioró i operacje na przestrzeniach wielowymiarowych. A = { a1, a2, a3 } B = { b1, b2 } A * B = { (a1,b1) (a1,b1), (a1,b2), (a2,b1), (a2,b2), ,b2), (a1,b1), (a3,b2) } Należy zauważyć, że operacja iloczynu kartezjańskiego z przyczyn praktycznych jest zapisywana symbolem gwiazdki (*). (*) W języku MDX współrzędne każdego punktu podajemy w nawiasach okrągłych, punkty oddzielamy przecinkami, natomiast całą kolekcję ujmujemy w nawiasy klamrowe: A = { a1, a2, a3 } B = { b1, b2 } C = { c1, c2, c3 } { (a1, b2, c1), (a3, b2, c2), (a2, (a2 b1, c3) } Ważna jest informacja, że elementy są tego samego typu jeżeli należą do jednego lub różnych poziomów tej samej hierarchii jednego wymiaru lub do jednego poziomu danego wymiaru nie należącego do żadnej hierarchii. Należy sprawdzić, czy każdy punkt posiada odpowiednie wymiary jako kolejne współrzędne. Niepoprawne są przykłady: { (a1) , (b2) } // inny wymiar jako pierwszy element { (a1, b2), (a1, b3, c1) } // punkty mają inną liczbę wymiarów { (a1, b2), (b1, a3) } // zmieniona kolejność wymiarów Przykłady zbiorów z elementami o takim samym typie: Z1 = {[Product].[Product Categories].[Category].[Accessories], [Product].[Product Categories].[Category].[Bikes], [Product].[Product Categories].[Subcategory].[Bike Racks], [Product].[Product Categories].[Product Categories].[Product Name].[Touring Rear Wheel]} Z2 = {[Product].[Style].[Men] [Product].[Style].[Not Applicable] [Product].[Style].[Womens]} Pierwszy przykład dotyczy wymiaru [Product Product] i hierarchii [Product Categories] (różne poziomy),, natomiast drugi przykład przy dotyczy wymiaru [Product] i poziomu [Style] (poziom bezpośrednio pod wymiarem). • Wpisz zapytanie: zapytanie SELECT {[Measures].Members} ON COLUMNS, {([Promotion].[Promotion Type].&[Discontinued Product], [Product].[Product Categories].[Category].&[4]), ([Promotion].[Promotion Type].&[New Product], [Product].[Product Categories].[Product Name].&[447])} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytanie. zapytani 17. Funkcja CrossJoin Funkcja CrossJoin pozwala na wykonanie iloczynu kartezjańskiego dwóch zbiorów. Pozwala to na umieszczenie wielu elementów Strona 11/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych i operator * Moduł VII MDX - Podstawy z różnych hierarchii na jednej osi. CrossJoin( KOLEKCJA , KOLEKCJA ) KOLEKCJA * KOLEKCJA • Wpisz przykład p dla CrossJoin wyświetlający wszystkie agregaty dla kostki Sales Summary w zależności od kategorii promocji i kanału sprzedaży: SELECT {[Measures].Members} ON COLUMNS, {CrossJoin([Promotion].[Promotion Category].Children, [Sales Channel].[Sales Channel].Children)} ON ROWS FROM [Sales Summary] • Powyższe zapytanie z jest równoważne: SELECT {[Measures].Members} ON COLUMNS, {[Promotion].[Promotion Category].Children * [Sales Channel].[Sales Channel].Children} ON ROWS FROM [Sales Summary] • Jest to równoważne zapytaniu: SELECT {[Measures].Members} ON COLUMNS, {[Promotion].[Promotion Category].&[Customer], [Promotion].[Promotion Category].&[No Discount], [Promotion].[Promotion Category].&[Reseller]} * {[Sales Channel].[Sales Channel].&[Internet], [Sales Channel].[Sales Channel].&[Reseller]} ON ROWS FROM [Sales [Sal Summary] • A także równoważne: SELECT {[Measures].Members} ON COLUMNS, {{([Promotion].[Promotion Category].&[Customer], [Sales Channel].[Sales Channel].&[Internet]), ([Promotion].[Promotion Category].&[Customer], [Sales Channel].[Sales Channel].&[Reseller]), &[Reseller]), ([Promotion].[Promotion Category].&[No Discount], [Sales Channel].[Sales Channel].&[Internet]), ([Promotion].[Promotion Category].&[No Discount], [Sales Channel].[Sales Channel].&[Reseller]), ([Promotion].[Promotion Category].&[Reseller], [Reseller], [Sales Channel].[Sales Channel].&[Internet]), ([Promotion].[Promotion Category].&[Reseller], [Sales Channel].[Sales Channel].&[Reseller])}} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytania. 18. Funkcja NonEmptyCrossJo in Funkcja NonEmptyCrossJoin: NonEmptyCrossJoin( KOLEKCJA , KOLEKCJA ) Funkcja ta działa tak samo jak połączenie: NonEmpty( CrossJoin( KOLEKCJA , KOLEKCJA ) ) 19. Zadanie • Wyświetl wszystkie agregaty dla kostki Sales Summary w zależności od Strona 12/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych kontrolne 20. Łączenie agregatów z hierarchiami Moduł VII MDX - Podstawy kategorii produktu i roku dostarczenia. Posortuj Posort względem liczby jednostek sprzedanych – wykonaj zapytanie raz z ASC i raz z BASC jako typ sortowania. Do tej pory były analizowane przykłady, w których na kolumnach były wyświetlane agregaty, natomiast w kolejnych wierszach odpowiednie elementy w hierarchii. Możliwe jest połączenie agregatów z hierarchiami, tak jak w poniższym przykładzie. przykładzie • Wpisz zapytanie: zapytanie SELECT {CrossJoin({[Measures].[Sales Amount], [Measures].[Extended Amount]}, {[Promotion].[Promotion Category].Children})} ON COLUMNS, {[Sales Channel].[Sales Channel].Children} ON ROWS FROM [Sales Summary] • Wykonaj Wykon powyższe zapytanie. 21. Składnia WITH MEMBER AS dla agregatów Aby dodać nowy agregat kalkulowany należy użyć frazy WITH MEMBER AS: WITH MEMBER [Measures].[Nowy agregat] AS ' WYRAZENIE ' W zapytaniu można już użyć agregatu wraz z agregatami kostki: SELECT { [Measures]..., [Measures].[Nowy Agregat] } ON COLUMNS, COLUMNS ... W poniższym przykładzie obliczamy średnią liczbę zamówionych produktów przypadających ypadających na jedno zamówienie. • Wpisz zapytanie: WITH MEMBER [Measures].[Average Units Count] AS '[Measures].[Order Quantity]/[Measures].[Order Count]' SELECT {[Measures].[Order Quantity], [Measures].[Average Units Count]} ON COLUMNS, {[Product].[Product Categories].[Category].Members} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytanie. 22. Zadanie kontrolne 23. Składnia WITH MEMBER AS dla elementów • Dla kostki Sales Summary zdefiniuj nowy agregat [Tax Percentage] jako iloraz [Tax Amount] / [Total Product Cost].. Wyświetl ten agregat względem roku, semestru i kwartału dostarczenia (oś X), a także kanału sprzedaży [Sales Channel] i kraju sprzedaży [Sales Territory Country] (oś Y) . Podobnie ie jak dodawanie nowego agregatu, można dodać nowy element definiując działania, jakie zostaną wykonane wyko dla obliczanych agregatów: WITH MEMBER [Wymiar].[Poziom].[Nowy [Wymiar].[Poziom] element] AS ' WYRAZENIE ' WITH MEMBER [Wymiar].[Hierarchia] [Wymiar].[Hierarchia].[Nowy .[Nowy element] AS ' WYRAZENIE ' W poniższym przykładzie definiujemy nowy element na poziomie [Product Line] o nazwie [Accessory and Components]. Components] Strona 13/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy • Wpisz zapytanie: WITH MEMBER [Product].[Product [Product].[Product Line].[Accessory and Components] AS '[Product].[Product Line].[Accessory]+[Product].[Product Line].[Accessory]+[Product]. Line].[Components]' SELECT {[Measures].[Order Count], [Measures].[Total Product Cost]} ON COLUMNS, {[Product].[Product Line].[Accessory and Components]} ON ROWS FROM [Sales Summary] • Kolejny przykład prezentuje przykład wykorzystania WITH MEMBER AS dla hierarchii: WITH MEMBER [Delivery Date].[Fiscal].[Last Three Quarters of 2002] AS '[Delivery Date].[Fiscal].[Fiscal Quarter].[Q2 FY 2002]+[Delivery Date].[Fiscal].[Fiscal Quarter].[Q3 FY 2002]+[Delivery Date].[Fiscal].[Fiscal Quarter].[Q4 FY 2002]' SELECT {[Measures].[Order Count], [Measures].[Total Product Cost]} ON COLUMNS, {[Delivery Date].[Fiscal].[Last Three Quarters of 2002]} ON ROWS FROM [Sales Summary] • Kolejny przykład dotyczy elementu zdefiniowanego jako różnica dwóch elementów na różnych poziomach, ale w jednej hierarchii. WITH MEMBER [Delivery Date].[Fiscal].[2003 without January] AS '[Delivery Date].[Fiscal].[Fiscal Year].[FY 2003]-[Delivery 2003] Date].[Fiscal].[Month].[January 2003]' SELECT {[Measures].[Order Count], [Measures].[Total Product Product Cost]} ON COLUMNS, {[Delivery Date].[Fiscal].[2003 without January]} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytanie. 24. Funkcje Properties i CurrentMember Poziomy mogą zawierać właściwości, które są przypisane dla każdego elementu. Właściwości są to dane na temat elementu, które nie muszą tworzyć logicznie kolejnego poziomu. [Wymiar].Properties("Wlasnosc") [Hierarchia].Properties("Wlasnosc") [Poziom w wymiarze].Properties("Wlasnosc") wymiarze] [Poziom Poziom w hierarchii].Properties("Wlasnosc") hierarchii Aby odczytać własności sności dla elementów, należy użyć funkcji Properties jak w podanym niżej przykładzie. • Wpisz zapytanie: WITH MEMBER [Measures].[Style] AS '[Product].[Product].Properties("Style")' SELECT {[Measures].[Style], Strona 14/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy [Measures].[Order Quantity]} ON COLUMNS, {NonEmpty([Product].[Product].Children)} ON ROWS FROM [Sales Summary] Określony wymiar dla agregatu odpowiada konkretnemu rozpatrywanemu elementowi w momencie wykonywania zapytania, można dodać funkcję CurrentMember aby uzmysłowić sobie jak wyznaczany jest określony atrybut. • Wpisz zapytanie: WITH MEMBER [Measures].[Days to Manufacture] AS '[Product].[Product].CurrentMember.Properties("Days to Manufacture")' MEMBER [Measures].[Dealer Price] AS '[Product].[Product].CurrentMember.Properties("Dealer Price")' SELECT {[Measures].[Days to Manufacture], [Measures].[Dealer Price], [Measures].[Order Quantity]} ON COLUMNS, {NonEmpty([Product].[Product].Children)} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytania. 25. Zadanie kontrolne • Dla każdego produktu wyświetl kolor, klasę, rozmiar, status i liczbę jednostek sprzedanych dla kostki Sales Summary.. Strona 15/16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VII MDX - Podstawy Laboratorium rozszerzone Do podejmowania decyzji potrzebne są przekrojowe dane, które powinny być dostępne dla użytkowników biznesowych. Z tego powodu należy przygotować szereg raportów w postaci zapytań MDX gotowych do uruchomienia (poprzez przeglądarkę lub bezpośrednio w SQL Server Management Studio). Przedstawione niżej zadania są raportami, które pochodzą od użytkowników biznesowych. Laboratorium rozszerzone zawiera raporty do wykonania. Każde zadanie jest niezależne, zadania zostały ustawione od najłatwiejszych do najtrudniejszych. Dla każdego zadania podany jest orientacyjny czas wykonania. Wykonaj następujące raporty w języku MDX: Zadanie 1 (czas wykonania 10 min) Dla kostki Finance wypisz wszystkie agregaty dla departamentów na wszystkich poziomach. Zadanie 2 (czas wykonania 10 min) Dla kostki Finance wypisz Amount dla wszystkich typów konta (oś X) i scenariuszy (oś Y). Zadanie 3 (czas wykonania 12 min) Dla kostki Sales Summary wypisz wszystkie agregaty dla lat, semestrów i kwartałów. Nie wypisuj danych dla roku 2002. Zadanie 4 (czas wykonania 12 min) Dla kostki Sales Summary wypisz Sales Amount i Total Product Cost i kategorię promocji (oś Y) w zależności od roku dostarczenia, kategorii produktu (oś X). Zadanie 5 (czas wykonania 15 min) Dla kostki Finance wypisz wszystkie agregaty dla organizacji do 3 poziomu, nie wypisuj organizacji z wartościami pustymi. Strona 16/16 ITA-102 Hurtownie Danych Marcin Gorawski, Sławomir Bańkowski Moduł 8 Wersja 1.0 Analityczny język zapytań MDX: zaawansowane Spis treści Analityczny język zapytań MDX: zaawansowane ................................................................................. 1 Informacje o module ............................................................................................................................ 2 Przygotowanie teoretyczne ................................................................................................................. 4 Podstawy teoretyczne.................................................................................................................. 4 Porady praktyczne ....................................................................................................................... 5 Uwagi dla studenta ...................................................................................................................... 5 Dodatkowe źródła informacji....................................................................................................... 6 Laboratorium podstawowe .................................................................................................................. 7 Laboratorium rozszerzone ................................................................................................................. 16 Zadanie 1 (czas wykonania 10 min) ........................................................................................... 16 Zadanie 2 (czas wykonania 10 min) ........................................................................................... 16 Zadanie 3 (czas wykonania 12 min) ........................................................................................... 16 Zadanie 4 (czas wykonania 12 min) ........................................................................................... 16 Zadanie 5 (czas wykonania 15 min) ........................................................................................... 16 Zadanie 6 (czas wykonania 15 min) ........................................................................................... 16 Zadanie 7 (czas wykonania 15 min) ........................................................................................... 16 Zadanie 8 (czas wykonania 15 min) ........................................................................................... 16 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane Informacje o module Opis modułu W module poznasz zaawansowane zastosowania języka MDX. Znajdziesz opisy dla funkcji: IIF, Filter, StrToValue. Poznasz także operacje na zbiorach w przestrzeni wielowymiarowej, funkcje Lead i Lag pozwalające na odczyt elementu poprzedniego i następnego, operator zakresu (:). Nauczysz się wyznaczania prostej średniej kroczącej i obliczanie agregacji porównawczych względem elementów poprzednich (porównanie bieżącego roku do lat poprzednich). Cel modułu Celem modułu jest nauczenie zaawansowanych funkcjonalności języka MDX, raportów porównawczych, a także operacji na zbiorach w wielowymiarowych kostkach danych. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • wiedział jak używać podstawowych i zaawansowanych funkcji języka MDX • potrafił używać na zbiorach operującymi na wielu hierarchiach • zdolny do przyswojenia innych funkcji na podstawie dokumentacji on-line Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • znać składnię języka MDX • potrafić użyć funkcji języka MDX: Children, Members, FirstChild, LastChild, DefaultMember, Cousin, Distinct, Except, DrillDownLevel, NonEmpty, Order, TopCount, BottomCount, Filter, CrossJoin, NonEmptyCrossJoin • rozumieć jak definiowane są nowe elementy i agregaty kalkulowane w wielowymiarowej kostce Mapa zależności modułu Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w modułach 3, 4, 5, 6, 7. Strona 2/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane Rys. 1 Mapa zależności modułu Strona 3/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane Przygotowanie teoretyczne Podstawy teoretyczne Zapytanie MDX posiada następującą składnię (w uproszczonej wersji): [WITH <specyfikacja formuly> [,<specyfikacja formuly> …]] SELECT [<specyfikacja osi> [,<specyfikacja osi> …]] FROM [<specyfikacja kostki>] [WHERE [<specyfikacja warunków]] Na każdej osi jest lista punków w przestrzeni wielowymiarowej <specyfikacja osi>:: <zbiór punktów> ON <nazwa osi> Nazwa osi dopuszcza następujące wartości: <nazwa osi>:: COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS | AXIS (index) Zapytanie którego wynikiem jest przestrzeń dwuwymiarowa: SELECT { <KOLEKCJA> } ON COLUMNS, { <KOLEKCJA> } ON ROWS FROM [<KOSTKA DANYCH>] WHERE (<WARUNEK>) Składnia funkcji Children: { [Wymiar].Children } { [Poziom w wymiarze].Children } { [Hierarchia].Children } { [Element].Children } Składnia funkcji Members: { [Wymiar].Members } { [Poziom w wymiarze].Members } { [Poziom w hierarchii].Members } { [Hierarchia].Members } Składnia funkcji FirstChild: [Hierarchia].FirstChild [Poziom].FirstChild [Element w hierarchii].FirstChild Składnia funkcji LastChild: [Hierarchia].LastChild [Poziom].LastChild [Element w hierarchii].LastChild Składnia funkcji DefaultMember: [Hierarchia].DefaultMember [Poziom].DefaultMember Składnia funkcji Cousin: Cousin( [Element] , [Element na wyższym poziomie] ) Składnia funkcji Distinct: Distinct( KOLEKCJA ) Składnia funkcji Except: Except( KOLEKCJA , KOLEKCJA ) Składnia funkcji DrillDownLevel: Strona 4/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane DrillDownLevel( [Wymiar] ) DrillDownLevel( [Poziom] ) DrillDownLevel( [Element] ) Składnia funkcji NonEmpty: NonEmpty( KOLEKCJA ) Składnia funkcji NonEmpty: Order( KOLEKCJA, [Agregat], TYP_SORTOWANIA ) Składnia funkcji TopCount i BottomCount: TopCount( KOLEKCJA , N, AGREGAT ) BottomCount( KOLEKCJA , N, AGREGAT ) Składnia funkcji Filter: Filter( KOLEKCJA , WARUNEK ) Składnia funkcji CrossJoin: CrossJoin( KOLEKCJA , KOLEKCJA ) KOLEKCJA * KOLEKCJA Składnia funkcji NonEmptyCrossJoin: NonEmptyCrossJoin( KOLEKCJA , KOLEKCJA ) Składnia WITH MEMBER AS dla agregatów: WITH MEMBER [Measures].[Nowy agregat] AS ' WYRAZENIE ' Składnia WITH MEMBER AS dla elementów: WITH MEMBER [Wymiar].[Poziom].[Nowy element] AS ' WYRAZENIE ' WITH MEMBER [Wymiar].[Hierarchia].[Nowy element] AS ' WYRAZENIE ' Składnia funkcji Properties: [Wymiar].Properties("Wlasnosc") [Hierarchia].Properties("Wlasnosc") [Poziom w wymiarze].Properties("Wlasnosc") [Poziom w hierarchii].Properties("Wlasnosc") Porady praktyczne Uwagi ogólne • Każde zapytanie MDX znajdujące się w instrukcji spróbuj wykonać i przeanalizować, co dokładnie otrzymujemy jako wynik. • O ile to możliwe, spróbuj korzystać z pomocy online dotyczącej języka MDX (link znajduje się w dodatkowych źródłach informacji). • Obiekty wielowymiarowe najlepiej ćwiczyć na trzech wymiarach. Można wyobrazić sobie kostkę sześcienną, na ścianach są odpowiednio: klient, produkt, czas, wewnątrz kostki są agregaty. Każdy punkt kostki posiada pewne współrzędne którymi są wspomniane wymiary. Za pomocą takiego modelu łatwiej zrozumieć takie funkcje jak: Lag, Lead, CurrentMember, Parent. Uwagi dla studenta Jesteś przygotowany do realizacji laboratorium jeśli: • znasz różnicę pomiędzy wymiarem, hierarchią, poziomem, atrybutem • rozumiesz jak używać zaawansowanych funkcji języka MDX • umiesz definiować nowe agregaty i elementy kalkulowane Strona 5/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane • potrafisz pisać zapytania używając funkcji CrossJoin operującej na wielu hierarchiach i poziomach Przed realizacją każdego punktu przeczytaj go dokładnie, a następnie przeanalizuj dokładnie wyniki każdego zapytania. Jeżeli nie rozumiesz jak działa określona funkcja lub składnia, porównaj z dokumentacją on-line i poprzednimi przykładami. Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. Dodatkowe źródła informacji 1. George Spofford: "MDX Solutions: With Microsoft SQL Server Analysis Services" 2. Mark Whitehorn, Robert Zare, Mosha Pasumansky: "Fast Track to MDX" 3. Strona internetowa: http://msdn.microsoft.com/en-us/library/ms145595.aspx 4. Strona internetowa: http://www.mosha.com/msolap/articles/MDXForEveryone.htm Strona 6/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane Laboratorium podstawowe W hurtowni danych i wszystkich systemach analitycznych system raportujący odgrywa bardzo ważną rolę. Bez dobrej wizualizacji nie ma sensu przygotowywanie, zbieranie informacji, analizy schematu i projektowanie procesu ETL. W systemie bazodanowym podstawowym podstawowy językiem do wyciągania interesujących nas podsumowań jest SQL, natomiast w systemach OLAP język ten to MDX. Projektowanie bardzo prostych raportów jest możliwe za pomocą tabel przestawnych, niestety większość naprawdę przydatnych rzeczy nie ogranicza się do tabel przestawnych. W firmie Adventure Works mamy do zaprojektowania raporty podsumowujące aktualną działalność firmy, a także działalność w odniesieniu do danych historycznych. Potrzebne są porównania kwartałów i użycie średniej kroczącej, kroczącej aby przekonać ać się o trendach zbieranych danych. W kolejnych krokach przedstawimy funkcje i typowe struktury, dzięki którym możliwe będzie wykonanie zadań zawartych w laboratorium rozszerzonym. Na laboratorium zapoznamy się z funkcjami IIF, StrToValue.. Kolejno poznamy funkcję NextMember, PrevMember, PrevMember Lead, Lag za pomocą których wydobędziemy poprzednie lub kolejne elementy w stosunku do aktualnie rozpatrywanego. Następnie nauczymy się wykonywać operacje na obiektach wielowymiarowych i używać funkcji Sum i Avg to obliczania nia średniej kroczącej. Na końcu zaprezentujemy raporty porównujące dane agregacyjne w ramach czasowych. Zadanie Tok postępowania 1. Połączenie do bazy • Uruchom SQL Server Management Studio. • W oknie Object Explorer kliknij Connect i z rozwijanego menu wybierz Analysis Services. Services • Wpisz nazwę serwera (localhost) ( ) i kliknij na przycisk Connect. • Rozwiń dostępne bazy danych. • Kliknij prawym przyciskiem myszy na bazie Adventure Works DW i z kontekstowego menu wybierz New Query -> MDX. MDX 2. Funkcja IIF Za pomocą funkcji IIF możemy wyświetlić jedną z dwóch wartości w zależności od warunku podanego jako pierwszy parametr: IIF( WARUNEK, WARTOSC_JEZELI_TAK, WARTOSC_JEZELI_NIE ) W podanym niżej przykładzie zamieniamy konkretne wartości na przyporządkowane ządkowane oznaczenia Znana lub Nieznana. • Wpisz zapytanie: WITH MEMBER [Measures].[Waga] AS 'IIF([Product].[Product].Properties( "Weight" )="Unknown", "Nieznana","Znana")' SELECT {[Measures].[Waga], [Measures].[Order Quantity]} ON COLUMNS, {NonEmpty([Product].[Product].Children)} ON ROWS FROM [Sales Summary] Jako argumenty funkcji IIF możemy także używać wyrażeń, wyrażeń jak to pokazano na poniższym przykładzie. • Wpisz zapytanie: WITH MEMBER [Measures].[Waga Sztuki] AS 'IIF([Product].[Product].Properties("Weight")="Unknown", 'IIF([Product].[Product].Properties("Weight")="Unknown", Strona 7/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane "Nieznana",[Product].[Product].Properties("Weight"))' MEMBER [Measures].[Waga Calkowita] AS 'IIF([Product].[Product].Properties("Weight")="Unknown", "Nieznana",[Product].[Product].Properties("Weight") * [Measures].[Order Quantity])' MEMBER [Measures].[Liczba Sztuk] AS '[Measures].[Order Quantity]' SELECT {[Measures].[Waga Sztuki], [Measures].[Waga Calkowita], [Measures].[Liczba Sztuk]} ON COLUMNS, {NonEmpty([Product].[Product].Children)} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytania. 3. Funkcja StrToValue Niekiedy właściwości są zapisane jako łańcuchy znaków, choć w rzeczywistości są to liczby. Można użyć funkcji StrToValue aby przekonwertować łańcuch na wartość: StrToValue( LANCUCH ) W podanym niżej przykładzie wszystkie produkty oznaczone są jako Expensive mimo, że [Dealer Price] nie jest większy od 500. • Wpisz zapytanie: WITH MEMBER [Measures].[Dealer Price] AS '[Product].[Product].CurrentMember.Properties("Dealer Price")' MEMBER [Measures].[Price [Me Cheap] AS 'IIF([Product].[Product].CurrentMember.Properties("Dealer Price")>500,"Expensive","Cheap")' SELECT {[Measures].[Dealer Price], [Measures].[Price Cheap], [Measures].[Order Quantity]} ON COLUMNS, {NonEmpty([Product].[Product].Child {NonEmpty([Product].[Product].Children)} ON ROWS FROM [Sales Summary] Kolejny przykład pokazuje prawidłowe użycie funkcji StrToValue. • Wpisz i przeanalizuj zapytanie: WITH MEMBER [Measures].[Dealer Price] AS '[Product].[Product].CurrentMember.Properties("Dealer Price")' MEMBER [Measures].[Price [Measures].[ Cheap] AS 'IIF(StrToValue([Product].[Product].CurrentMember.Properties("Deal er Price"))>500,"Expensive","Cheap")' SELECT {[Measures].[Dealer Price], [Measures].[Price Cheap], [Measures].[Order Quantity]} ON COLUMNS, {NonEmpty([Product].[Product].Children)} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytania. 4. Funkcja NextMember, Za pomocą funkcji NextMember, PrevMember, PrevMember Lead, Lag można wyznaczyć poprzednie lub kolejne elementy w stosunku do elementu Strona 8/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych PrevMember, Lead, Lag Moduł VIII MDX - Zaawansowane rozpatrywanego: [Element].PrevMember [Element].NextMember [Element].Lead( LICZBA ) [Element].Lag( LICZBA ) Funkcja Lead(N) odpowiada funkcji Lag(-N), N), tak jak funkcja Lag(N) odpowiada funkcji Lead(-N). W niżej podanym przykładzie dla każdego wiersza wyznaczamy poprzedni kwartał. • Wpisz zapytanie. WITH MEMBER [Measures].[Last Quarter] AS 'IIF([Date].[Fiscal].PrevMember=null, "-",[Date].[Fiscal].PrevMember.Name)' SELECT {[Measures].[Last Quarter], [Measures].Members} ON COLUMNS, {[Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] Aby odwołać się do elementu aktualnego użyliśmy [Date].[Fiscal], a nie [Date].[Fiscal].[Fiscal Quarter].. Przy użyciu hierarchii, hie element aktualny jest związany tylko z wymiarem i hierarchią. Tylko przy użyciu poziomu leżącego bezpośrednio pod wymiarem element aktualny jest związany z tym wymiarem i poziomem. Ma to związek z drilowaniem danych. Dla hierarchii możemy użyć funkcji DrillDownLevel, DrillDownLevel a wtedy nie ma sensu odwoływać się do konkretnego poziomu, ponieważ na jednej osi może być rozpatrywanych wiele poziomów z jednej hierarchii. W kolejnym przykładzie pokazujemy element znajdujący się 5 elementów wcześniej, poprzedni, następny, stępny, znajdujący zna się 5 elementów później. • Wpisz zapytanie: WITH MEMBER [Measures].[Last 5 Quarter] AS 'IIF([Date].[Fiscal].Lag(5)=null, "-",[Date].[Fiscal].Lag(5).Name)' MEMBER [Measures].[Last Quarter] AS 'IIF([Date].[Fiscal].PrevMember=null, "-",[Date].[Fiscal].PrevMember.Name)' MEMBER [Measures].[Next Quarter] AS 'IIF([Date].[Fiscal].NextMember=null, "-",[Date].[Fiscal].NextMember.Name)' MEMBER [Measures].[Next 5 Quarter] AS 'IIF([Date].[Fiscal].Lead(5)=null, "-",[Date].[Fiscal].Lead(5).Name)' SELECT {[Measures].[Last 5 Quarter], [Measures].[Last Quarter], [Measures].[Next Quarter], [Measures].[Next 5 Quarter], [Measures].Members} ON COLUMNS, Strona 9/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane {[Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytania. 5. Operacje na obiektach wielowymiarowyc h Rozpatrywany obiekt w przestrzeni zawiera wiele wartości w zależności od innych wymiarów. Aby uzyskać informacje o wartościach dla określonych krotek, należy użyć notacji krotkowej: ( ELEMENT, AGREGAT AG ) ( KOLEKCJA , AGREGAT ) W poniższym przykładzie wyznaczamy wartości [Order Quantity] dla [Europe], [Pacific], a także sumaryczne. • Wpisz zapytanie: WITH MEMBER [Measures].[Europe Order Quantity] AS '([Sales Territory].[Sales Territory].[Sales Territory Group].&[Europe],[Measures].[Order Quantity])' MEMBER [Measures].[Pacific Order Quantity] AS '([Sales Territory].[Sales Territory].[Sales Territory Group].&[Pacific],[Measures].[Order Quantity])' SELECT {[Measures].[Europe Order Quantity], [Mea [Measures].[Pacific Order Quantity], [Measures].[Order Quantity]} ON COLUMNS, {[Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] W kolejnym przykładzie wyznaczamy [Order Order Quantity] Quantity dla aktualnego i poprzedniego kwartału używając funkcji PrevMember revMember. • Wpisz zapytanie: WITH MEMBER [Measures].[Last Quarter Order Quantity] AS '([Date].[Fiscal].PrevMember,[Measures].[Order Quantity])' MEMBER [Measures].[Diff Order Quantity] AS '[Measures].[Order Quantity] - [Measures].[Last Quarter Order Quant Quantity]' SELECT {[Measures].[Last Quarter Order Quantity], [Measures].[Order Quantity], [Measures].[Diff Order Quantity]} ON COLUMNS, {[Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] Następny przykład ilustruje wykorzystanie funkcji Parent do pokazywania procentowego udziału elementu w elementach element leżących na poziomach wyżej. • Wpisz zapytanie: WITH MEMBER [Measures].[Actual Semester Order Quantity] AS '([Date].[Fiscal].Parent,[Measures].[Order Quantity])' MEMBER [Measures].[Actual Year Order Quantity] AS '([Date].[Fiscal].Parent.Parent,[Measures].[Order Quantity])' Strona 10/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane MEMBER [Measures].[Order Quantity in Semester Percent] AS '[Measures].[Order Quantity] / [Measures].[Actual Semester Order Quantity]', Quantity FORMAT='PERCENT' MEMBER [Measures].[Order Quantity in Year Percent] AS '[Measures].[Order Quantity] / [Measures].[Actual Year Order Quantity]', FORMAT='PERCENT' SELECT {[Measures].[Actual Semester Order Quantity], [Measures].[Actual Year Y Order Quantity], [Measures].[Order Quantity], [Measures].[Order Quantity in Semester Percent], [Measures].[Order Quantity in Year Percent]} ON COLUMNS, {[Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] • Wykonaj powyższe zapytania. 6. Wykorzystanie funkcji do obliczania agregacji Można obliczyć sumę poprzedniego z wykorzystaniem funkcji Sum: i aktualnego elementu Sum( KOLEKCJA , AGREGAT ) W poniższym przykładzie przedstawiamy obliczenie aktualnego akt i poprzedniego agregatu. • Wpisz zapytanie: WITH MEMBER [Measures].[Order Quantity Sum2] AS 'Sum({[Delivery Date].[Fiscal].PrevMember, Date].[Fiscal].PrevMember [Delivery Date].[Fiscal].CurrentMember}, [Measures].[Order Quantity])' SELECT {[Measures].[Order Quantity], [Measures].[Order Quantity Sum2]} ON COLUMNS, {[Delivery Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] Funkcja Sum przyjmuje dwa parametry: pierwszym jest element lub kolekcja, a drugim jest agregat który zostanie wyznaczony dla każdego k z tych elementów. W powyższym przykładzie odwołujemy się tylko do aktualnego i poprzedniego elementu. W kolejnym przykładzie obliczamy średnią kroczącą (Simple Simple Moving Average – SMA) za pomocą funkcji Lag, a także znaku dwukropka wukropka jako operatora zakresu. Operator zakresu zwraca wszystkie elementy pomiędzy elementami krańcowymi rozdzielonymi znakiem dwukropka. Kolekcja: {[Delivery Date].[Fiscal].Lag(4) Date].[Fiscal].Lag( : [Delivery Date].[Fiscal].CurrentMember} jest równoważna: {[Delivery [Delivery Date].[Fiscal].Lag(4), Da [Delivery Date].[Fiscal].Lag(3), Date].[Fiscal].Lag(3) [Delivery Date].[Fiscal].Lag(2), Date].[Fiscal].Lag( [Delivery Date].[Fiscal].Lag(1), Date].[Fiscal].Lag( Strona 11/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane [Delivery Date].[Fiscal].CurrentMember} • Wpisz zapytanie: WITH MEMBER [Measures].[Order Quantity SMA5] AS 'Avg({[Delivery Date].[Fiscal].Lag(3) Date].[F : [Delivery Date].[Fiscal].CurrentMember}, [Measures].[Order Quantity])' SELECT {[Measures].[Order Quantity], [Measures].[Order Quantity SMA5]} ON COLUMNS, {[Delivery Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] Powyżej przedstawiona średnia krocząca jest bardzo często wykorzystywana w rozmaitych raportach z dziedziny ekonomii. Zapytanie przedstawia liczbę jednostek dla wszystkich produktów. Jeżeli chcielibyśmy średnią tylko dla pewnych określonych elementów, eleme możemy dodać frazę WHERE. • Wpisz zapytanie: WITH MEMBER [Measures].[Order Quantity SMA5] AS 'Avg({[Delivery Date].[Fiscal].Lag(3): [Delivery Date].[Fiscal].CurrentMember}, [Measures].[Order Quantity])' SELECT {[Measures].[Order Quantity], Quantity] [Measures].[Order Quantity SMA5]} ON COLUMNS, {[Delivery Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] WHERE ([Product].[Category].[Category].[Accessories]) Dodanie frazy WHERE nie rozwiązuje sprawy, ponieważ nie ma możliwości wyświetlenia SMA5 (Simple Simple Moving Average – Algebraiczna Średnia Krocząca) dla innych kategorii produktu na jednym raporcie, poniżej prezentujemy rozwiązanie w którym zmodyfikowana została fraza WITH MEMBER AS. AS • Wpisz zapytanie: WITH MEMBER [Measures].[Order Quantity Accessories] AS '([Product].[Category].[Category].[Accessories], [Measures].[Order Quantity])' MEMBER [Measures].[Order Quantity SMA5] AS 'Avg({[Delivery Date].[Fiscal].Lag(5): Date].[Fiscal].Lag( [Delivery very Date].[Fiscal].CurrentMember}, ([Product].[Category].[Category].[Accessories], [Measures].[Order Quantity]))' SELECT {[Measures].[Order Quantity Accessories], [Measures].[Order Quantity SMA5]} ON COLUMNS, {[Delivery Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] Strona 12/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane • Idąc dalej tym krokiem możemy dodać kolejne elementy do raportu: WITH MEMBER [Measures].[Order Quantity Accessories] AS '([Product].[Category].[Category].[Accessories], [Measures].[Order Quantity])' MEMBER [Measures].[Order Quantity Bikes] AS '([Product].[Category].[Category].[Bikes], [Measures].[Order Quantity])' MEMBER [Measures].[Order Quantity SMA5 Accessories] AS 'Avg({[Delivery Date].[Fiscal].Lag(5): Date].[Fiscal].Lag( [Delivery Date].[Fiscal].CurrentMember}, ([Product].[Category].[Category].[Accessories], [Measures].[Order Quantity]))' MEMBER [Measures].[Order Quantity SMA5 Bikes] AS 'Avg 'Avg({[Delivery Date].[Fiscal].Lag(5): [Delivery Date].[Fiscal].CurrentMember}, rrentMember}, ([Product].[Category].[Category].[Bikes], [Measures].[Order Quantity]))' SELECT {[Measures].[Order Quantity Bikes], [Measures].[Order Quantity SMA5 Bikes], [Measures].[Order Quantity Accessories], [Measures].[Order Quantity SMA5 Accessories]} ON COLUMNS, {[Delivery Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] Trudno przewidzieć wszystkie kategorie produktów, dlatego w dalszym kroku wyświetlamy wszystkie kategorie produktu na osi X, wszystkie kwartały na osi Y, a w krotkach ach wartości średniej kroczącej. • Wpisz zapytanie: WITH MEMBER [Measures].[Order Quantity SMA5] AS 'Avg({[Delivery Date].[Fiscal].Lag(5): Date].[Fiscal].Lag( [Delivery Date].[Fiscal].CurrentMember}, [Measures].[Order Quantity])' SELECT {[Product].[Category].[Category].Members} ON COLUMNS, {[Delivery Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] WHERE ([Measures].[Order Quantity SMA5]) • Wykonaj powyższe zapytania. 7. Użycie wielu poziomów hierarchii do obliczeń agregacyjnych W poprzednich przykładach sytuacja była taka, że rozpatrywane elementy na osi Y (kwartały) należały do jednego poziomu. Co będzie, jeżeli użyjemy funkcji DrillDownLevel i jednocześnie będziemy rozpatrywać funkcję Lag? • Wpisz zapytanie: WITH MEMBER [Measures].[Order Quantity SMA5] AS 'Avg({[Delivery Date].[Fiscal].Lag(5): Date].[Fiscal].Lag( Strona 13/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane [Delivery Date].[Fiscal].CurrentMember}, [Measures].[Order Quantity])' SELECT {[Product].[Category].[Category].Members} ON COLUMNS, {DrillDownLevel( [Delivery Date].[Fiscal].[Fiscal Semester].Members)} Semester].Members ON ROWS FROM [Sales Summary] WHERE ([Measures].[Order Quantity SMA5]) Obliczenia zostały wykonane bez błędu widocznego na ekranie, ekranie czy są jednak logicznie spójne? Dla każdego kwartału oczekujemy średniej kroczącej z 5 ostatnich kwartałów. Dla każdego semestru oczekujemy średniej dla 5 ostatnich semestrów. Po wykonaniu zapytania dotyczącego semestrów można już upewnić się, że dane są spójne: WITH MEMBER [Measures].[Order Quantity Quanti SMA5] AS 'Avg({[Delivery Date].[Fiscal].Lag(5): Date].[Fiscal].Lag( [Delivery Date].[Fiscal].CurrentMember}, [Measures].[Order Quantity])' SELECT {[Product].[Category].[Category].Members} ON COLUMNS, {[Delivery Date].[Fiscal].[Fiscal Semester].Members} ON ROWS FROM [Sales Summary] WHERE ([Measures].[Order Quantity SMA5]) • Wykonaj powyższe zapytania. 8. Raporty zależne w czasie Jednym z celów raportów jest porównanie wartości aktualnych z pewnymi przeszłymi. W poprzednich punktach prezentowaliśmy raport który obliczał różnicę z aktualnego kwartału w stosunku do jednego kwartału wcześniej. Teraz pokażemy raport, który oblicza różnicę icę aktualnego kwartału do odpowiedniego kwartału rok wcześniej – zostanie używa funkcja Cousin. Cousin Pierwsze zapytanie obrazuje, jak należy obliczyć odpowiadający ący semestr z poprzedniego roku. • Wpisz zapytanie: WITH MEMBER [Measures].[Order Quantity Parent Parent] Parent] AS 'Cousin([Delivery Date].[Fiscal].CurrentMember, [Delivery Date].[Fiscal].Parent.Parent.PrevMember).Name' SELECT {[Measures].[Order Quantity Parent Parent]} ON COLUMNS, {[Delivery Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FRO [Sales Summary] FROM Została dwukrotnie użyta funkcja Parent,, ponieważ w hierarchii [Fiscal] rok jest dwa poziomy nad kwartałem (rok, semestr, kwartał, miesiąc, data). Kolejne zapytanie realizuje ealizuje już wspomniane zadanie. • Wpisz zapytanie: WITH MEMBER [Measures].[Order [ Quantity Prev] AS '(Cousin([Delivery Date].[Fiscal].CurrentMember, Strona 14/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane [Delivery Date].[Fiscal].Parent.Parent.PrevMember), [Measures].[Order Quantity])' MEMBER [Measures].[Order Quantity Prev Quater Diff] AS '[Measures].[Order Quantity] - [Measures].[Order Quantity Prev]' SELECT {[Product].[Category].[Category].Members} ON COLUMNS, {[Delivery Date].[Fiscal].[Fiscal Quarter].Members} ON ROWS FROM [Sales Summary] WHERE ([Measures].[Order Quantity Prev Quater Diff]) • Wykonaj powyższe zapytania. Strona 15/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane Laboratorium rozszerzone Do podejmowania decyzji potrzebne są przekrojowe dane, które powinny być dostępne dla użytkowników biznesowych. Z tego powodu należy przygotować szereg raportów w postaci zapytań MDX gotowych do uruchomienia (poprzez przeglądarkę lub bezpośrednio w SQL Server Management Studio). Przedstawione niżej zadania są raportami, które pochodzą od użytkowników biznesowych. Laboratorium rozszerzone zawiera opcjonalne raporty do wykonania. Każde zadanie jest niezależne, zadania zostały ustawione od najłatwiejszych do najtrudniejszych. Dla każdego zadania podany jest orientacyjny czas wykonania. Wykonaj następujące raporty w języku MDX: Zadanie 1 (czas wykonania 10 min) Dla kostki Sales Summary wypisz wszystkie produkty, dla których wartość agregatu Sales Amount była większa niż wartość Sales Amount dla produktu pierwszego. Zadanie 2 (czas wykonania 10 min) Dla kostki Sales Summary wypisać wszystkie te produkty, dla których Sales Amount było większe w 2006 niż w 2007 roku. Zadanie 3 (czas wykonania 12 min) Dla kostki Sales Summary wypisz SMA6 z interwałem miesięcznym (oś Y) dla agregatu Sales Amount w zależności od kategorii produktu i kategorii promocji (oś X). Zadanie 4 (czas wykonania 12 min) Dla kostki Sales Summary wypisz trzy najlepsze miesiące roku 2003, które były lepsze pod względem agregatu Sales Amount od odpowiedniego miesiąca roku 2002 (znajdujemy trzy miesiące, dla których różnica w agregacie Sales Amount między miesiącem roku 2003 i 2002 była największa). Zadanie 5 (czas wykonania 15 min) Dla kostki Sales Summary wypisz 5 najlepszych produktów pod względem procentowego zwiększenia sprzedaży z roku 2003 na 2004. Zadanie 6 (czas wykonania 15 min) Dla kostki Sales Summary napisz raport porównujący wszystkie kwartały aktualnego roku do poszczególnych kwartałów kolejnych lat. Porównywany agregat to Sales Amount. Na osi Y powinny znaleźć się kwartały aktualnego roku, a na osi X kolejne lata. W krotkach powinny znaleźć się liczby oznaczające, o ile procent agregat Sales Amount jest większy lub mniejszy (znak minus) od odpowiadającego kwartału w roku podanym na osi X. Zadanie 7 (czas wykonania 15 min) Dla kostki Sales Summary napisz raport wyświetlający te wszystkie produkty i agregaty dla nich, które miały większą sprzedaż (Sales Amount) w drugim kwartale roku 2003 niż w trzecim kwartale roku 2003. Posortuj wynik wg całkowitego kosztu produktu (Total Product Cost). Zadanie 8 (czas wykonania 15 min) Dla kostki Sales Summary wypisać wszystkie te kwartały i agregaty dla których udział procentowy w danym roku przekroczył 27% pod względem Sales Amount. Określony kwartał zostanie Strona 16/17 Marcin Gorawski, Sławomir Bańkowski ITA 102 Hurtownie Danych Moduł VIII MDX - Zaawansowane wyświetlony, jeżeli Sales Amount dla tego kwartału podzielony przez Sales Amount dla roku będzie większe od 0,27. Strona 17/17 ITA-102 Hurtownie Danych Marcin Gorawski, Michał Jan Gorawski Moduł 9 Wersja 1.0 Data Mining I Spis treści Data Mining I ........................................................................................................................................ 1 Informacje o module ............................................................................................................................ 2 Przygotowanie teoretyczne ................................................................................................................. 3 Podstawy teoretyczne.................................................................................................................. 3 Laboratorium podstawowe .................................................................................................................. 6 Problem 1 (czas realizacji 25 min)................................................................................................ 6 Problem 2 (czas realizacji 15min) - .............................................................................................. 7 Laboratorium podstawowe ................................................................................................................ 11 Problem 2 (czas realizacji 25 min) – kontynuacja modułu 1...................................................... 11 Laboratorium rozszerzone ................................................................................................................. 12 Zadanie 1 (czas realizacji 30 min)............................................................................................... 12 Zadanie 1 (czas realizacji 60 min)............................................................................................... 12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł IX Data Mining I Informacje o module Opis modułu W module poznasz zaawansowane zastosowania modeli eksploracji danych. Dowiesz się czym jest Data Mining (Eksploracja Danych), w jakich przypadkach można ją wykorzystać, jakie są korzyści wykorzystania tych struktur oraz jak korzystać z Data Miningu w SQL Server 2008. Cel modułu Przekazanie informacji na temat modeli służących do określenia potencjalnych odbiorców akcji reklamowej, oraz metody porównań różnych algorytmów. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • wiedział czym jest Data Mining i do czego jest wykorzystywany • potrafił stworzyć modele Dataminingowe w SQL Server 2008 Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • wiedział teorię Ekstrakcji Danych • potrafić utworzyć modele i przeanalizować modeleEkstrakcji danych • rozumiał zasady tworzenia i analizy modeli Ekstrakcji Danych Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w modułach 3, 4, 5. Rys. 1 Mapa zależności modułu Strona 2/12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł IX Data Mining I Przygotowanie teoretyczne Podstawy teoretyczne Początek dziedziny odkrywania wiedzy (ang. Knowledge Discovery in Databases KDD) poprzez eksplorację danych (ang. Data Minig DM) sięgają 5000 lat wstecz, kiedy to ludzie kultury sumeryjskiej gromadzili zapisy podatkowe na glinianych tabliczkach. Od tego czasu, rozwijano techniki gromadzenia i analizy tego typu informacji. Poniżej przykłady KDD. Analizy korporacyjne i sterowanie ryzykiem • Planowanie finansowe i ewolucja aktywów: • Analiza i predykcja przepływu pieniędzy. • Analiza żądań warunkowych zapewniających rozwój aktywów. • Analiza przekrojowo-profilowana i szeregów czasowych ( finansowe wskaźniki, analiza trendów, etc). • Konstruowanie zasobów: • Sumaryzacja - porównywanie zasobów i ich zużycia. • Konkurencja: • Monitor konkurencji i kierunki rynku (CI: inteligentna konkurencja). • Segmentowanie klientów w klasy i klasy bazujące na procedurach wyceny. • Ustawienie strategii wyceny dla wysoce konkurencyjnego rynku. Zarządzanie rynkiem • Lokowanie danych do analizy: • transakcje kart kredytowych, karty lojalności klienta, kupony dyskontowe, zgłoszenia skarg klientów, badania stylu życia (publicznego). • Marketing ukierunkowany - poszukiwanie klasterów „modelu’ klientów, którzy dzielą pewne charakterystyki np.: zainteresowań, poziom dochodu, przyzwyczajeń, itp.; • Określenie wzorców nadprogramowo kupowania dla klienta -Konwersja pojedynczego rachunku bankowego na rachunek wspólny : skojarzenie, etc. • Analiza przekrojowa rynku: • Skojarzenia/korelacje pomiędzy sprzedażami produktu. • Predykcja bazująca na skojarzonej informacji. KDD odwołuje się do całościowego procesu odkrywania użytecznej wiedzy z danych, podczas, gdy DM to szczególny krok w tym procesie – aplikacja specyficznych algorytmów ekstrakcji wiedzy z danych. Rys. 1 prezentuje ogólny schemat procesu KDD z użyciem algorytmów DM. Zauważmy, że proces ten jest dość skomplikowany - wieloiteracyjny i wieloeksperymentalny. Strona 3/12 B AZA D AN Y CH P r z e tw a rz a n ie w s t ę p ne TAKSONOMIA P R E P R O C E S S IN G D o s t ę p i S e le kc ja C z y s z c z e n ie W z bo g a c a n ie In te g r a c ja T ra n s fo rm a c ja R e d u k c ja D y s k r e t y z a c ja Moduł IX Data Mining I MODELE DM ALGORYTMY Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych P O S T P R O C E S S IN G W iz u a liz a c ja R a po r t ow a n ie A n a liz a w y n ik ó w A s ym ila c ja D e c y z ja @ A k c ja P o m i a r r e z u lta t ów In t e rp r e ta c ja B AZA W IE D Z Y DM E k s p lo ra c ja d a n yc h P rz e tw a rz a nie końcowe O c en a e ks p e rt ó w Rys. 1. Schemat procesu KDD z użyciem algorytmów DM Największym wyzwaniem dla DM jest bardzo duży rozmiar kolekcji danych. Obecne obserwacje pokazują, że rozmiar danych rośnie podobnie jak moc obliczeniowa komputerów – podwaja się co 12 miesięcy. Ma to ogromny wpływ na ewolucję algorytmów DM z powodu tak szybko rosnących ilościami danych. Pod pojęciem eksploracji danych (DM) rozumiemy: • • Ekstrakcję niejawnych, wcześniej nieznanych i potencjalnie użytecznych informacji z danych. Ekstrakcję i analizę dużej liczby danych, przy pomocy środków automatycznych lub pół automatycznych w celu okrycia znaczących wzorców i reguł. • Technika używana do znajdowania struktur i związków w dużych zbiorach danych. Eksploracją danych nie jest dedukcyjnym przetwarzaniem zapytań, systemem eksperckim czy standardowym programem statystycznym. @ Ew o lu c ja W z o rcó w E k s p lo r a c j a D a n y c h W s tę pn e prze tw a rz a nie d a n yc h DM B AZ A W IE D Z Y O bs z ar Po śr ed ni E ks tra k cja da n yc h C z ys z c z en ie da n yc h M od e le ED W zb og ac a nie da n yc h B a zy da n yc h H u rt o w n i a d a n y c h Rys. 2. Schemat procesu KDD z użyciem algorytmów DM i hurtowni danych Linia procesu KDD z użyciem algorytmów DM i hurtowni danych (DW) składa się z najpierw z wyboru modelu DM (metod (taksonomia) a następnie z ich użycia w DW (rys.102/9/2). Metody DM mają na celu odkrycie wiedzy w hurtowniach danych, która przybiera formę wzorców, związków i faktów, które wcześniej nie były oczywiste. Wybrana metoda DM jest nierozerwalnie związana z wykrytymi wzorcami. Nie oczekuje się, że wszystkie te metody będą działały równie dobrze na wszystkich zbiorach danych. Wizualizacja zbiorów danych może być połączona z, lub użyta przed Strona 4/12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł IX Data Mining I modelowaniem i może wspomagać wybór metody oraz wskazywać, jakie wzorce mogą być prezentowane Wyróżniamy następujące podejście w metodach DM: • Kierowanie weryfikacją: • Analiza zapytań, • Analiza statystyczna. • Nadzorowane kierowanie odkryciami: • Predykacja, • Klasyfikacja. • Nienadzorowane kierowanie odkryciami: • • • • Sieci neuronowe map samo-organizujących się, Asocjacja, Klasteryzacja, Wykrywanie odchyleń. Metody kierowania weryfikacją wymagają, aby użytkownik postawił pewną hipotezę a odpowiedzi na zapytania i raportowanie lub analiza statystyczna potwierdzają następnie tę hipotezę. Statystyka w DM jest w pewnym stopniu niedoceniana w porównaniu do mniej tradycyjnych technik takich jak: sieci neuronowe, algorytmy genetyczne i klasyfikacja regałowa. Wiele z tych mniej tradycyjnych technik posiada swoją statystyczną interpretację. Metody statystyczne są najbardziej użyteczne dla zagadnień dobrze ustrukturyzowanych. Wiele problemów DM nie zalicza się do tej klasy - techniki statystyczne załamują się lub wymagają zbyt dużych nakładów, żeby być efektywne. Nadzorowane kierowanie odkryciami polega na odkryciu związków między wejściami i wyjściami systemu. Związki te mogą być wykorzystywane do predykcji, estymacji lub klasyfikacji. Do uczenia sieci wykorzystywany jest znany zbiór trenujący par wejść/wyjść z dołączonymi etykietami wskazującymi klasę obserwacji, a nowe dane są klasyfikowane w oparciu o niego. Metody nadzorowanego kierowania odkryciami to predykacja oraz klasyfikacja. Metody predykcyjne budują wzorce przewidując nieznane wartości atrybutów na podstawie znanych wartości innych atrybutów. Główną metodą predykcji jest regresja liniowa i wielokrotna lub nie liniowa (sieci neuronowe z propagacją wsteczną). Klasyfikacja to proces dwuetapowy, który tworzy konstrukcja modelu (opisywanie predefiniowanych klas) oraz użycie modelu do predykcji (klasyfikacja przyszłych lub nieznanych obiektów). Wyróżniamy metody klasyfikacji związane z: • • • • • • • sieciami neuronowymi z propagacją wsteczną, sieciami Bayesowskimi, k-najbliższymi sąsiadami wnioskowaniem opartym o przypadki, algorytmami genetycznymi, zbiorami przybliżonymi, zbiorami rozmytymi. Nienadzorowane kierowanie odkryciami. Często zadaniem DM jest odkrycie struktur w zbiorze danych, bez jakiejkolwiek wiedzy wstępnej o nim. Stąd uczenie nienadzorowane, gdzie występują nieznane etykiety danych w zbiorze trenującym, a celem jest wykrycie istnienia klas lub klasterów Strona 5/12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł IX Data Mining I w danych. Do tego zadania adania można wykorzystać klasę sieci neuronowe zwane mapami samoorganizującymi się. Nienadzorowane kierowanie odkryciami zapewniają: • • • • sieci ieci neuronowe: mapy samo-organizujące samo się, asocjacje, klasteryzacja, ykrywanie odchyleń. odchyleń wykrywanie Laboratorium podstawowe Problem 1 (czas realizacji 25 min) Ćwiczenie prezentuje sposób stworzenia projektu dla Data Miningu. Krok po kroku opisane zostały definiowanie źródła ródła danych, widoku źródła danych i jego modyfikacji. Zadanie Tok postępowania 1. Stworzenie nowego projektu Analysis Services w SS BIDS (SQL Server Business Intelligence Development Studio) • Uruchom Business Intelligence Development Studio (BIDS). • Stwórz nowy projekt Analysis Services File->New >New->Projects-> Analysis Services Project Template. • Wpisz nazwę projektu AdventureWorks. 2. Stworzenie źródła danych (Data Source) • W Solution Explorer kliknij klikn ppm na katalogu DataSource i wybierz opcję New Data Source. Source • Wybierz Wyb New aby dodać nowe połączenie do bazy Adventure Works. • Provider: Native OLE\DB\Microdoft Microdoft OLE DB Provider for SQL Server • Select or enter a database name: AdventureWorksDW • Server Name: localhost. • Jako sposób logowania wybierz Use the service account • Wybierz Finish i zamknij edytor. Nowe źródło danych, baza danych AdventureWorksDW pojawia się w folderze Data Sources. 3. Stworzenie widoku źródła danych (Data Source View) • W Solution Explorer kliknij klik ppm i wybirz opcję New Data Source View • Select a Data Source : AdventureWorksDW • Select or enter a database name: AdventureWorksDW • Na stronie Select Tables and Views wybierz następujące tabele: • dbo.ProspectiveBuyer Strona 6/12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych • • • • Moduł IX Data Mining I dbo.vAssocSeqLineItems dbo.vAssocOrders dbo.vTargetMailing dbo.vTimeSeries • Wybierz Finish i zamknij kreatora Widok źródła danych pozwala modyfikować strukturę danych aby były one bardziej znaczące dla projektu. Używając widoków można: wybrać tabele najistotniejsze dla tworzonego projektu, stworzyć relacje pomiędzy tabelami oraz dodać kolumny obliczeniowe bez potrzeby modyfikowania oryginalnego źródła danych 4. Modyfikacja widoku źródła danych (Data Source View) Aby stworzyć zaplanowane w ćwiczeniu modele market basket i sequence clustering muszisz utworzyć tworzyć związek jeden-do-wielu jeden pomiędzy tabelami vAssocSeqOrders i vAssocSeqLineItems. vAssoc Pozwoli to na uczynienie tabeli vAssocSeqLineItems zagnieżdżoną tabelą vAssocSeqOrders na potrzeby w/w modeli. • Kliknij podwójnie widok źródła danych Adventure Works DW.dsv • W panelu widoku źródła danych wybirz wyb kolumnę OrderNumber z tabeli vAssocSeqLineItems • Przeciągnij kolumnę do tabeli vAssocSeqOrders do kolumny OrderNumber Stworzyłeś nowy związek jeden-do-wielu wielu vAssocSeqOrders i vAssocSeqLineItems pomiędzy tabelami Problem 2 (czas realizacji 15min) Ćwiczenie wiczenie prezentuje sposób użycia u różnych nych modeli danych na przykładzie fikcyjnej firmy Adventure Works.. Firma ma zamiar zwiększyć zwi sprzedaż rowerów kierując ąc ofertę ofert do konkretnych klientów za pomocą kampanii pocztowej. Analizując Analizuj c cechy znanych klientów mo można zauważyć pewne zależności ci wskazujące potencjalnych nowych klientów, oraz określić określić prawdopodobieństwo prawdopodobie zakupienia towarów danej firmy przez potencjalnego klienta. Dodatkowo możliwe mo moż jest logiczne grupowanie istniejących cych klientów, za pomocą pomoc zależności np. demograficznych bądź b nabywczych. Baza danych Adventure Works DW (instalowana wraz z produktem SQL Server 2005 jako przykład) zawiera informacje o istniejących i potencjalnych klientach firmy. Zadanie Tok postępowania 1. Stworzenie Pierwszym krokiem jest stworzenie w BIDS nowej struktury eksploracji struktury danych oraz modelu drzewa decyzyjnego. eksploracji danych • W Solution Explorer kliknij ppm na struktury eksploracji (Mining ( dla modelu Structures) i wybierz New Mining Structures. Structures Targeted Mailing • Jako metodę definicji (Select Select the Definition Method) Method wybierz istniejącą relacyjną bazę lub hurtownię danych (From (From existing relational database or data warehouse) warehouse i wybierz Next. • Jako metodę eksploracji danych (Select (Select a Data Mining Technique) Technique wyb wybierz drzewo decyzyjne (Microsoft Microsoft Decision Trees) Trees i wybierz Next. • Aby określić typy tabel (Specify ( the Table Types)) zaznacz pole Case przy kolumnie vTargetMail i wybierz Next Strona 7/12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł IX Data Mining I • Aby określić dane treningowe (Specify (Specify the Training Data) Data zaznacz pole Key przy kolumnie CustomerKey. • Wybierz pola Input i Predictible przy kolumnie BikeBuyers Po zaznaczeniu, że kolumna jest przewidywana (predictible) uaktywnia się przycisk Suggest.. Wybranie przycisku powoduje uruchomienie okna Suggest Related Columns,, w którym wyświetlone są kolumny o bliskiej relacji z kolumną przewidywaną. • Jako kolumny wejściowe (Input) ( wybierz następujące kolumny i wybierz Next Next: • • • • • • • • • • • • Age CommutateDistance EnglishEducation EnglishOccupation • FirstName • Gender • GeographyKey HouseOwnerFlag LastName MartialStatus NumberCarsOwned NumberChildrenAtHome Region TotalChildren YearlyIncome • Aby wybrać zawartość kolumn i typ danych (Specify Columns’ Content and DataType) wybierz wyb Wykryć (Detect)) a następnie Next. • Na stronie (Split (Split data into training and testing sets),jako sets) Percentage of testing data (procent danych testowych),, zostaw domyślną wartość 30. • Jako Maximum number of cases in testing data set (maksymalna ilość cas’ów w zbiorze danych testowych), testowych) wpisz 1000. • Wybierz Next • • Mining structure name: TargetedMailing • Mining model name : TM_Decision_Tree • Zaznacz Za pole Allow drill through i wybierz Finish 2. Przetwarzanie modelu ekstrakcji danych • W BIDS rozwiń menu Mining Models i wybierz Process • Jeżeli pokaże się okno o potrzebie konwersji projektu kliknij Yes • Kliknij Run i poczekaj na informację o zakończeniu procesu. • Wybierz Close. 3. Analiza modelu opartego o drzewa decyzyjne • Dwukrotnie kliknij na TargetedMailing.dmm • Wybierz zakładkę Mining Models Na tej zakładce możesz sprawdzić jakie kolumny są używane w modelu. Możesz ustawiać kolumny ignorowane, przez co właściwości modelu zmieniają się. • Wybierz zakładkę Mining Model Viewer,, jeżeli pojawi się okienko informujące o konieczności przebudowania projektu należy kliknąć Yes. Strona 8/12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł IX Data Mining I Na tej zakładce możesz zaobserwować w jaki sposób sposó parametry wejściowe wpływają na parametr wyjściowy modelu. Przy drzewie decyzyjnym możesz ocenić które kolumny mają największy wpływ na ostateczną decyzję o kupnie roweru. • Wybierz zakładkę Decision Tree. Drzewo składa się z wielu hierarchicznie połączonych połączon węzłów decyzyjnych. W każdym węźle jest warunek jaki musi być spełniony. Po zatrzymaniu kursora myszki nad węzłem, pokazuje się informacja szczegółowa o danej grupie. Po prawej stronie nad diagramem masz możliwość wybrania z listy rozwijanej liczby poziomów po jakie są wyświetlane. Jeżeli chcesz wyświetlić węzły potomne dla danego węzła, to musisz podwójnie kliknąć w kwadrat po prawej stronie węzła (jeżeli węzeł jest zwinięty, to w środku jest plus, jeżeli węzeł jest rozwinięty to w środku jest minus). 4. Mapowanie kolumn • Wybierz zakładkę Mining Accurancy Chart. • Na zakładce Column Mapping sprawdz kolumny w oknie Mining Structure. • W oknie Select Input Table(s) naciśnij przycisk Select Case Table i wybierztabelę vTargetMail. • Sprawdz jakie kolumny z TargetMailing wiążą się z kolumnami tabeli vTargetMail vTargetMail. 5. Macierz klasyfikacji • Przełączyć na zakładkę Classification Matrix Jak można zinterpretować otrzymaną macierz? W kolumnach są wartości rzeczywiste, natomiast w wierszach wartości wynikające z predykcji. Wartość 7157 w krotce (0,0) oznacza, że w danych testowych tyle przypadków zostało zaklasyfikowanych dobrze do grupy osób nie zainteresowanych kupnem roweru. Wartość 2240 w krotce (1,0) oznacza, że tyle przypadków zostało zaklasyfikowanych do grupy upy osób które nie są zainteresowane, choć w rzeczywistości jest inaczej. Wartość (0,1) to liczba przypadków zaklasyfikowanych jako osoby zainteresowane kupieniem roweru, choć w rzeczywistości tak nie jest. Ostatnią krotką jest (1,1) gdzie mamy przypadek poprawnego oprawnego zaklasyfikowania osób które chcą kupić rower. Całkowity błąd predykcji można wyznaczyć poprzez podzielenie sumy przypadków leżących we wszystkich krotkach poza główną przekątną do sumy liczb we wszystkich krotkach macierzy. Błąd predykcji dla kupna na roweru należy rozumieć jako liczbę osób które nie przyjmą oferty do liczby wszystkich osób do których zostanie wysłana oferta. Ten błąd jest dla nas ważniejszy, ponieważ on decyduje o ostatecznym zysku z kampanii (przykładowo, jeżeli na 100 osób do których ych zostanie wysłana oferta tylko 5 skorzysta z niej, to zysk ze sprzedaży rowerów może być mniejszy od całkowitego kosztu wysyłania ofert). W naszym przypadku błąd dotyczy tylko tych krotek, dla których wartość predykcji wynosiła 1. Strona 9/12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł IX Data Mining I Jaki jest całkowity błąd predykcji drzewa decyzyjnego, a także jaka część osób odrzuci ofertę z kampanii. 6. Wykres przewidywanego zysku • Wybierz zakładkę Lift Chart. • Z rozwijanej listy Chart Type wybierz Profit Chart. Wpisać następujące wartości: • • • • Population: 50000 Fixed Cost: 5000 Individual Cost: 10 Revenue per Individual: 15 Jak można zinterpretować otrzymany wykres? • Zbadaj kształt wykresu dla różnych wartości Individual Cost. Cost (3, 5, 10, 12, 14) – w tym celu naciśnij przycisk Settings i wpisz wpis wybrane wartości. Dlaczego przy ustawieniu Individual Cost powyżej wartości 15 wykres zysku nie posiada wartości dodatnich? 7. Zmiany kolumn w modelu • Wybierz zakładkę Mining Models. • Dla kolumn First Name, Last Name, Region zaznacz w pozycji rozwijanej wartość Ignore zamiast Input. • Przejdź do zakładki Mining Accurancy Chart | Classification Matrix. Matrix Oblicz na nowo całkowity błąd predykcji i błąd dla kupna roweru. Czy otrzymane wyniki są lepsze czy gorsze od poprzednio uzyskanych? Strona 10/12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł IX Data Mining I Laboratorium podstawowe Problem 2 (czas realizacji 25 min) – kontynuacja modułu 1 Ćwiczenie wiczenie prezentuje tworzenie różnych ró modeli dla vTargetMail. Zadanie Tok postępowania 1. Algorytm naiwny Bayesowski • Przejdź na zakładkę Mining Models,, z menu kontekstowego (ppm) wybierz New Mining Model. • Jako Model name wpisz TM_Bayes,, jako Algorithm name wybrać Naive Bayes. Niektóre typy danych nie są wspierane przez różne metody. Dla wyżej wybranego algorytmu kolumny Age, Geography Key i Yerly Income zostaną pominięte, ponieważ nie mają wartości dyskretnych tylko ciągłe. • Przy pojawieniu się okienka ostrzegającego wybierz Yes. • Z menu kontekstowego dla TM_Bayes wybierz opcję Process. Aby wybrać ten model, możesz kliknąć ppm na pierwszym wierszu w nowo utworzonej kolumnie (czyli na Microsoft Neural Network). Network • Przejdź na zakładkę z Mining Model Viewer | Attribute Profiles. Profiles • Sprawdź dla których atrybutów jest największa różnica pomiędzy liczbą osób zainteresowanych kupnem roweru. • Przejź na zakładkę Attribute Characteristics. • Sprawdź jakie wartości dla określonych atrybutów wpływają wpły na wynik predykcji. • Przejź na zakładkę Mining Accurancy Chart | Classification Matrix. Matrix Czy aktualnie stworzony model jest lepszy czy gorszy od drzew decyzyjnych? Zmienić kolumny wejściowe dla tego modelu, czy można w ten sposób poprawić wyniki dla tego algorytmu? 2. Algorytm oparty o Sztuczne Sieci Neuronowe • Przejdź na zakładkę Mining Models,, z menu kontekstowego (ppm) wybierz New Mining Model. • Jako Model name wpisz Neural_Network, Neural_Network jako Algorithm name wybierz Neural Network. Podobnie jak w poprzednim przypadku, niektóre kolumny zostaną automatycznie wyłączone. Jakie kolumny nie mogą być użyte przez sieć neuronową? • Przet Przetwórz model – z menu kontekstowego dla tego modelu wybierz wyb Process Process. Zmień kolumny wejściowe dla tego modelu, czy można w ten sposób poprawić wyniki dla tego algorytmu? Strona 11/12 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł IX Data Mining I Porównaj opracowane modele. Które kolumny można zignorować? Laboratorium rozszerzone Zadanie 1 (czas realizacji 30 min) Otrzymałeś zadanie dokładnej analizy modelu Target Mail dataminingowego opartego o drzewa decyzyjne który jest prezentowany w laboratorium podstawowym. W tym celu musisz najpierw zbudować ten model zgodnie z wskazówkami z laboratorium podstawowego a następnie Wykonać następujące zadania: Na zakładce Mining Model Viewer znaleźć naleźć po trzy takie ścieżki w drzewie decyzyjnym, które jednoznacznie wskazują (albo prawie jednoznacznie, np. 90%), że osoba z tej grupy kupi lub nie kupi roweru, następnie przejdź zakładę Dependency Network i zinterpretuj jej zawartość. Kolejnym twoim zadaniem jest przejść pr na zakładkę Mining Accuracy Chart/Lift Chart i sprawdź jaki wpływ mają wartości Population i Fixed Cost na końcowy kształt wykresu. Ostatnim twoim zadaniem jest naa zakładce Mining Models tak dobrać kolumny wejściowe, aby zminimalizować błąd predykcjii dla kupna roweru. Czy zmiana kolumn wejściowych znacząco wpływa na błąd predykcji? Zadanie 1 (czas realizacji 60 min) Firma Adventure Works w której pracujesz prowadzi szeroko zakrojoną akcję reklamową. Twoi przełożeni są bardzo zainteresowanie wykorzystaniem wykorzystaniem modeli dataminingowych aby określić grupę docelową do której należy skierować kampanie ulotkową. Twoim zadaniem jest porównanie wszystkich dostępnych struktur dataminingowych dostępnych dla modelu Target Mail. Określ grupę docelową, oraz przeanalizuj, przeanaliz porównaj i skrytykuj struktury dostępne dla modelu TM. Które z testowanych struktur są najbardziej odpowiednie dla testowanych danych? W ćwiczeniu skorzystaj z tworzonego na laboratorim podstawowym projektu. Strona 12/12 ITA-102 Hurtownie Danych Marcin Gorawski, Michał Jan Gorawski Moduł 10 Wersja 1.0 Data Mining II Spis treści Data Mining II ....................................................................................................................................... 1 Informacje o module ............................................................................................................................ 2 Przygotowanie teoretyczne ................................................................................................................. 3 Podstawy teoretyczne zawiera moduł IX pt.: Data Mining I. ............................................................... 3 Laboratorium podstawowe .................................................................................................................. 3 Problem 1 (czas realizacji 25 min)................................................................................................ 3 Problem 2 (czas realizacji 15min) ................................................................................................ 4 Laboratorium podstawowe .................................................................................................................. 6 Problem 3 (czas realizacji 25 min)................................................................................................ 6 Laboratorium rozszerzone ................................................................................................................... 8 Zadanie 1 (czas realizacji 90 min)................................................................................................. 8 Marcin Gorawski, Michał Gorawski ITA-102 Hurtownie Danych Moduł X Data Mining II Informacje o module Opis modułu W module poznasz zaawansowane zastosowania modeli eksploracji danych. Dowiesz się czym jest Data Mining (Eksploracja Danych), w jakich przypadkach można ją wykorzystać, jakie są korzyści wykorzystania tych struktur oraz jak korzystać z Data Miningu w SQL Server 2008. Cel modułu Przekazanie informacji na temat modeli Market Basket, Forecasting i Sequence Clustering oraz metody porównań różnych algorytmów. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • wiedział, czym jest Data Mining i do czego jest wykorzystywany, • potrafił stworzyć modele dataminingowe w SQL Server 2008. Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • znać podstawą wiedzę z zakresu ekstrakcji danych, • potrafić utworzyć modele i przeanalizować modele ekstrakcji danych, • rozumiał zasady tworzenia i analizy modeli ekstrakcji danych. Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w modułach 3, 4, 5, 9. Rys. 1 Mapa zależności modułu Strona 2/8 Marcin Gorawski, ski, Michał Gorawski ITA-102 Hurtownie Danych Moduł X Data Mining II Przygotowanie teoretyczne Podstawy teoretyczne zawiera moduł IX pt.: Data Mining I. Laboratorium podstawowe Problem 1 (czas realizacji 25 min) Ćwiczenie wiczenie pokazuje metody tworzenia modeli służących słu do prognozowania sprzedaży. sprzeda W ćwiczeniu prezentowana jest prognoza sprzedaży sprzeda y indywidualnych modeli rowerów w przyszłym roku. Pokazano również jak otrzymać otrzyma dane o najlepszym czasie sprzedażyy oraz o wpływie regionu na sprzedaż.. Dodatkowo analizowane b będzie również czy sprzedaż różnych nych modeli jest inna w różnych ró porach roku. Zadanie 1. Stworzenie nowego projektu Analysis Services w SS BIDS (SQL Server Business Intelligence Development Studio) Tok postępowania Pierwszym krokiem jest stworzenie w SSBDIS nowej struktury eksploracji danych. • W Solution Explorer kliknij ppm na struktury eksploracji eksplor (Mining Structures i wybierz New Mining Structures. Structures) • Jako metodę definicji (Select ( the Definition Method) Method wybierz istniejącą relacyjną bazę lub hurtownię danych (From ( existing isting relational database or data warehouse) warehouse i wybierz Next. • Jako metodę eksploracji eksplor danych (Select Select a Data Mining Technique) Technique wybierz szereg czasowy (Microsoft ( Time Series)) i wybierz Next. • Aby określić typy tabel (Specify ( the Table Types)) zaznacz pole Case przy kolumnie vTimeSeries i wybierz Next. • Aby określić dane treningowe (Specify ( the Training Data) Data zaznacz pole Key przy kolumnach TimeIndex i ModelRegion. • Wybierz Wyb pola Input i Predictible przy kolumnie Quantity. Quantity Sprawdz czy kolumny Model Region i Time Index są oznaczone jako klucze. • Aby wybrać zawartość kolumn i typ danych (Specify (Specify Columns’ Content and DataType) DataType wybierz Wykryć (Detect)) a następnie Next. • Jako nazwy wpis: • Mining structure name: Forecasting • Mining model name : Forecasting • Kliknij Klikn Finish aby zakończ tworzenie modelu 2. Modyfikacja Struktura eksploracji danych stworzona w poprzednim zawiera teraz struktury model prognozowania. Przed jego przetworzeniem i analizą należy go eksploracji danych zmodyfikować. dla modelu • Kliknij podwójnie na model Forecasting aby otworzył się on w głównym Forecasting oknie BIDS, wybierz kolumnę Amount z tabeli vTimeSeries. vTimeSeries • Przeciągnij kolumnę Amount do listy kolumn struktury Forecasting. • Ponieważ do struktury dodałeś doda nową kolumnę musisz zdefiniować sposób wykorzystania kolumny w modelu. Możesz zrobić to w zakładce Mining Models. Models Strona 3/8 Marcin Gorawski, ski, Michał Gorawski ITA-102 Hurtownie Danych Moduł X Data Mining II • Wyb Wybierz zakładkę Mining Models i w kolumnie Forecasting wybierz komórkę odpowiadającą wierszowi Mount. Pojawi się lista zawierająca opcje Ignore, Input,, Predict i PredictOnly. • Wyb Wybierz Predict. • Kliknij Klikn ppm na kolumnie Forecasting i wybrać Set Algorithm Parameters Parameters. • Ustaw wartość (value) ( ) parametru PERIODICITY_HINT na {12}. Parametr PERIODICITY_HINT określa częstotliwość powtarzania się danych. Dane w bazie Adventure Works DW przechowywane są na zasadzie miesięcznej a zadana częstotliwość jest roczna. Aby otrzymać potrzebne analizy ustawiamy częstotliwość na 12 miesięcy, czyli rok. 3. Przetwarzanie modelu ekstrakcji danych • • • • 4. Analiza modelu Forecasting • Na zakładce Mining Model Viewer wybierz zakładkę Charts. 5. Przeglądanie modelu w SQL Server Management Studio • Uruchom Microsoft SQL Server Management Studio. Studio • Połącz się do bazy Adventure Works.. Jeżeli nie ma połączenia, to musisz nac nacisnąć F8 aby uruchomić Object Explorer,, następnie kliknij klik na przycisk Connect wybierz Analysis Services i wpisz nazwę serwera (np.: Connect, localhost lub IP\NAZWA_SERWERA). IP • Dla bazy Adventure Works rozwiń gałąź Mining Structures, Structures a następnie Forecasting i Mining Models. Na modelu Forecasting kliknij ppm i wyb wybierz opcję Browse. Teraz możesz już przeglądać wyniki stworzonego modelu. W BIDS rozwiń roz menu Mining Models i wybrać Process. Process Jeżeli pokaże się okno o potrzebie przetworzenia projektu kliknij klikn Yes. Klikn Run i poczekaj na informację o zakończeniu procesu. Kliknij Wyb Wybierz Close. Jakie są przewidywane wartości sprzedaży dla określonych regionów? Problem 2 (czas realizacji 15min) Ćwiczenie wiczenie prezentuje model Market Basket oparty o problem zakupów przez Internet, w którym pokazany jest sposób predykcji jakie towary mogą mog być nabyte przez klientów na podstawie analizy towarów jakie znajdują się ę już w ich koszyku. Przy użyciu yciu modelu, strona internetowa będzie b mogła proponować klientowi dodatkowe zakupy związane zwi z tymi które już poczynił. Zadanie Tok postępowania 1. Stworzenie Pierwszym krokiem jest stworzenie w BIDS nowej struktury eksploracji struktury danych. eksploracji danych Sol Explorer kliknij ppm na struktury eksploracji (Mining ( • W Solution dla modelu Structures) i wybierz New Mining Structures. Structures Market Basket Strona 4/8 Marcin Gorawski, ski, Michał Gorawski ITA-102 Hurtownie Danych Moduł X Data Mining II • Jako metodę definicji (Select ( the Definition Method) Method wybierz istniejącą relacyjną bazę lub hurtownię danych (From ( existing relational database or data warehouse) i wybierz Next. • Jako metodę eksploracji danych (Select (Select a Data Mining Technique) wyb wybierz Reguły Asocjacji (Microsoft Association Rules) Rules i wybrać Next. • Aby określić typy tabel (Specify ( the Table Types)) zaznacz pole Case przy kolumnie vAssocSeqOrders oraz pole Nested przy kolumnie vAssocSeqLineItems i wybierz Next. • Aby określić określi dane treningowe (Specify Specify the Training Data) Data wyczyść wszystkie pola i zaznacz pole Key przy kolumnach OrderNumber oraz Model i wybierz Next. • Wybrać pola Input i Predictible przy kolumnie Model i wybrać Next. • Ustaw Percentage for data testing na 30 a Maximum number of cases in testing data set na 1000 • Jako nazwy wpisz: • Mining structure name: Association • Mining model name : Association • Zaznacz Allow drill through 2. Zaznacz Allow drill through Przed przetworzeniem modelu konieczna jest modyfikacja dwóch parametrów: Wsparcie (Support) i Prawdopodobieństwo (Probability). Support definiuje procentowość warunku w jakim reguła musi istnieć zanim uznawana jest za regułę prawidłową. Probability definiuje jak bardzo prawdopodobna musi być asocjacja zanim uznana jest za prawidłową. • Kliknąć podwójnie na model Market Basket aby otworzył się on w głównym oknie BIDS, wybrać zakładkę Mining Models. Models • Kliknąć ppm na kolumnę Association i wybrać Set Algorithm Parameters Parameters. • MINIMUM-PROBABILITY = 0.1 • MINIMUM-SUPPORT = 0.01 • Wybrać Wy OK. 3. Przetwarzanie modelu ekstrakcji danych • W BIDS rozwiń menu Mining Models i wybierz Process. Process • Jeżeli pokaże się okno o potrzebie przetworzenia projektu kliknij klikn Yes. • Kliknij Klikn Run i poczekaj na informację o zakończeniu procesu. • Wybierz Close. 4. Analiza modelu Market Basket • Wybierz Wyb zakładkę Mining Model Viewer. Sprawdź dla jakich produktów algorytm będzie wyznaczał reguły decyzyjne, jakie jest wsparcie dla kilku przykładowych reguł? Czy największe wsparcie mają reguły złożone z jednego czy z wielu warunków? Support oznacza ile elementów wspiera regułę, czyli ile elementów zostało kupionych przy określonych warunkach. • Wybierz zakładkę Rules. • Sprawdź Sprawd jakie utworzyły się reguły. Strona 5/8 Marcin Gorawski, ski, Michał Gorawski ITA-102 Hurtownie Danych Moduł X Data Mining II Probability (prawdopodobieństwo) określa jaka część osób kupując określony przedmiot kupiła także inny związany z nim. Ważność reguły to połączenie prawdopodobieństwa takiego zakupu z liczbą osób które taki zestaw wybrały. • Kliknij na nazwę kolumny Importance i posortować ować reguły malejąco, na samej górze znajdą się wtedy reguły najważniejsze. Oceń,, dlaczego najważniejsze reguły nie mają największego prawdopodobieństwa. • Zmień parametry Minimum Support na 500, na zakładce Itemsets i Minimum Probability na 0,30 na zakładce Rules, Rules następnie nacisnąć Enter,, zapytanie powinno się wykonać jeszcze raz, jaki teraz będzie wyświetlony wynik? • Wybierz zakładkę Dependency Network. • Z diagramu kliknij klikn na Sport-100 = Existing. Jakie elementy diagramu są powiązane z zaznaczonym elementem? Co oznaczają zają poszczególne kolory? Wymień wszystkie elementy związane z zaznaczonym elementem. Laboratorium podstawowe Problem 3 (czas realizacji 25 min) Ćwiczenie wiczenie przedstawia metodę metod klastreryzacji danych na przykładzie firmy Adventure Works. Pokazane zostanie użycie ycie algorytmów klasteryzacji w celu pokazania zale zależno żności pod względem kolejności ci wkładania artykułów do wirtualnego koszyka. Użycie U ycie w/w algorytmu pozwoli przewidywać przewidywa jaki artykuł może zostać włożony włoż do koszyka jako następny. Zadanie Tok postępowania 1. Stworzenie • W Solution Explorer kliknij ppm na struktury eksploracji (Mining ( struktury Structures) i wybierz New Mining Structures. Structures eksploracji danych • Jako metodę definicji (Select (Select the Definition Method) Method wybierz istniejącą dla modelu relacyjną bazę lub hurtownię danych (From (From existing relational database Sequence or data warehouse) warehouse i wybierz Next. Clustering • Jako metodę eksploracji danych (Select (Select a Data Mining Technique) Technique wybierz Klasteryzacja Sekwencyjna (Microsoft (Microsoft Sequence Clustering) Clustering i wybie Next. wybierz • Aby określić typy tabel (Specify ( the Table Types)) zaznacz pole Case przy kolumnie vAssocSeqOrders oraz pole Nested przy kolumnie vAssocSeqLineItems i wybierz Next. • Aby określić dane treningowe (Specify (Specify the Training Data) Data wyczyść wszystkie pola i zaznacz z pole Key przy kolumnach OrderNumber oraz LineNumber i wybierz Next. • Wybierz Wyb pola Input przy kolumnie LineNumber oraz Model a następnie Predictible przy kolumnie Model i wybierz Next. • Ustaw Percentage for data testing na 20 • Zaznacz Allow Drill Through, i przy nazwach wpiszz: • Mining structure name: Clustering. • Mining model name : Clustering. • Kliknij Finish. Strona 6/8 Marcin Gorawski, ski, Michał Gorawski ITA-102 Hurtownie Danych Moduł X Data Mining II 2. Przetwarzanie modelu Sequence Clustering • • • • 3. Analiza modelu Sequence Clustering • Wyb Wybierz zakładkę Mining Model Viewer. Suwak po lewej stronie przeciągnąć z pozycji środkowej do pozycji na samym dole (Strongest ( Links). W BIDS rozwiń menu Mining Models i wybierz Process. Process Jeżeli pokaże się okno o potrzebie potrzebie przetworzenia projektu kliknij Yes. Klikn Run i poczekać na informację o zakończeniu procesu. Kliknij Wyb Wybierz Close. Które dwa klastry są najbardziej związane ze sobą? • Przeciągnij Przeciągn suwak o jedną pozycję do góry. sobą Wyznacz kolejne klastry, które są związane ze sobą. • Wyb Wybierz zakładkę Cluster Profiles. • Zmień Histogram Bars na 15. Korzystającc z legendy dla każdego klastra odczytać jakie produkty są najczęściej kupowane przez klientów w tym klastrze. • Wybierz zakładkę Cluster Characteristics. Porównać odczytane w poprzednich z charakterystyką kilku wybranych klastrów. punktach wartości • Wybierz zakładkę Cluster Discrimination. Porównaj wybrane przez siebie klastry. Co można powiedzieć o określonych produktach? Jak na podstawie klastrów można przewidzieć jakie produkty są najczęściej razem kupowane? • Wybierz Wyb zakładkę State Transitions. Przeciągnij suwak z lewej strony do pozycji najwyższej. Zaznacz poszczególne elementy dla kilku wybranych klastrów, klastr sprawdzić jakie jest prawdopodobieństwo, że osoba kupująca wybrany produkt kupi także inny? 4. Zmiana parametrów modelu • Wyb Wybierz zakładkę Mining Models. • Kliknij Klikn ppm na kolumnie Clustering, wybierz opcję Set Algorithm Parameters Parameters. Zmień wartości CLUSTER_COUNT i MINIMUM_SUPPORT na inne (wybrane przez siebie). Przebuduj uj model i sprawdź jakie zostały utworzone klastry, cechy takiego modelu i najważniejsze najważniej zależności pomiędzy elementami. 5. Przeglądanie modelu w SQL Server Management Studio • Uruchom Microsoft SQL Server Management Studio. Studio • Połącz się do bazy Adventure Works2008.. Jeżeli nie ma połączenia, naci naciśnij F8 aby uruchomić Object Explorer,, następnie kliknij na przycisk Connect wybierz Analysis Services i wpisz nazwę serwera (np.: Connect, localhost lub IP\NAZWA_SERWERA). • Dla bazy Adventure Works2008 rozwiń gałąź Mining Structures, a następnie Clustering i Mining Models. Na modelu Clustering kliknij ppm i wybierz wyb opcję Browse. Teraz możesz już przeglądać wyniki dla stworzonego modelu. Strona 7/8 Marcin Gorawski, Michał Gorawski ITA-102 Hurtownie Danych Moduł X Data Mining II Laboratorium rozszerzone Zadanie 1 (czas realizacji 90 min) Znając już zasady tworzenia modeli dataminingowych zlecono ci przeanalizować i ocenić przydatność modeli Linear Regression i Logistic Regression. Twoim zadaniem jest zaczerpnąć informacji, na temat wykorzystania tych modeli, ich własności oraz możliwości. Zadanie wymaga drobiazgowego przeanalizowania modeli i skrytykowania rozwiązań w sprawozdaniu Strona 8/8 ITA-102 Hurtownie Danych Marcin Gorawski, Sławomir Bańkowski Moduł 11 Wersja 1.0 Data Mining III: język DMX Spis treści Data Mining III: język DMX ................................................................................................................... 1 Informacje o module ............................................................................................................................ 2 Przygotowanie teoretyczne ................................................................................................................. 3 Podstawy teoretyczne.................................................................................................................. 3 Porady praktyczne ....................................................................................................................... 6 Uwagi dla studenta ...................................................................................................................... 6 Dodatkowe źródła informacji....................................................................................................... 7 Laboratorium podstawowe .................................................................................................................. 8 Przygotowanie (czas realizacji 15min) ......................................................................................... 8 Aspekty w modelach eksploracji danych (czas realizacji 15min) ................................................. 9 Złączenie wyników z danymi zewnętrznymi – PREDICTION JOIN (czas realizacji 10min) .......... 11 Funkcje DMX (czas realizacji 30min) .......................................................................................... 13 Laboratorium rozszerzone ................................................................................................................. 17 Zadanie 1 (czas wykonania: 7min) ............................................................................................. 17 Zadanie 2 (czas wykonania: 10min) ........................................................................................... 17 Zadanie 3 (czas wykonania: 10min) ........................................................................................... 17 Zadanie 4 (czas wykonania: 13min) ........................................................................................... 17 Zadanie 5 (czas wykonania: 15min) ........................................................................................... 17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX Informacje o module Opis modułu Moduł wprowadza do języka DMX operującego na modelach eksploracji danych. Za pomocą zapytań możemy wyciągnąć wyniki tych modeli, przez co poznajemy dokładne liczby na których podstawie jesteśmy w stanie podejmować decyzje. Język DMX uniezależnia nas także od aplikacji wizualizacyjnych Analysis Services. Cel modułu Celem modułu jest poznanie podstawowej składni języka DMX, a także użycie języka DMX w celu eksploracji danych. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • wiedział jak zbudowany jest język DMX • potrafił użyć zapytania DMX do wydobycia danych z modeli eksploracji danych Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • znać podstawowe modele eksploracji danych • potrafić określić podstawowe cele eksploracji danych • rozumieć jak tworzy się modele eksploracji danych Mapa zależności modułu Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w modułach 3, 4, 5, 9, 10. Rys. 1 Mapa zależności modułu Strona 2/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX Przygotowanie teoretyczne Podstawy teoretyczne Język DMX (Data Mining eXpressions) jest to analityczny język służący do operacji na modelach eksploracji danych. Za pomocą zapytań możemy przeglądać dane utworzone przez modele eksploracji danych, co umożliwia nam użycie tych wyników w rozmaitych celach, nie tylko do przeglądania danych za pomocą SQL Server Management Studio. DMX umożliwia tworzenie i modyfikację modeli eksploracji danych, jednak w tym ćwiczeniu będziemy zajmować się tylko częścią dotyczącą manipulacji danych. DMX podobnie jak MDX jest to język operujący na danych wielowymiarowych, jednak z uwagi na łatwość użycia w tym ćwiczeniu wszystko jest wyświetlane w postaci tabel dwuwymiarowych. Składnia zapytania Podstawowa składnia zapytania operująca na modelu w języku DMX wygląda tak: SELECT [FLATTENED] [TOP <n>] <select list> FROM <model/structure>[.aspect] [WHERE <condition expression>] [ORDER BY <expression>[DESC|ASC]] Zapytanie jest bardzo podobne do zapytań SQL, jednak w bardzo ograniczonym wydaniu. Nie są jednak potrzebne zaawansowane funkcje tak jak w SQL, ponieważ większość operacji ogranicza się do wybrania odpowiednich kolumn i wierszy. We frazie SELECT nowością jest słowo kluczowe FLATTENED które powoduje, że uzyskany wynik jest przekształcany z postaci hierarchicznej (wielowymiarowej) do postaci dwuwymiarowej z hierarchią zapisaną w postaci powiązań pomiędzy wierszami. Za pomocą TOP N wybieramy N pierwszych wierszy z wyniku, należy pamiętać, aby TOP używać wraz z frazą ORDER BY. Ostatnim parametrem we frazie SELECT jest lista kolumn które wybieramy. Podobnie jak w SQL, gwiazdka (*) oznacza wszystkie dostępne kolumny. We frazie FROM nowością jest definiowanie aspektu dla konkretnego modelu. Każdy model posiada kilka aspektów: CONTENT, CASES, SAMPLE_CASES, DIMENSION_CONTENT. Fraza WHERE posiada bardzo podobną składnie jak w SQL. Wyrażenie możemy budować za pomocą dostępnych kolumn, funkcji i operatorów. Fraza ORDER BY pozwala nam uporządkować kolekcję wierszy względem pewnych kolumn. Kolumny należy oddzielić przecinkami. Pierwsza kolumna to ta, po której następuje sortowanie w pierwszej kolejności. Dla niektórych modeli nie jest dozwolone sortowanie po więcej niż jednej kolumnie, jeżeli nie są spełnione pewne warunki. Aspekty dla modeli Dostępne są następujące aspekty dla modeli i struktur: • CONTENT – wiersze zawierające schemat i dane dla określonego modelu eksploracji danych. W ramach wyniku dostępne są następujące kolumny: o MODEL_CATALOG – nazwa katalogu w którym znajduje się model. o MODEL_SCHEMA – nazwa schematu. o MODEL_NAME – nazwa modelu lub struktury. o ATTRIBUTE_NAME – nazwa atrybutu dla odpowiadającego węzła. o NODE_NAME – nazwa węzła. o NODE_UNIQUE_NAME – unikatowa nazwa węzła w ramach modelu. o NODE_TYPE – liczba całkowita odpowiadająca typowi węzła. Strona 3/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX NODE_GUID – unikatowy ciąg znaków dla węzła, może być NULL. NODE_CAPTION – nagłówek węzła do celów wyświetlenia danych, jeżeli nie ma nagłówka, zwracana jest nazwa węzła. o CHILDREN_CARDINALITY – liczba podwęzłów, jakie posiada ten węzeł. o PARENT_UNIQUE_NAME – unikatowa nazwa rodzica dla węzła. o NODE_DESCRIPTION – opis węzła. o NODE_RULE – reguła określająca powstanie węzła. o MARGINAL_RULE – fragment XML-a określającego ścieżkę z rodzica do aktualnego węzła. o NODE_PROBABILITY – prawdopodobieństwo, że ścieżka zakończy się w aktualnym węźle. o MARGINAL_PROBABILITY – prawdopodobieństwo dotarcia z aktualnego węzła do rodzica. o NODE_DISTRIBUTION – tabela zawierająca rozkład prawdopodobieństwa dla węzła. o NODE_SUPPORT – liczba elementów wspierająca ten węzeł. Przykład zastosowania aspektu CONTENT w zapytaniu: o o SELECT [MODEL_NAME], [NODE_NAME] FROM [TM Decision Tree].CONTENT WHERE [NODE_TYPE] = 1 • CASES – wiersze wejściowe dla modelu eksploracji danych. Za pomocą tego aspektu możemy przejrzeć pojedyncze rekordy wchodzące w skład danych z których został zbudowany model eksploracji danych. Przykład zastosowania aspektu CASES w zapytaniu: SELECT * FROM [TM Clustering].CASES WHERE IsInNode('0002') • SAMPLE_CASES – wiersze testowe dla modelu eksploracji danych, wiersze te są użyte do trenowania modelu eksploracji danych. Przykład zastosowania aspektu SAMPLE_CASES w zapytaniu: SELECT FLATTENED * FROM [Sequence Clustering].SAMPLE_CASES WHERE IsInNode('000000003') • DIMENSION_CONTENT – zawiera wiersze które są związane z modelem eksploracji używanym jako wymiar. Model eksploracji danych może być użyty w kostce danych jako kolejny wymiar. Za pomocą tego aspektu możemy przeglądać, jaką strukturę ma utworzony wymiar. Przykład zastosowania aspektu DIMENSION_CONTENT w zapytaniu: SELECT * FROM [TM Clustering].DIMENSION_CONTENT PREDICTION JOIN Za pomocą PREDICTION JOIN możemy analizować nowe elementy używając aktualnych modeli predykcyjnych. Źródłem danych może być zewnętrzna tabela. Składnia PREDICTION JOIN jest następująca: SELECT [FLATTENED] [TOP <n>] <select expression list> Strona 4/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX FROM <model> | <sub select> [NATURAL] PREDICTION JOIN <source data query> [ON <join mapping list>] [WHERE <condition expression>] [ORDER BY <expression> [DESC|ASC]] Przykład zastosowania PREDICTION JOIN w zapytaniu: SELECT FROM [TM Decision Tree].[Bike Buyer], PredictHistogram([Bike Buyer]) [TM Decision Tree] NATURAL PREDICTION JOIN (SELECT 35 AS [Age], '5-10 Miles' AS [Commute Distance], '1' AS [House Owner Flag], 2 AS [Number Cars Owned], 2 AS [Total Children]) AS t Powyższy przykład pokazuje predykcję dla nowego elementu obliczoną na podstawie aktualnego modelu predykcyjnego. Funkcje DMX • Predict – pozwala wykonać predykcję dla określonej wartości, zbioru wartości lub określonej kolumny. Składnia funkcji jest następująca: Predict(<scalar column reference>, [option1], [option2], Predict(<table column reference>, [option1], [option2], , [INCLUDE_NODE_ID], n) , [INCLUDE_NODE_ID], n) Możliwe opcje to: EXCLUDE_NULL (domyślnie), INCLUDE_NULL, INCLUSIVE, EXCLUSIVE (domyślnie), INPUT_ONLY, INCLUDE_STATISTICS. • PredictTimeSeries – zwraca tablicę wartości przyszłych dla określonych danych. Składnia funkcji jest następująca: PredictTimeSeries(<table column reference>) PredictTimeSeries(<table column reference>, n) PredictTimeSeries(<table column reference>, n-start, n-end) PredictTimeSeries(<scalar column reference>) PredictTimeSeries(<scalar column reference>, n) PredictTimeSeries(<table column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query> PredictTimeSeries(<table column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query> PredictTimeSeries(<scalar column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query> PredictTimeSeries(<scalar column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query> • PredictHistogram – zwraca tabelę reprezentującą histogram dla predykcji określonej kolumny. Składnia funkcji jest następująca: Predict(<scalar column reference>, [option1], [option2], Predict(<table column reference>, [option1], [option2], , [INCLUDE_NODE_ID], n) , [INCLUDE_NODE_ID], n) • PredictProbability – zwraca prawdopodobieństwo dla określonego stanu. Składnia funkcji jest następująca: PredictProbability(<scalar column reference>, [<predicted state>]) Strona 5/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX • PredictAssociation – zwraca prawdopodobieństwo dla określonego stanu. Składnia funkcji jest następująca: PredictAssociation(<table column reference>, option1, option2, n ...) • PredictSupport – zwraca wsparcie dla określonej reguły. Składnia funkcji jest następująca: PredictSupport(<scalar column reference>, [<predicted state>]) • PredictVariance – zwraca wariancję dla określonej kolumny. Składnia funkcji jest następująca: PredictVariance(<scalar column reference>) • PredictSequence – zwraca N przyszłą sekwencję na podstawie aktualnej sekwencji danych znajdującej się w określonej kolumnie. Składnia funkcji jest następująca: PredictSequence(<table column reference>) PredictSequence(<table column reference, n>) PredictSequence(<table column reference, n-start, n-end>) • PredictNodeId – zwraca węzeł do którego z największym prawdopodobieństwem należy określony element. Składnia funkcji jest następująca: PredictNodeId(<scalar column reference>) • Cluster – zwraca klaster do którego z największym prawdopodobieństwem należy analizowany element. Składnia funkcji jest następująca: Cluster() • ClusterDistance – zwraca odległość do określonego klastra dla analizowanego elementu. Składnia funkcji jest następująca: ClusterDistance([<ClusterID expression>]) • ClusterProbability – zwraca prawdopodobieństwo z jakim analizowany element należy do okreslonego węzła. Składnia funkcji jest następująca: ClusterProbability([<Node_Caption>]) Porady praktyczne Uwagi ogólne • Dla zrozumienia wykonywanych zapytań przypomnij sobie terminologię związaną z modelami eksploracji danych: prawdopodobieństwo, reguła, wsparcie reguły, klaster. • Aby dobrze używać języka DMX na dostępnych modelach eksploracji danych należy przypomnieć sobie, jakie cechy mają poszczególne modele: sztuczna sieć neuronowa, drzewo decyzyjne, sekwencyjne klastrowanie, szeregi czasowe, • Każde zapytanie DMX używa określonego modelu eksploracji danych. Jeżeli nie wiesz co dokładnie jest przedstawiane, otwórz model ED i obejrzyj dokładnie wizualizację dostępną pod Visual Studio. Uwagi dla studenta Jesteś przygotowany do realizacji laboratorium jeśli: • • • • umiesz utworzyć podstawowe modele eksploracji danych znasz podstawową składnię języka DMX potrafisz napisać podstawowe zapytanie w języku DMX dla modelów CASE i CONTENT wiesz czym różni się aspekt CASES od CONTENT Strona 6/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX • znasz podstawowe funkcje DMX takie jak: Predict, PredictHistogram, PredictNodeId, PredictSequence, PredictProbability Przed wykonywaniem każdego punktu należy najpierw przeczytać treść i wskazówki, pozwoli to na lepsze zrozumienie wykonywanych zapytań. Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. Dodatkowe źródła informacji 1. ZhaoHui Tang, Jamie MacLennan: "Data Mining with SQL Server 2005" 2. Strona internetowa: http://msdn.microsoft.com/en-us/library/bb522459.aspx Strona 7/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX Laboratorium podstawowe W laboratorium podstawowym skupimy się na podstawach języka DMX służącego do wykonywania zapytań na modelach eksploracji danych. danych Pierwszym krokiem jest przygotowanie modeli do wykonywania zapytań, następnie zaprezentujemy podstawowe zapytanie DMX i dostępne aspekty dla modeli. Kolejno pokażemy jak użyć zbudowanego modelu dla nowych danych za pomocą PREDICTION JOIN,, pokażemy jak eksplorować modele. Na końcu zaprezentujemy podstawowe funkcje DMX wraz z przykładami. Przygotowanie (czas realizacji 15min) W tej części przeprowadzimy proces przygotowania modeli eksploracji danych na których będziemy ćwiczyć podstawy języka DMX. Po tym ćwiczeniu modele będą gotowe w bazie AdventureWorksDW (Analysis Analysis Services) Services i można je będzie oglądać za pomocą SQL Server Management Studio. Zadanie Tok postępowania 1. Konfigurowani e i przenoszenie bazy • Uruchom SQL Server Business Intelligence Development Studio. Studio • Otwórz projekt AdventureWorksDW. W projekcie jest gotowy przykład hurtowni danych opartej na bazie relacyjnej. Należy zmienić tylko źródło danych, którym będzie baza AdventureWorksDW.. Może to być lokalna baza podawana jako (local), lub baza zdalna na serwerze jako IP\nazwa_bazy nazwa_bazy. • W oknie Solution Explorer rozwiń Data Sources. • Kliknij dwukrotnie na Adventure Works DW.ds. • Wybierz przycisk Edit – otworzy się okienko do ustawienia danych źródłowych dla tego projektu hurtowni. • Ustaw nazwę serwera (podaną przez prowadzącego) i nazwę bazy danych na n AdventureWorksDW. • Przetestuj połączenie z bazą za pomocą przycisku Test Connection (znajduje się w lewym dolnym roku okienka). • Naciśnij OK potwierdzając wybór pliku bazy, kolejny raz OK potwierdzając wybór połączenia. • Wybierz menu kontekstowe dla projektu projektu (prawy przycisk myszy) i następnie wybierz opcję Properties, w Configuration Properties wybierz Deployment, w polu Server wpisz ścieżkę do serwera (np.: localhost lub ADRES\NAZWA_SERWERA,, w szczególności będzie to localhost jeżeli baza działa na lokalnym localhost, m komputerze), jako bazę danych wpisz AdventureWorksDW. • Wybierz menu kontekstowe dla projektu (prawy przycisk myszy) i następnie wybierz opcję Rebuild. Wyniki budowania pokażą się w oknie Output, Output jeżeli okno nie jest widoczne, to można go pokazać za pomocąą wybrania View | Output w menu głównym, lub przyciśnięcia skrótu klawiszowego Ctr-Atl-O. • Wybierz menu kontekstowe dla projektu (prawy przycisk myszy) i następnie wybierz opcję Process – po tej operacji baza danych będzie już na serwerze MS SQL Server 2008 razem z informacjami o kostkach i wymiarach. W pojawiającym się okienku naciśnij Run i czekaj chwilę do zakończenia procesu. Po naciśnięciu Process może pokazać się komunikat, że najpierw Strona 8/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX trzeba przeprowadzić akcję Rebuild i Deploy.. Należy kliknąć Tak aby przebudować projekt. 2. Zapytanie DMX • • • • Otwórz Microsoft SQL Server Management Studio. Studio W Object Explorer kliknij Connect i wybierz Analysis Services. Services Kliknij OK. W Object Explorer rozwiń dostępne bazy.. Kliknij prawym przyciskiem myszy na bazie AdventureWorksDW i wybierz New Query -> DMX. Rys. 2 Utworzenie nowego zapytania DMX Aspekty w modelach eksploracji danych (czas realizacji 15min) W tej części zaprezentujemy różne rodzaje aspektów użytych do modeli eksploracji danych. Zadanie Tok postępowania 3. Aspekt CASES • Wpisz zapytanie: SELECT * FROM [Customer Clusters].CASES Wybieramy wszystkie kolumny dla wszystkich przypadków modelu Customer Clusters.. Jak można zauważyć, każdy przypadek jest wypisany w osobnym wierszu. Nie jest to bardzo przydatne z punktu widzenia zastosowań eksploracji danych, natomiast możemy łatwo odszukać elementy spełniające określone kryteria i dzięki temu dowiedzieć się ię więcej o danych które utworzyły model. • Wpisz zapytanie: SELECT [Education],[Marital Status],[Occupation] FROM [Customer Clusters].CASES Nazwy wyświetlanych przecinkami. kolumn należy wpisywać oddzielone • Wpisz zapytanie: SELECT [Education],[Marital Status],[Occupation] Status],[Occupation] FROM [Customer Clusters].CASES WHERE [Education]='Bachelors' Aby ograniczyć elementy tylko do pewnej grupy, można użyć frazy WHERE. • Wpisz zapytanie: SELECT [Education],[Marital Status],[Occupation] FROM [Customer Clusters].CASES WHERE [Education]='Bachelors' AND [Home Owner]='Yes' Podobnie jak w SQL, w DMX fraza WHERE może składać się z wielu wyrażeń. • Wpisz zapytanie: Strona 9/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX SELECT [Time Index],[Amount],[Quantity] FROM [Forecasting].CASES W powyższym zapytaniu wypisujemy wszystkie elementy dla modelu Forecasting. • Wpisz zapytanie: SELECT FLATTENED [Age],[Bike Buyer] FROM [TM Clustering].CASES ORDER BY [Age] Aby posortować przypadki, należy użyć frazy ORDER BY. Aby posortować malejąco wg określonej kolumny, należy za nazwą kolumny dodać DESC (domyślnie jest ASC czyli rosnąco). • Wpisz zapytanie: SELECT TOP 10 * FROM [TM Clustering].CASES ORDER BY [Yearly Income] DESC Aby wyświetlić tylko N pierwszych elementów należy użyć słowa kluczowego TOP zaraz po SELECT. • Wykonaj powyższe zapytania. 4. Zadanie do wykonania • Za pomocą poniższego zapytania sprawdź, czy dodanie słowa kluczowego FLATTENED zmienia wyniki zapytań: SELECT TOP 10 * FROM [TM Clustering].CASES ORDER BY [Yearly Income] DESC SELECT * FROM [TM Clustering].CONTENT WHERE NODE_PROBABILITY NODE_PROBA > 0.05 • Wykonaj powyższe zapytania. 5. Aspekt CONTENT • Poprzez aspekt CONTENT uzyskujemy wyniki modelu. Wpisz zapytanie: SELECT * FROM [TM Clustering].CONTENT • Wpisz zapytanie: SELECT * FROM [TM Clustering].CONTENT WHERE NODE_PROBABILITY > 0.05 Podobnie jak w poprzednich przypadkach, można użyć frazy WHERE do filtrowania wierszy wg podanego kryterium. • Wpisz zapytania: SELECT * FROM [Forecasting].CONTENT SELECT * FROM [Customer Clusters].CONTENT • Wykonaj powyższe zapytania. 6. Aspekt • Wpisz zapytanie: Strona 10/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych SAMPLE_CASES Moduł XI Data MiningIII – analityczny język DMX SELECT FLATTENED * FROM [Forecasting].SAMPLE_CASES WHERE IsInNode('000000003') Spróbuj usunąć warunek WHERE i wykonać zapytanie jeszcze raz. Czy zapytanie wykonało się poprawnie? • Wpisz zapytanie: SELECT * FROM [Sequence Clustering].SAMPLE_CASES Clustering].SAMPL WHERE IsInNode('425978') • Wykonaj powyższe zapytania. 7. Aspekt DIMENSION_CON TENT • Wpisz zapytanie: SELECT * FROM [Sequence Clustering].DIMENSION_CONTENT • Porównaj wyniki tego zapytania z aspektem CONTENT. Czy widać istotne różnice? • Wpisz zapytanie: SELECT TOP 10 * FROM [Sequence Clustering].DIMENSION_CONTENT ORDER BY NODE_SUPPORT DESC • Wpisz zapytanie: SELECT FLATTENED TOP 10 * FROM [Sequence Clustering].DIMENSION_CONTENT ORDER BY NODE_SUPPORT DESC Czy liczba wierszy w wyniku jest równa 10? Jeżeli nie to dlaczego liczba wierszy nie jest dokładnie taka, jaka jest zdefiniowana w TOP. • Wykonaj powyższe zapytania. Złączenie wyników z danymi zewnętrznymi – PREDICTION JOIN (czas realizacji 10min) W tej części zaprezentujemy możliwości włączania nowych elementów do modelu w celu wykonania eksploracji dla tych elementów. Złączenie predykcyjne pozwala na eksplorację danych dla nowych przypadków na posiadanych modelach utworzonych na danych testowych. Zadanie 8. PREDICTION JOIN Tok postępowania Za pomocą PREDICTION JOIN możemy wyznaczyć wartości predykcji dla nowych elementów. W ten sposób możemy wykorzystać nasz model do celów praktycznych. Załóżmy, że mamy dwoje ludzi którzy są potencjalnymi klientami kupna roweru. Chcemy oszacować, które z nich z większym prawdopodobieństwem eństwem kupi rower. Do tego celu wykorzystamy już nauczoną sztuczną sieć neuronową. • Wpisz zapytanie: SELECT FLATTENED t.[First Name], t.[Last Name], Predict([Bike Buyer]) as [Bike Buyer Prediction], PredictProbability([Bike Buyer]) as [Bike Buyer Probability] P FROM [TM Neural Net] Strona 11/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX NATURAL PREDICTION JOIN (SELECT 'John' AS [First Name], 'Smith' AS [Last Name], 35 AS [Age], '5-10 Miles' AS [Commute Distance], '1' AS [House Owner Flag], 2 AS [Number Cars Owned], 2 AS [Total Children] UNION SELECT 'Alice' AS [First Name], 'Wood' AS [Last Name], 55 AS [Age], '5-10 Miles' AS [Commute Distance], '0' AS [House Owner Flag], 4 AS [Number Cars Owned], 0 AS [Total Children]) AS t • Wykonaj powyższe zapytanie. 9. Korzystanie z zapytania do bazy danych Dane do predykcji są często zawarte w tabelach. Aby skorzystać z predykcji i ustawić źródło na zewnętrzną tabelę, można użyć funkcji OpenQuery. • Wpisz zapytanie. SELECT t.[LastName], t.[FirstName], [TM Decision Tree].[Bike Buyer], PredictProbability([Bike Buyer]) FROM [TM Decision Tree] PREDICTION JOIN OPENQUERY([Adventure Works DW], 'SELECT [LastName], [FirstName], [MaritalStatus], [Gender], [YearlyIncome], [TotalChildren], [NumberChildrenAtHome], [Education], [Occupation], [HouseOwnerFlag], [NumberCarsOwned] FROM [dbo].[ProspectiveBuyer]') AS t ON [TM Decision Tree].[Marital Status] = t.[MaritalStatus] AND [TM Decision Tree].[Gender] = t.[Gender] AND [TM Decision Tree].[Yearly Income] = t.[YearlyIncome] AND [TM Decision Tree].[Total Children] = t.[TotalChildren] AND [TM Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND [TM Decision Tree].[Education] = t.[Education] AND [TM Decision Tree].[Occupation] = t.[Occupation] AND [TM Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND [TM Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned] • Wykonaj powyższe zapytanie. Strona 12/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX Funkcje DMX (czas realizacji 30min) W tej części zaprezentujemy podstawowe funkcje DMX wraz z praktycznymi przykładami. Zadanie 10. Funkcja Predict Tok postępowania Funkcja Predict wyznacza predykcję dla określonej kolumny w określonym modelu. • Wpisz zapytanie: SELECT Predict([Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 4) FROM [Association] • Wykonaj powyższe zapytanie. 11. Funkcja PredictTimeSeries W kolejnym przykładzie korzystamy z modelu Forecasting aby przewidzieć przyszłe wartości dla kolumny Amount. • Wpisz zapytanie: SELECT FLATTENED [Forecasting].[Model Region], PredictTimeSeries([Forecasting].[Quantity],3) AS t FROM [Forecasting] WHERE [Model Region] = 'M200 Europe' • Wykonaj powyższe zapytanie. 12. Funkcja PredictHistogram W następnym przykładzie używamy funkcji PredictHistogram do wyznaczenia histogramu wg drzewa decyzyjnego dla nowego elementu. • Wpisz zapytanie: SELECT [TM Decision Tree].[Bike Buyer], PredictHistogram([Bike Buyer]) FROM [TM Decision Tree] NATURAL PREDICTION JOIN (SELECT 28 AS [Age], '2-5 Miles' AS [Commute Distance], 'Graduate Degree' AS [Education], 0 AS [Number Cars Owned], 0 AS [Number Children At Home]) AS t • Wykonaj powyższe zapytanie. 13. Funkcja PredictProbability Funkcja PredictProbability pozwala przewidzieć prawdopodobieństwa dla określonych elementów. wartość • Wpisz zapytanie: SELECT [Bike Buyer], PredictProbability([Bike Buyer], 1) AS [Bike Buyer = Yes], PredictProbability([Bike Buyer], 0) AS [Bike Buyer = No] FROM [TM Decision Tree] NATURAL PREDICTION JOIN (SELECT 28 AS [Age], '2-5 Miles' AS [Commute Distance], 'Graduate Degree' AS [Education], 0 AS [Number Cars Owned], Strona 13/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX 0 AS [Number Children At Home]) AS t • Wykonaj powyższe zapytanie. 14. Funkcja PredictAssociatio n Funkcja PredictAssociation pozwala na przewidywanie asocjacji pomiędzy elementami. • Wpisz zapytanie: SELECT FLATTENED PredictAssociation([Association].[v Assoc Seq Line Items],10) as [Association] FROM [Association] • Wykonaj powyższe zapytanie. 15. Funkcja PredictSupport Funkcja PredictSupport pozwala wyznaczyć wsparcie dla określonych elementów. • Wpisz zapytanie: SELECT PredictSequence([Sequence Clustering].[v Assoc Seq Line Items],5) FROM [Sequence Clustering] • Wykonaj powyższe zapytanie. 16. Funkcja PredictVariance Funkcja PredictVariance określonego elementu. pozwala wyznaczyć wariancje dla • Wpisz zapytanie: SELECT PredictVariance([Bike Buyer]) as [Variance] FROM [TM Decision Tree] NATURAL PREDICTION JOIN (SELECT 58 AS [Age], '5-10 Miles' AS [Commute Distance], 'Partial College Degree' AS [Education], 3 AS [Number Cars Owned], 0 AS [Number Children At Home], 'Professional' as [Occupation], 'M' as [Gender], 'M' as [Marital Status], 100000 as [Yearly Income]) AS t • Wykonaj powyższe zapytanie. 17. Funkcja PredictSequence Funkcja PredictSequence pozwala wyznaczyć kilka kolejnych elementów które będą z największym prawdopodobieństwem związane z elementem rozpatrywanym. • Wpisz zapytanie: SELECT PredictSequence([Sequence Clustering].[v Assoc Seq Line Items],5) FROM [Sequence Clustering] • Wykonaj powyższe zapytanie. 18. Funkcja PredictNodeId Funkcja PredictNodeId umożliwia na przewidywanie węzła do którego należy określony element. Jeżeli element nie należy do żadnego węzła, wyznaczany jest węzeł do którego element należy z największym prawdopodobieństwem. Strona 14/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX • Wpisz zapytanie: SELECT [Bike Buyer], PredictNodeId([Bike Buyer]) as [Node] FROM [TM Decision Tree] NATURAL PREDICTION JOIN (SELECT 28 AS [Age], '2-5 Miles' AS [Commute Distance], 'Graduate Degree' AS [Education], 0 AS [Number Cars Owned], 0 AS [Number Children At Home]) AS t • Sprawdź, jak nazywa się węzeł o ID podanym w wyniku zapytania. • Wykonaj powyższe zapytanie. 19. Funkcja Cluster Funkcja Cluster określa przyporządkowany element. klaster, do którego zostanie • Wpisz zapytanie: SELECT PredictHistogram(Cluster()) FROM [TM Clustering] NATURAL PREDICTION JOIN (SELECT 28 AS [Age], '2-5 Miles' AS [Commute Distance], 'Graduate Degree' AS [Education], 0 AS [Number Cars Owned], 0 AS [Number Children At Home]) AS t • Wykonaj powyższe zapytanie. 20. Funkcja ClusterDistance Funkcja ClusterDistance określa odległość elementu od jego klastra, a jeżeli jest to nowy element bez przyporządkowania – określa jego odległość do najbliższego klastra. • Wpisz zapytanie: SELECT ClusterDistance() FROM [TM Clustering] NATURAL PREDICTION JOIN (SELECT 28 AS [Age], '2-5 Miles' AS [Commute Distance], 'Graduate Degree' AS [Education], 0 AS [Number Cars Owned], 0 AS [Number Children At Home]) AS t • Wykonaj powyższe zapytanie. 21. Funkcja ClusterProbability Funkcja ClusterProbability określa prawdopodobieństwo z jakim określony element znajdzie się w danym klastrze. • Wpisz zapytanie: SELECT ClusterProbability('Cluster 1'), ClusterProbability('Cluster 5'), ClusterProbability('Cluster 9') FROM [TM Clustering] NATURAL PREDICTION JOIN (SELECT 28 AS [Age], '2-5 Miles' AS [Commute Distance], Strona 15/17 Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych 'Graduate Degree' AS [Education], 0 AS [Number Cars Owned], 0 AS [Number Children At Home]) AS t • Wykonaj powyższe zapytanie. Strona 16/17 Moduł XI Data MiningIII – analityczny język DMX Marcin Gorawski,Michał Jan Gorawski, Sławomir Bańkowski ITA-102 Hurtownie Danych Moduł XI Data MiningIII – analityczny język DMX Laboratorium rozszerzone Laboratorium rozszerzone zawiera opcjonalne zadania do wykonania. Każde zadanie jest niezależne, zadania zostały ustawione od najłatwiejszych do najtrudniejszych. Dla każdego zadania podany jest orientacyjny czas wykonania. Zadanie 1 (czas wykonania: 7min) Dla drzew decyzyjnych wyświetl wszystkie elementy dla których wiek jest większy od 60 i roczny dochód przekroczył 130000. Zadanie 2 (czas wykonania: 10min) Na podstawie modelu Forecasting sprawdź, jakie wartości mogą wystąpić dla roku 2005. Zadanie 3 (czas wykonania: 10min) Na podstawie sztucznej sieci neuronowej sprawdź, z jakim prawdopodobieństwem jesteś zainteresowany kupnem roweru. Zadanie 4 (czas wykonania: 13min) Dla 3 nowych osób sprawdź do jakiego węzła każda osoba została przypisana. Zadanie 5 (czas wykonania: 15min) Sprawdź, jakie elementy znajdują się w każdym klastrze, a prawdopodobieństwo z jakim znajdziesz się w każdym klastrze (od 1 do 10). Strona 17/17 następnie sprawdź ITA-102 Hurtownie Danych Marcin Gorawski, Michał Jan Gorawski Moduł 12 Wersja 1.0 Reporting Services I Spis treści Reporting Services I .............................................................................................................................. 1 Informacje o module ............................................................................................................................ 2 Przygotowanie teoretyczne ................................................................................................................. 3 Przykładowy problem .................................................................................................................. 3 Podstawy teoretyczne.................................................................................................................. 3 Dodatkowe źródła informacji....................................................................................................... 5 Laboratorium podstawowe .................................................................................................................. 5 Problem 1 (czas realizacji 25 min)................................................................................................ 5 Problem 2 (czas realizacji 15min) – kontynuacja problemu 1 ..................................................... 8 Laboratorium rozszerzone ................................................................................................................. 14 Zadanie 1 (czas wykonania: 10min) ........................................................................................... 14 Zadanie 2 (czas wykonania: 15min) ........................................................................................... 14 Zadanie 3 (czas wykonania: 20min) ........................................................................................... 14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I Informacje o module Opis modułu W module tym znajdziesz informacje dotyczące zagadnień związanych z raportowaniem danych. Poznasz podstawową wiedzę na temat raportowania danych, poznasz aktu aktualne problemy jakie występują podczas tworzenia raportów danych w środowisku SQL Server 2008 i nie tylko. Cel modułu Celem modułu jest przedstawienie możliwości użycia pakietu Reporting Services, jednego z komponentów SQL Server 2008, przy projektowaniu i implementowaniu prostych raportów, wykorzystaniu wykresów oraz tworzeniu skomplikowanych raportów wielowymiarowych. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • wiedział, czym jest oraz jak projektować raport, • potrafił tworzyć raporty w SQL Server 2008, • rozumiał mechanikę tworzenia raportów w SQL Server 2008. Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • dobrze orientować się w zagadnieniach baz danych, • znać zasady pracy w środowisku Visual Studio. Mapa zależności modułu Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w modułach 3, 4, 5. Rys. 1 Mapa zależności modułu Strona 2/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I Przygotowanie teoretyczne Przykładowy problem Twoja firma ma problem z przekonaniem zarządu do kontynuowania projektu Hurtowni Danych. Większość osób z zarządu nie widzi potrzeby ani celu kontynuowania tego zagadnienia – zlecono CI zaprezentowanie wartości systemu Hurtowni Danych poprzez zaprezentowanie raportów danych zbieranych w HD oraz pokazanie w jak szybki prosty oraz przejrzysty sposób Podstawy teoretyczne Raportowanie danych to ważna funkcjonalność hurtowni danych. Wszystkie poprzednie moduły prezentują sposób tworzenia i zarządzania hurtownią danych – narzędzia raportujące to aplikacje pozwalające na graficzne przedstawienie danych magazynowanych i przetwarzanych w hurtowni danych. Przykłady na laboratorium podstawowym zapoznają cię z tworzeniem raportów w systemie SQL Server 2008, natomiast teoria przedstawi bardzo aktualne zagadnienie kompatybilności różnych rozwiązań olapowych z systemem raportowania SQL Servera 2008. Złożoność systemów raportujących wzrasta wraz ze złożonością wymagań funkcjonalnych systemów bazodanowych. Średniej wielkości systemy bazodanowe zawierają kilkadziesiąt tabel i generują zwykle podobną liczbę raportów. Projektowanie oraz utrzymanie raportów wymaga pracy wielu programistów, analityków i specjalistów od baz danych. Zwykle raporty budowane są w oparciu o zapytania SQL lub MDX, które przechowywane są w formie szablonu, a przed wykonaniem są wypełniane wartościami z baz danych, interaktywnie uzupełniane przez użytkownika. Takie podejście wymaga traktowania każdego z raportów indywidualnie, konfigurowalność ogranicza się jedynie do wyboru wyświetlanych kolumn, ich kolejności, a także filtrów, które są reprezentowane jako jeden lub więcej warunków we frazie „where”. Systemy OLAP-owe umożliwiają znacznie większą konfigurowalność, co pozwala na łatwiejszą kontrolę raportów i zarządzanie zestawieniami. Modelowane w schematach hurtowni wielowymiarowe dane są trudne w implementacji, jednakże ułatwiają tworzenie w pełni konfigurowalnych aplikacji. Architektury OLAP-owe pozwalają na bezpośrednie poznanie charakteru przechowywanych i przetwarzanych danych, bez potrzeby wykonywania wielu złączeń w trakcie realizacji zapytań oraz śledzenia „rodowodu” danych i sposobu ich agregacji. Przemysłowe systemy hurtowni danych często posiadają ponad 100 tabel. W docelowej bazie OLAP jest to ponad 8 kostek, do których może być przyporządkowanych ponad 30 współdzielonych wymiarów. Liczba poziomów przekracza 150. Można zatem wywnioskować, że liczba raportów będzie większa niż 200. Przy tworzeniu raportów MDX czy SQL istnieje duże niebezpieczeństwo pomyłek, zarówno logicznych, spójnych jak i znakowych. Błędy logiczne wynikają najczęściej z niezrozumienia specyfikacji funkcjonalnej, zamiast właściwego wymiaru wybierany jest inny o podobnej nazwie, lub wybierany jest agregat nie pasujący do raportu. Tych błędów nie da się uniknąć stosując proste metody, jedyną skuteczną ochroną jest stosowanie dokładnego opisu oraz przykładów użycia określonego obiektu wielowymiarowego. Błędy znakowe są związane z pomyłkami edytorskimi i zmianą nazw obiektów. Takich błędów można uniknąć testując zapytania ręcznie, poprzez testy jednostkowe (np.: NUnit), lub stosując prezentowane rozwiązanie. Napisanie oraz wykonanie dużej liczby raportów wymaga odpowiednio wysokiego nakładu czasu. Dodatkowo, dla systemu bez dedykowanego silnika pojawia się problem przenośności MDX. MDX jest częścią specyfikacji XML/A, jednak jak pokazuje doświadczenie, na różnych platformach nie jest ona zachowana w 100%, więc raport powstały w języku MDX nie zawsze jest przenośny na inne silniki baz danych. W systemach czasu rzeczywistego raportowanie OLAP polega na dostarczaniu odpowiedzi na zapytania w czasie ciągłym. W tym przypadku realizacje zapytań OLAP są ograniczone z jednej Strona 3/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I strony, przez pewne limity wykonywania związane zarówno z wyszukiwaniem danych, jak i ich przydatnością, a z drugiej istnieją jednak pewne realne zewnętrzne ograniczenia czasowe, które należy spełnić. Proponowanym rozwiązaniem tego problemu jest system raportujący bazujący na interoperacyjnym systemie OLAP nazywany w skrócie także systemem intOLAP. System IntOLAP bazuje na heterogenicznych zasobach (interfejsach, aplikacjach i serwisach) wspierających różne silniki OLAP-owe i obsługę kilku systemów zarządzania bazami danych. Potrzeba interoperacyjności systemów OLAP wynika z charakteru rynku małych i średnich przedsiębiorstw. Wiele z nich posiada systemy transakcyjne, często oparte o rozwiązania oszczędne takie jak np. PostgreSQL. Zapotrzebowanie na system hurtowni danych pojawia się często dużo później niż na wdrożenie systemu bazodanowego, a to często łączy się z dużym kosztem, na który odbiorców nie stać. W takim wypadku wystarczyłoby zastosować system intOLAP bazujący na serwerze Mondrian . Architektura systemu INTOLAP System intOLAP składa się z kilku komponentów (aplikacji/serwisów) umieszczonych w 3 warstwach architektury, znacznie ułatwiających pracę ze standardowymi systemami OLAP (rys. 1). W warstwie danych tworzą tabele relacyjne, zdenormalizowane oraz konfiguracyjne. Środkowa warstwa zawiera programy pomocnicze tj. aplikacje Javy oraz programy działające w środowisku Framework 2.0. które komunikują się ze sobą. W najniższej warstwie znajdują się implementacje metod wizualizacji raportów. W ARSTW A PREZENTACJI W ARSTW A JDBC OLAP JAVA HELPER JDBC JDBC:ODBC Apache Tomcat IIS APLIKACJI Socket ODBC OLAP FRAMEWORK HELPER Aplikacja .NET OHDB W ARSTW A OTDB DANYCH RTDB XML/A Mondrian Strony ASP Form +DataGrid JFrame JPivot Rys. 2. Architektura intOLAP W systemie intOLAP zostały wykorzystane scenariusze wymiany informacji przedstawione na (rys. 2). Mondrian JPivot Mondrian JPivot MS SQL Server 2005 OJH a) PostgreSQL OJH Oracle b) JPivot OFH OJH c) Rys. 3. Scenariusze wymiany informacji Mondrian to serwer OLAP-owy napisany w języku Java. Zaletą Mondriana jest możliwość pracy z dowolną bazą danych, która posiada możliwość podłączenia za pomocą JDBC lub ODBC. Mondrian pozwala również na interpretacje zapytań MDX, oraz umożliwia łatwą implementację oraz użycie automatycznych tabel agregacyjnych. Podstawową wadą jest niezgodność ze specyfikacją XML/A. Mondrian jest silnikiem ciągle rozwijanym i jak każdy produkt open-source nie jest on wolny od błędów. Jako wielowymiarowy interfejs może zostać użyta biblioteka JPivot, która jest przeznaczona do realizacji interfejsów użytkownika dla bazy Mondrian. Półautomatyczne, konfigurowalne środowisko pozwala na eliminację większości pomyłek i problemów przy tworzeniu schematu OLAP. W systemie przyjęto dowolność wyboru silnika bazy danych. Proces ETL jest w systemie intOLAP projektowany za pomocą dostępnych w nim narzędzi, Strona 4/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I natomiast sam Mondrian stanowi najwyższą część systemu pozwalającą na dostanie się do dowolnej bazy danych za pomocą XML/A. W Mondrian zapytania MDX są tłumaczone na SQL, wykonywane, a następnie zwracany wynik jako wielowymiarowe dane – podejście to wydajnościowo nie może równać się z dedykowanymi silnikami OLAP, jednak ze względu na wykorzystywane przez system bufory jest ono wystarczająco szybkie. Mondrian udostępnia dwa główne i szybkie bufory pamięciowe, oraz tabele agregacyjne (w funkcjonalności podobne do widoków zmaterializowanych) Istotą systemu jest umożliwienie użytkownikowi strojenie tabel agregacyjnych tak, aby zapytania wykonywały się maksymalnie szybko. Dodatkowe źródła informacji 1. Gorawski M., Gorawski M.J., Bańkowski Sł. Interoperacyjny system OLAP: intOLAP. [red.] Z. Huzar B. Hnatkowska. Metody i narzędzia wytwarzania oprogramowania. Konferencja naukowa, Szklarska Poręba, 14-16 maja 2007.Wrocław: Oficyna Wydaw. Politechniki Wrocławskiej. 2007, strony 279-291. 2. Gorawski M., Gorawski M.J., Bańkowski Sł. —. System raportujący INTOLAP oparty o serwer Mondrian. [aut. książki] Praca zbiorowa. [red.] Z. Mazur Z. Huzar. Systemy czasu rzeczywistego. Metody i zastosowania Warszawa: Wydaw. Komunikacji i Łączności. 2007, strony 363-372. 3. Gorawski M., Bańkowski Sł., Gorawski M.J. Data processing in the INTOLAP system. 1st International Conference on Information Technology, Gdańsk, Poland. 19-21 May 2008. Laboratorium podstawowe Problem 1 (czas realizacji 25 min) Zlecono Ci zadanie zaprojektowania raportu który ilość zamówionych towarów Podstawowe raporty Zadanie Tok postępowania 1. Tworzenie projektu raportu • Uruchom aplikację Business Intelligence Development Studio z grupy Microsoft SQL Server 2008. • Z menu plik wybierz New a następnie Project. • Z listy Project Types, w zakładce Templates należy wybrać Report Server Project. • W polu Name należy podać nazwę projektu (np. Reporting Services Tutorial). • Kliknąć OK. • Sprawdzić zawartość panelu SolutionExplorer. 2. Utworzenie raportu • W panelu Solution Explorer kliknij prawym klawiszem Reports, a następnie wybierz Add, New Report. W narzędziu Reporting Services dane używane do stworzenia raportu są zawarte w abstrakcyjnym obiekcie, który nazywany jest Dataset. Dataset zawiera wskaźnik do źródła danych oraz zapytanie, które Strona 5/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I używane jest do stworzenia raportu. • Na zakładce Data z listy rozwijanej Dataset należy wybrać New Dataset. Pola dialogu, który zostanie wyświetlony należy uzupełnić wartościami podanymi poniżej: • Name: AdventureWorks. • Type: Microsoft SQL Server. • Connection String: Data source=(local); initial catalog=AdventureWorks2008 • Należy kliknąć OK. 3. Definicja zapytania raportowego Zakładka Data pozwala na wpisanie zapytania SQL, które ma zostać wykonane, a jego wyniki są wyświetlanie w postaci tabeli. Zapytanie tworzące raport pobiera z bazy informacje o pracownikach firmy i przeprowadzonych przez nich transakcjach: • Poniższe zapytanie należy wpisać na zakładce Design the query w polu Query string. SELECT soh.OrderDate AS Date, soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name AS Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson AS sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING (ppc.Name = 'Clothing') Jeżeli klikniesz przycisk QueryBuilder graficzny zobaczysz model zapytania które właśnie projektujesz. • Wybierz Next . • Jako Report Type wybierz Tabular. • Kliknij Finish i nazwij projekt jako Report1. 4. Przeglądanie stworzonego raportu • Wbierz zakładkę preview aby zobaczyć projekt stworzonego przez ciebie raportu. 5. Formatowanie • W zakładce Design kliknij ppm na komórce z tekstem [Date] i wybierz Text Box Properities. Strona 6/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I pola data (Date) • Wybierz Number a następnie w polu Category wybierz Date. • W polu Type wybierz January 31,2000. • Kniknij OK. 6. Formatowanie pola waluta (Currency) • W zakładce Design kliknij ppm na komórce z tekstem [LineTotal] i wybierz Text Box Properities. • Wybierz Number a następnie w polu Category wybierz Currency. • • • • Decimal places:2. Negative numbers ($12345.00) Symbol: $English(United States) Wybierz Use 1000 separator(.) • Kniknij OK. 7. Zmiana stylu tekstu oraz szerokości kolumn • Kliknij na dowolnym polu, nad kolumnami i przy wierszach pojawią się szare pola które są zaczepami . • Jeżeli przejdziesz na miejsce złączenia zaczepów pojawi kursor zmieni się na podwójną strzałkę – teraz możesz dostosować szerokośc kolumn. • Zaznacz zaczep przy wierszach z nazwami kolumn, następnie z menu Format wybierz Font a następnie Italic. • Wybierz zakładkę Preview i przeanalizuj zmiany w raporcie. 8. Grupowanie danych w raporcie • Wybierz zakładkę Design. • Z panelu Report Data przeciągnij pole Date na zakładkę Row Groups (u dołu ekranu) i upuść je na wierszu Details. • Z panelu Report Data przeciągnij pole Date na zakładkę Row Groups (u dołu ekranu) i upuść je nad wierszem table1_Details_Group. table1_Details_Group • Z panelu Report Data przeciągnij pole Order na zakładkę Row Groups (u dołu ekranu) i upuść je pomiędzy wierszem Date a table1_Details_Group. • Wytnij oryginalne kolumny Date oraz Order(Zaznacz Order je kliknij ppm i wybierz Delete Columns). • Sformatuj ponownie nowe pole Date. Jeżeli teraz przeanalizujesz raport zauważysz że obecnie pola Order oraz Date wyświetlają się jako pola zgrupowane. 9. Dodanie podsumowań w raporcie • • • • • • • • • • • • Przejdż na zakładkę Design. Kliknij ppm na pole [LineTotal] i wybierz AddTotal. AddTotal Kliknij ppm na pole [Qty] i wybierz AddTotal. W pustym polu na lewo od [Sum(Qty)] wpisz nazwę „Suma zamówienia” Zaznacz pola „Suma zamówienia”, [Qty] oraz [LineTotal], w menu Format wybierz Background Color i wybierz dowolny kolor. W polu [Order] kliknij ppm i wybierz AddTotal a następnie Ater. Zmień nazwę pola Total na „Bilans dzienny” Zaznacz stworzony wiersz i w menu Format wybierz Background Color i wybierz dowolny kolor. W polu [Date] kliknij ppm i wybierz AddTotal a następnie Ater. Zmień nazwę pola Total na „Bilans całkowity” Zaznacz stworzony wiersz i w menu Format wybierz Background Color i wybierz dowolny kolor. Przejdz na zakładkę preview i przeanalizuj raport, przejdz na ostatnią Strona 7/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I stronę raportu i zobacz podsumowania. Problem 2 (czas realizacji 15min) – kontynuacja problemu 1 Zaawansowane funkcje Zadanie Tok postępowania 1. Konwersja źródła danych na dzielone źródło danych • W zakładce Report Data kliknij ppm na źródło danych AdventureWorks i wybierz Convert to Shared Data Source. Źródło danych o nazwie AdventureWorks pojawia się teraz w oknie Solution Explorer. • W zakłądce Report Data kliknij ppm na AdventureWorks i wybierz Data Source Properities. • Jako Name wpisz AdventureWorks_Ref • Wybierz OK. 2. Podmiana istniejącego zbioru danych (Dataset) • W zakładce Report Data kliknij ppm na DataSet1 oraz wybierz Dataset Properities • Sprawdź Sprawd czy w polu Data Source wybrany jest AdventureWorks_Ref • W Query type sprawdź sprawd czy wybrany jest Text. • Kliknij Query Designer i zastąp zast istniejący kod następującym: nastę SELECT soh.OrderDate AS [Date], soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader erHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING (ppc.Name = 'Clothing' Strona 8/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))) Zapytanie to różni się od poprzedniego warunkiem z dwoma parametrami ograniczającymi: AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))). • kliknij Run (!). w oknie Define Query Parameters wpisz wartości @StartDate oraz @EndDate. • Dla @StartDate, podaj wartość, 20010101. • Dla @EndDate, podaj wartość, 20030101. • Kliknij OK. Prezentowane dane pochodzą z lat 2001 i 2002. • Zakończ wszystkie kreatory. Teraz w panelu Report Data rozwiń katalog Parameters – zauważ że podane wartość pojawiły się w tym katalogu. 3. Zmiana typu danych dla parametrów raportu Po zdefiniowaniu parametrów dla raoprtu muszisz zmienić typ danych dla parametrów aby pasowały do typu danych źródłowych. Domyślnym typem jest Text,, który mapuje większość danych typu String dla danych źródłowych. Jeżeli dane źródłowe mają typ numeryczny , boolean lub Date/Time,, należy zmienić typ danych Strona 9/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I parametru. • W panelu Report Data rozwiń folder Parameters i podwójnie kliknij StartDate StartDate. • W Data type wybierz Date/Time. • Kliknij OK. • Powtórz poprzednie kroki dla EndDate • Przejdź na zakładkę Preview. Przy polach StartDate oraz EndDate pokazały się ikonki kalendarza. Jeśli je wybierzesz będziesz mógł za jego pomocą wybrać daty graniczne tworzonego raportu. Kontrolki kalendarza pojawiają się automatycznie atycznie przy wyborze typu Date/Time jeśli nie zdefiniujesz listy dostępnych wartości. Jeśli to zrobisz zamiast kalendarza pojawi się lista rozwijana z dostępnymi datami. • Wprowadź daty graniczne : • Dla @StartDate, podaj wartość, 2001-01-01. • Dla @EndDate, podaj wartość, 2003-01-01. • Wybierz View Report o przeglądnij otrzymany raport. 4. Definiowanie wartości domyśnych dla paremetrów raportu • Przejdź na zakładkę Design • W panelu Report Data rozwiń folder Parameters i podwójnie kliknij StartDate StartDate. • Przejdź na DefaultValues, wybierz opcję Specify values oraz przycisk Add • W polu Value wpisz 2001-01-01 • Kliknij OK. • Powtórz powyższe kroki dla EndDate wpisując 2003-01-01. 2003 • Przejdź na zakładkę Preview. Raport pokazuje się natychmiaspo ponieważ wartości domyślne są już zdefiniowane 5. Dodanie kolejnego parametru filtrującego • P Przejdź na zakładkę Design • Kliknij ppm na DataSet1 i wybierz Dataset Properties • Otwórz Query Designer i zastąp zastąp istniejące następującym: SELECT soh.OrderDate AS [Date], DATENAME(weekday, DATENAME(wee soh.OrderDate) as Weekday, soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd Strona 10/14 zapytanie Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory Production.ProductSubcategor AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, pps.Name, pp.Name, soh.SalesPersonID HAVING (ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))) W tym zapytaniu dodajemy do raportu dodatkową kolumnę: kolumnę DATENAME(weekday, soh.OrderDate) as Weekday. Weekday • kliknij Run (!). w oknie Define Query Parameters wpisz wartości @StartDate oraz @EndDate. • Dla @StartDate, podaj wartość, 20010101. 20010101 • Dla @EndDate, podaj wartość, 20030101. 20030101 • Kliknij OK, teraz powinieneś zobaczyć dodatkową kolumnę Weekday wyświetlającą dzień tygodnia. 6. Formatowanie pola Date • • • • • 7. Dodanie nowego parametru raportu • • • • • 8. Ustawienie filtru tabeli z parametrem • W zakładce Design view, ppm naa zaczep wierszy bądż kolumn i wybierz Tablix Properties. Properties • Wybierz Filters. • Kliknij Add. • W Expression, z listy rozwijanej wybierz [Weekday]. • Sprawdź czy w polu Operator znajduhe się znak (=). • Kliknij przycisk wyrażenia (fx) obok texboxa Value. Value • W Category, wybierz Parameters. Podwójnie kliknij na DayoftheWeek. Przejdź na zakładkę Design Kliknij ppm na polu [Date] i wybierz Date Box Properties. Properties Wybierz Number i w Category wybierz Date Ustaw format na Monday,January 31,2000. Kliknij OK. W panelu Report Data kliknij New oraz Parameter. Parameter Jako Name wpisz DayOfWeek. W Prompt wpisz Filter on the day of the week. Wybierz Default Values . Wybierz Specify values option. Kliknij przycisk Add i w pole [Value] wpisz „Friday”. • Kliknij OK. Dodane zostało wyrażenie dla parametru. parametru Powinieneś widzieć następujące wyrażenie: =Parameters!DayoftheWeek.Value. • Zamknij wszystkie kreatory klikając OK. Strona 11/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I Stworzyłeśś właśnie filtr dla raportu. Obenie pole Weekday będzie porównywane z wartością domyślną parametru DayoftheWeek. Przejdź na zakładkę Preview.. Raport który się wyświetli jest ograniczony poprzez wartości StartDate i EndDate, EndDate oraz wyświetla jedynie dane z piątku (Friday). 9. Dodanie parametrów i tworzeni listy dostępnych wartości • Wprzejdź na zakładkę Design • Kliknij ppm na DataSet1 i wybierz Dataset Properties • Otwórz Query Designer i zastąp zastąp istniejące następującym: zapytanie SELECT soh.OrderDate AS [Date], DATENAME(weekday, soh.OrderDate) as Weekday, soh.SalesOrderNumber AS [Order], pps.Name AS Subcat, pp.Name as Product, SUM(sd.OrderQty) AS Qty, SUM(sd.LineTotal) AS LineTotal FROM Sales.SalesPerson sp INNER JOIN N Sales.SalesOrderHeader AS soh ON sp.BusinessEntityID = soh.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS sd ON sd.SalesOrderID = soh.SalesOrderID INNER JOIN Production.Product AS pp ON sd.ProductID = pp.ProductID INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID = pps.ProductSubcategoryID INNER JOIN Production.ProductCategory AS ppc ON ppc.ProductCategoryID = pps.ProductCategoryID GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, soh.SalesOrderN pps.Name, pp.Name, soh.SalesPersonID HAVING ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND soh.SalesPersonID = (@BusinessPersonID) Zapytanie różni się warunkiem który ogranicza wynik zapytania do jednego sprzedawcy: AND soh.SalesPersonID = (@BusinessPersonID). (@BusinessPersonID) • kliknij Run (!). w oknie Define Query Parameters wpisz wartości Strona 12/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I @StartDate , @EndDate oraz @BusinessPersonID. @BusinessPersonID • Dla @StartDate, podaj wartość, 20010101. • Dla @EndDate, podaj wartość, 20030101. • Dla @BusinesPersonID, podaj wartość, 290. • Kliknij OK, teraz powinieneś zobaczyć wynik zapytania dla sprzedawcy o identyfikatorze 290. 10. Dodanie żródła danych dla porametru raportu • W zakładce Report Data, kliknij New, oraz Dataset. Dataset • W polu Name, wpisz BusinessPersons.. To źródło danych będzie użyte dla parametru SalesPersonID. • Sprawdź czy jako źródło ustawiono AdventureWorks_Ref. AdventureWorks_Ref • Jako zapytanie wklej następujący kod: kod SELECT SP.BusinessEntityID, C.FirstName, C.LastName FROM Sales.SalesPerson AS SP INNER JOIN HumanResources.Employee AS E ON E.BusinessEntityID = SP.BusinessEntityID INNER JOIN Person.Person AS C ON C.BusinessEntityID = E.BusinessEntityID ORDER BY SP.BusinessEntityID • Zamknij wszystkie kreatory Na zakładce Report Data przeanalizuj źródło danych BusinessPerson – zauważ że posiada on pola FirstName i LastName. LastName W następnym kroku scalimy te pola w jedno pole Name • W zakładce Report Data, kliknij ppm na zbiór danych BusinessPersons, I wybierz Add Calculated Field. • W ostatnim polu Field Name wpisz Name. • W polu Field Source wklej: =Fields!LastName.Value & ", " & Fields!FirstName.Value • Kliknij OK. 11. • W zakładce Report Data pane, rozwiń katalog Parameters I kliknij ppm na BusinessPersonID, a następnie Parameter Properties. Properties • W polu Prompt, wpisz Select business person: • Jako Data type, wybierz Integer. • Przejdź na Available Values. • Wybierz Get values from a query. • Z listy rozwijanej Dataset wybierz BusinessPersons. BusinessPersons • Z listy rozwijanej Value field wybierz BusinessEntityID. BusinessEntityID • Z listy rozwijanej Label field wybierz Name. • Przejdź na Default Values i wybierz Get values from a query option. option • Z listy rozwijanej Dataset wybierz BusinessPersons. • Z listy rozwijanej Value field wybierz BusinessEntityID i kliknij k OK. • Kliknij zakłądkę Preview tab. Przeanalizujj otrzymany raport. Co się zmieniło? Strona 13/14 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XII Reporting Services I Laboratorium rozszerzone Laboratorium rozszerzone zawiera opcjonalne zadania do wykonania. Każde zadanie jest niezależne, zadania zostały ustawione od najłatwiejszych do najtrudniejszych. Dla każdego zadania podany jest orientacyjny czas wykonania. Zadanie 1 (czas wykonania: 10min) Zaprojektuj raport zawierający sumę jednostek sprzedanych (OrderQty) i sumę sprzedaży (UnitPrice) według metody dostarczenia, sprzedawcy i typu klienta. Podział strony powinien być wyznaczony poprzez metody dostarczenia i typu klienta. Zadanie 2 (czas wykonania: 15min) Zaprojektuj raport zawierający listę pracowników (imię, nazwisko, adres email, telefon), dla każdego pracownika napisz liczbę sprzedanych jednostek. Raport powinien mieć dwa parametry ustawiane przez użytkownika: imię i nazwisko. Zadanie 3 (czas wykonania: 20min) Zaprojektuj raport zawierający kategorię produktu, podkategorię produktu, produkt, a także dostawcę produktu (Vendor). Podział na strony powinien być wg dostawcy i kategorii produktu. Dla każdego produktu wypisz liczbę jednostek zamówionych (OrderQty). Wykonaj podsumowanie agregatu dla podkategorii, kategorii i dostawcy. Raport powinien mieć 4 parametry: kategoria produktu, dostawca, początkowa i końcowa data dostarczenia produktu (ShipDate). Ustaw wartości domyślne dla wszystkich parametrów. Strona 14/14 ITA-102 Hurtownie Danych Marcin Gorawski, Michał Jan Gorawski Moduł 12 Wersja 1.0 Reporting Services II Spis treści Reporting Services II ............................................................................................................................. 1 Informacje o module ............................................................................................................................ 2 Podstawy teoretyczne zawiera moduł XII pt.: Reporting Services I. .................................................... 3 Laboratorium podstawowe .................................................................................................................. 3 Problem 1 (czas realizacji 25 min) – kontynuacja modułu RS1.................................................... 3 Problem 2 (czas realizacji 15min) – kontynuacja problemu 1 ..................................................... 5 Problem 3 (czas realizacji 15min) ................................................................................................ 6 Problem 4 (czas realizacji 15min) – kontynuacja problemu 3 ..................................................... 7 Problem 5 (czas realizacji 25min) ................................................................................................ 8 Laboratorium rozszerzone ................................................................................................................. 13 Zadanie 1 (czas wykonania: 10min) ........................................................................................... 13 Zadanie 2 (czas wykonania: 10min) ........................................................................................... 13 Zadanie 3 (czas wykonania: 25min) ........................................................................................... 13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II Informacje o module Opis modułu W module tym znajdziesz informacje dotyczące zagadnień związanych z raportowaniem danych. Poznasz podstawową wiedzę na temat raportowania danych, poznasz aktu aktualne problemy jakie występują podczas tworzenia raportów danych w środowisku SQL Server 2008 i nie tylko. Cel modułu Celem modułu jest przedstawienie możliwości użycia pakietu Reporting Services, jednego z komponentów SQL Server 2008, przy projektowaniu i implementowaniu prostych raportów, wykorzystaniu wykresów oraz tworzeniu skomplikowanych raportów wielowymiarowych. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: • wiedział, czym jest oraz jak projektować raport • potrafił tworzyć raporty w SQL Server 2008 • rozumiał mechanikę tworzenia raportów w SQL Server 2008 Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: • dobrze orientować się w zagadnieniach z zakresu baz danych • znać zasady pracy w środowisku Visual Studio Mapa zależności modułu Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w modułach 3, 4, 5. Rys. 1 Mapa zależności modułu Strona 2/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II Podstawy teoretyczne zawiera moduł XII pt.: Reporting Services I. Laboratorium podstawowe Problem 1 (czas realizacji 25 min) – kontynuacja modułu RS1 Zapytanie dla raportu macierzowego Zadanie Tok postępowania 1. Dodanie nowego raportu • W zakładce Solution Explorer kliknij Prawym klawiszem myszy na Reports, wybierz Add, oraz New Item 2. Zdefiniowanie zapytania TransactSQL dla raportu • • • • • W kreatorze Add New Item jako Templates wybierz Report. • W polu Name, wpisz Sales by Area and Year.rdl I kliknij Add. W zakładce Report Data kliknij New, oraz Data Source. W polu Name wpisz AdventureWorks2008. Wybierz Embedded connection a jako typ Microsoft SQL Server. W polu Connection string, wpisz: Data source=localhost; initial catalog=AdventureWorks2008 • Kliknij OK. • W zakładce Report Data kliknij Prawym klawiszem myszy na AdventureWorks2008, i wybierz Add Dataset. • W polu Name, wpisz Sales. • W polu Query type, wybierz typ Text. • Poniżej zakładki Query kliknij Query Designer i wpisz następujący kod: SELECT SOH.SalesPersonID AS ID, P.FirstName, P.LastName, SOH.SalesOrderNumber AS [Order], SOH.OrderDate AS [Date], DATEPART(yy, SOH.OrderDate) AS [Year], DATEPART(mm, SOH.OrderDate) AS [Month], ST.[Group] AS [Geography], ST.CountryRegionCode AS CountryRegion, ST.Name AS Territory, PPC.Name AS Category, PPS.Name AS Subcat, PP.Name AS Product, PP.Color, PP.Size, CASE WHEN PP.Size = 'S' THEN 1 WHEN PP.Size = 'M' THEN 2 WHEN PP.Size = 'L' THEN 3 WHEN PP.Size = 'XL' THEN 4 ELSE PP.Size END AS SizeSortOrder, SUM(SD.OrderQty) AS Qty, Strona 3/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II SUM(SD.LineTotal) AS LineTotal FROM Sales.SalesPerson AS SP INNER JOIN Sales.SalesOrderHeader AS SOH ON SP.BusinessEntityID = SOH.SalesPersonID INNER JOIN Person.Person AS P ON P.BusinessEntityID = SP.BusinessEntityID INNER JOIN Sales.SalesOrderDetail AS SD ON SD.SalesOrderID = SOH.SalesOrderID INNER JOIN Production.Product AS PP ON SD.ProductID = PP.ProductID INNER JOIN Sales.SalesTerritory AS ST ON ST.TerritoryID = SP.TerritoryID INNER JOIN Production.ProductSubcategory AS PPS ON PP.ProductSubcategoryID = PPS.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PPC ON PPC.ProductCategoryID ProductCategoryID = PPS.ProductCategoryID GROUP BY PPC.Name, SOH.OrderDate, SOH.SalesOrderNumber, PPS.Name, PP.Name, SOH.SalesPersonID, P.LastName, P.FirstName, ST.[Group], ST.CountryRegionCode, ST.Name, PP.Color, PP.Size HAVING (DATEPART(yy,SOH.OrderDate) (DATEPART(yy,SOH.OrderDate) IN ('2003','2004') AND ST.[Group] = 'North America' AND LEFT(PPS.Name,1) IN ('C','T') AND LEFT(PPC.Name,1) = 'C') • Aby zobaczyć wyniki zapytania kliknij Run (!) W wyniku zapytania otrzymujemy dane z 18 pól siedmiu różnych tabel tabe bazy AdventureWorks2008. Dodatkowo dane o sprzedaży zostały odfiltrowane dla lat 2003 i 2004, oraz sprzedaży na terenie North America i dla Categories Clothing i Components oraz Subcategories zaczynających cię na literę C. • Zamknij wszystkie kreatory. 3. Dodanie odpowiednich pól do raportu macierzowego • Wybierz zakładkę Design. • W menu Toolbox, kliknij Matrix,, a następnie kliknij na pole na zakładce Design. • W Report Data rozwiń żródło danych Sales i przeciągnij pole Category do komórki macierzy jako wiersze (Rows). • Przeciągnij P pole Geography do komórki macierzy jako kolumny (Columns Columns). • Przeciągnij pole LineTotal do komórki macierzy jako dane (Data). ( 4. Dodanie zagnieżdżonych grup wierszy • Z panelu Report Data przeciągnij pole Subcategory na zakładkę Row Groups i upuść je poniżej pola Category. Strona 4/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II 5. Dodanie zagnieżdżonych grup kolumn • Z panelu Report Data przeciągnij pole CountryRegion na zakładkę Column Groups i upuść je poniżej pola Geography. Geography • 6. Dodanie sąsiadującej grupy kolumn • Z panelu Column Groups, kliknij Prawym klawiszem myszy Geography wybierz Add Group oraz Adjacent After. • Z rozwijanego menu Group by wybierz [Year] • Skopiuj powstałą komórkę [Sum(LineTotal)] do komórki w kolumnie [Year]. • Przejdź na zakładkę Preview i przeanalizuj raport. 7. Formatowanie wartości walutowych • Kliknij Prawym klawiszem myszy na komórkę [Sum(LineTotal)] i wybierz TextProperties TextProperties. • Kliknij Number, w Category wybierz Currency. • Kliknij OK. • Powtórz powyższe kroki dla drugiej komórki [Sum(LineTotal)]. 8. Dodanie sum dla wierszy, formatowanie nagłówków kolumn i wierszy • Kliknij prawym p klawiszem myszy na nagłówek kolumny [Year], [Year] wybierz AddTotal oraz After. AddTotal, • Zaznacz kolumny Category i SubCat (Kliknij na zaczep pierwszej kolumny i przeciągnij kursor na drugi zaczep) • Z menu Format wybierz Font Fo a następnie Bold • Powtórz 2 ostatnie kroki dla dwóch pierwszych wierszy, następnie nie odznaczaj ich tylko z menu Format wybierz Background Color i wybierz dowolny kolor tła. Jeżeli klikniesz link More Colours będziesz miał dostęp do listy kolorów wraz z ich nazwami. 9. Złączenie komórek w kolumnie oraz sformatowanie nagłówków • Kliknij komórkę z nagłówkiem [Year] i przeciągnij mysz o jedną komórkę niżej niżej. • Kliknij prawym klawiszem myszy na zaznaczonych komórkach i wybierz Merge Cells. • Kliknij prawym klawiszem myszy na złączonej komórce i wybierz Text Box Properties. • Kliknij Alignment,. • w Horizontal wybierz Centre. • W Vertical wybierz Middle. • Kliknij OK. • Powtórz powyższe kroki dla kolumny Total. Przejdź na zakładkę Preview i przeanalizuj raport. Co się zmieniło? Problem 2 (czas realizacji 15min) – kontynuacja problemu 1 Publikowanie raportu Strona 5/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II Zadanie Tok postępowania 1. Publikowanie raportu • W Solution Explorer kliknij prawym klawiszem myszy na stworzony projekt i wybierz Properties. • W TargetDataSource pozostaw wartość Data Sources • W TargetReportFolder pozostaw report • W Target ServerURL wpisz http://localhost/reportserver • Kliknij OK. • Zapisz projekt klikając ikonkę Save All. • W menu Build wybierz opcję Deploy report. • Otwórz przeglądarkę i jako adres wpisz http://localhost/reportserver. Kliknij na folder raportu aby go przejrzeć. Problem 3 (czas realizacji 15min) Dodanie wykresu kołowego do raportu Zadanie Tok postępowania 1. Zdefiniowanie źródła danych dla wykresu kołowego • W panelu Report Data, wybierz New oraz Data Source. • W Data Source Properities sprawdź czy zaznaczone jest Embedded connection i kliknij Edit • W Connection string wpisz : DataSource=localhost; Initial Catalog=AdventureWorks2008 • Kliknij OK. 2. Definiowanie danych dla raportu • W panelu Report Data, kliknij prawym klawiszem myszy na nowopowstałe źródło danych i wybierz Add Dataset. • W zapytaniu wpisz: SELECT FullName AS Name, [2002] AS SalesBeforeLast, [2003] AS SalesLastYear, [2004] AS SalesYTD FROM Sales.vSalesPersonSalesByFiscalYears AS vSalesPersonSalesByFiscalYears • Kliknij OK. 3. Dodanie wykresu kołowego do raportu • Na zakładce design usuń stworzony wcześniej raport • Z Toolbox’a przeciągnij element Chart na zakładkę Design. • Jako typ wykresy wybierz Pie a następnie wybierz pierwszy element z listy. • Kliknij na wykres aby pokazały się jego zaczepy. • Ze stworzonego w ostatnim kroku żródła danych przeciągnij pole Name na pole wykresu Category Fields • Ze stworzonego w ostatnim kroku źródła danych przeciągnij pole SalesYTD na pole wykresu data Fields Strona 6/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II • Przejdź na zakładkę Preview i przeanalizuj wykres. 4. Wyświetlenie wartości procentowych na wykresie • W zakładce Design kliknij prawym klawiszem myszy na wykres i wybierz Show Data Labels. • Kliknij prawym klawiszem myszy na dowolny label i Series Label Properties • Wybierz #PERCENT • Kliknij OK. • Przejdź na zakładkę Preview i przeanalizuj wykres. 5. Dodanie efektu rysowania do wykresu • Przejdź na zakładkę Design. • Kliknij na wykres kołowy i w oknie Properties rozwiń węzeł CustomAttibutes. • Ustaw PieDrawningStyle na SoftEdge. • Przejdź na zakładkę Preview i przeanalizuj wykres. Problem 4 (czas realizacji 15min) – kontynuacja problemu 3 Dodanie wykresu słupkowego do raportu Zadanie Tok postępowania 1. • W panelu Design usuń wykres kołowy. • Z Toolbox’a przeciągnij element Chart na zakładkę Design. • Jako typ wykresy wybierz Bar a następnie wybierz pierwszy element z listy. • Kliknij na wykres aby pokazały się jego zaczepy. • Ze stworzonego w poprzednim problemie żródła danych przeciągnij pole Name na pole wykresu Category Fields • Ze stworzonego w ostatnim kroku źródła danych przeciągnij pole SalesYTD oraz Last Year na oraz pole wykresu data Fields • Przejdź na zakładkę Preview i przeanalizuj wykres. 2. Wyświetlenie wszystkich sprzedawców na wykresie • Przejdź na zakładkę Design. • Kliknij prawym klawiszem myszy na oś y wykresu i wybierz Axis Properties. • Na zakładce Axis Options ustaw 1 w polu Interval. • Kliknij OK. • Przejdź na zakładkę Preview i przeanalizuj wykres. 3. Przeniesienie legendy na dół wykresu • • • • 4. Formatowanie wykresu • Przejdź na zakładkę Design. • Kliknij na Chart Title i zastąp tekst innym np.: SalesPerson YTD vs. Last Year. • Przejdź na zakładkę Design. • Kliknij prawym klawiszem myszy na osi X i wybierz Axis Properties. Przejdź na zakładkę Design. Kliknij prawym klawiszem myszy na legendzie. Kliknij Legend Properties. Dla pola Legend Position wybierz inną pozycję np.: opcję Middle bottom. • Przejdź na zakładkę Preview i przeanalizuj wykres. Strona 7/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II • W zakładce Number Format w Category wybierz Currency • Przejdź na zakładkę Preview i przeanalizuj wykres. 5. Wyświetlanie 5 najwyższych wartości wykresu • Przejdź na zakładkę Design. • Kliknij na wykres aby pokazały się jego zaczepy. • Kliknij prawym klawiszem myszy na pole Name i wybierz Category Group Properties. • Kliknij Filters oraz Add. • W polu Expression wstaw następujące wyrażenie: =Sum(Fields!SalesYTD.Value) • W liście Operators wybierz Top N. • W liście Value wpisz =5. • Przejdź na zakładkę Preview i przeanalizuj wykres. 6. Sortowanie nazwisk w porządku alfabetycznym • Przejdź na zakładkę Design. • Kliknij na wykres aby pokazały się jego zaczepy. • Kliknij prawym klawiszem myszy na pole Name i wybierz Category Group Properties. • Kliknij Sorting oraz Add. • W polu Sort by wybierz pole [Name]. • W polu Order wybierz Z to A. • Przejdź na zakładkę Preview i przeanalizuj wykres. Problem 5 (czas realizacji 25min) W kolejnym problemie będziemy zajmować się dodaniem raportu wielowymiarowego, a następnie konfiguracją – zmianą wyglądu, dodawaniem grup i podziałem na strony. Zadanie Tok postępowania 1. • W panelu Solution Explorer kliknij prawym klawiszem Reports, a następnie wybierz Add, New Report. • Zaznacz New data source, a następnie wpisz następujące wartości: — Name: AdventureWorksDW — Type: Microsoft SQL Server Analysis Services • Kliknij na przycisk Edit. • Jako Server name wpisz localhost, a następnie z listy rozwijanej Select or enter a database name wybierz bazę Adventure Works DW 2008. Strona 8/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II Rys. 2 Definiowanie nowego połączenia do bazy Analysis Services • Kliknij Test Connection • Kliknij OK. • Sprawdź, czy w Connection String pojawił się następujący tekst: Data Source=localhost;Initial Catalog="Adventure Works DW 2008" • Kliknij Next. • W oknie Design the Query kliknij przycisk QueryBuilder. • Kliknij na przycisk … obok nazwy kostki Adventure Works. Rys. 3 Aktywna perspektywa • Z listy kostek wybierz Finance i kliknij OK. Strona 9/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II Rys. 4 Lista kostek do wybrania w ramach bazy Należy zauważyć, że okno wyświetlające kostki, tak naprawdę może wyświetlać perspektywy lub kostki danych. Z punktu widzenia raportowania, perspektywa jest traktowana wana jako odrębna kostka z własnymi wymiarami i agregatami. • Przenieś agregat Measures do pola raportu. Rys. 5 Raport z wartościami sumarycznymi dla całej kostki • Przenieś poziom Organizations w wymiarze Organization na pole raportu. Rys. 6 Utworzony raport z agregatów dla kostki Finance dla różnych scenariuszy • Z wymiaru Date folderu Calendar przenieś poziom Calendar Year pomiędzy Scenario i kolumny agregatów. • Kliknij OK. • Sprawdź wygenerowane zapytanie: SELECT NON EMPTY { [Measures].[End of Day Rate], [Measures].[Average Rate], [Measures].[Amount] } ON COLUMNS, NON EMPTY { (DESCENDANTS([Organization].[Organizations].[Organization Level 01].ALLMEMBERS) * [Date].[Calendar Year].[Calendar Year].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, PARENT_UNIQUE_NAME, LEVEL_NUMBER ON ROWS FROM [Finance] CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS FONT_ Strona 10/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych • • • • • Moduł XIII Reporting Services II Kliknij Next. Zmień typ raportu z Tabular na Matrix. Kliknij Next. Next Przenieś Calendar_Year do Columns Przenieś Organizations do Rows. Przenieś Amount, Average_Rate, End_of_Day_Rate do Details. • Kliknij Next. Aktualnie możemy wybrać jeden z dostępnych szablonów formatu raportu. Kolory czcionek i elementy tabeli można ustawić w późniejszej fazie, po zaprojektowaniu zapytania. • Kliknij Next. • Zmień nazwę raportu na Finance by Years and Organizations. Organizations • Zaznacz Preview report i kliknij Finish. 2. Formatowanie raportu wielowymiaroweg o • Zapisz raport poprzez File -> Save All. • W oknie edycji raportu przełącz się na zakładkę Design. Design Rys. 7 Zakładki w widoku edycji raportu • Chwyć kolejno za prawy i dolny róg pola raportu i zwiększ zwi rozmiar około dwukrotnie. • Kliknij na puste pole w górnym lewym rogu raportu tak, aby się pokazały nagłówki kolumn i wierszy: Rys. 8 Zmiana rozmiaru i innych parametrów raportu • Zwiększ rozmiar poszczególnych kolumn. ko • Kliknij prawym przyciskiem myszy na polu zawierającym poziom Calendar Year i wybierz Text Box Properties. • W zakładce Fill zmień kolor na jasno zielony, w zakładce Border ustaw obramowanie na linie przerywane o grubości 1pt, w zakładce Font zmień wielkość wielkość czcionki na 12pt i kolor na jasnoszary. • Kliknij na zakładkę Preview aby sprawdzić, czy formatowanie raportu jest przejrzyste. 3. Dodawanie grup w raporcie • Otwórz okno Report Data (z menu górnego View -> Report Data). • W oknie Report Data kliknij prawym przyciskiem myszy na DataSet1 w AdventureWorksDW i wybierz Add Query Field. Rys. 9 Dodawanie nowego poziomu do źródła danych dla raportu • Przełącz się na zakładkę Query i kliknij przycisk Query Designer. Desi Strona 11/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II • Przenieś poziom Account Type z wymiaru Account na raport i kliknij OK. • Sprawdź czy utworzone zapytanie MDX zawiera poziom Account Type i kliknij OK. Powinien pojawić się błąd informujący, że nazwa jest niepoprawna, ponieważ nie może być pusta – należy ży przełączyć się na zakładkę Fields, ustawić się kursorem w ostatnim pustym polu i kliknąć przycisk Delete. Następnie kliknąć OK. Przy wyborze dodania nowego pola automatycznie dodaje się puste pole gotowe do wypełnienia. Nam jednak dużo wygodniej jest wybrać brać pole z graficznego interfejsu Query Designer. • W widoku edycji raportu kliknij prawym przyciskiem myszy na szare pole z lewej strony Organization i wybierz Add Group -> - Child Group. Rys. 10 Dodanie nowej grupy • W oknie Tablix group w pole Group by wybierz wartość [Account Type] i kliknij OK. • Dopasuj szerokość kolumn do szerokości raportu. • Kliknij na zakładkę Preview. 4. Podział na strony Wiersze są grupowanie zarówno po typach konta, jak i scenariuszach, można jeden den z tych poziomów ustawić jako poziom podziału strony. • Upewnij się, że przyciski Report są włączone – kliknij prawym przyciskiem myszy w pole koło pasków pod głównym menu i zaznacz Report Report. Rys. 11 Pasek narzędziowy wy z przyciskami do tworzenia i modyfikacji raportów • Upewnij się, że przycisk Group Window na pasku narzędziowym Report jest wciśnięty. Rys. 12 Wciśnięty przycisk Grouping Window • W dolnej części edycji raportu są dwie części: grupowanie wierszy i grupowanie kolumn. Kliknij prawym przyciskiem myszy na matrix1_Organizations i wybierz Group Properties. Properties Strona 12/13 Marcin Gorawski, Michał Jan Gorawski ITA-102 Hurtownie Danych Moduł XIII Reporting Services II Rys. 13 Zmiana parametrów grupowania • W zakładce Page Breaks zaznacz Between each instance of a group i Also at the start of a group. • Kliknij prawym przyciskiem myszy na puste pole i z kontekstowego menu wybierz Insert -> Page Header. W podobny sposób dodaj stopkę strony (Page Footer). • Z okna Report Data przeciągnij Account_Type do nagłówka strony. Uzupełnij informacje w polu edycyjnym o tekst przed i po wartości Account Type. • Według uznania uzupełnij informacje na stopce strony. • Przejdź na zakładkę Preview i sprawdź jak wygląda raport. • Opublikuj utworzony raport na stronę internetową za pomocą opcji Deploy dla projektu. Laboratorium rozszerzone . Zadanie 1 (czas wykonania: 10min) Dla kostki Finance utwórz raport zawierający agregat Amount w zależności od roku, miesiąca (oś X), a także departamentów (oś Y). Opublikuj raport na stronie WWW. Zadanie 2 (czas wykonania: 10min) Dla kostki Sales Summary utwórz raporty dotyczące typu produktu, produktu, kanału sprzedaży, kategorii i typu promocji oraz daty. Raporty utwórz w kilku konfiguracjach – z podziałami stron i z różnymi agregatami na każdym raporcie. Opublikuj raporty na stronie WWW. Zadanie 3 (czas wykonania: 25min) Dla kostki Direct Sales utwórz raport z różnymi poziomami dotyczącymi klienta w hierarchii Customer Geography (Country, State-Province, City, Postal Code, FullName) na osi Y, a także kategorią produktu na osi X. Podział strony utwórz wg kraju klienta. Wyświetlone powinny być agregaty: Average Rate, End of Day Rate, Customer Count, Internet Order Count. Do raportu użyj kolorów w tonacji jasnoniebieskiej, dodaj dowolny rysunek w prawym górnym rogu raportu. Na każdą stronę raportu w prawym dolnym rogu wstaw wykres słupkowy dotyczący Internet Order Count w zależności od kraju klienta i kategorii produktu. Opublikuj raport na stronie WWW. Strona 13/13