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

Podobne dokumenty