background image

1

Hurtownie danych

http://zajecia.jakubw.pl/hur

Projektowanie hurtowni: 
modele wielowymiarowe.

Modelowanie punktowe.

Operacje OLAP na kostkach.

UZASADNIENIE BIZNESOWE

Po co nam hurtownia danych? Jakie mogą być efekty analiz?

- Wzrost sprzedaży, zwiększenie udziału w rynku itp.

- Środek: analiza zachowania klientów, lokalizacja słabych 
punktów, śledzenie trendów.

- Narzędzie: analiza gromadzonych danych (rozproszonych, 
niejednorodnych) - budowa hurtowni danych.

Jakimi danymi dysponujemy? 
Które dane powinniśmy gromadzić w hurtowni?
Ze względów technicznych gromadzimy tylko to, co niezbędne.

background image

2

Ekstrakcja, 

czyszczenie, 

integracja

DECYZJE PROJEKTOWE:

perspektywa pojęciowa

Hurtownia

Źródła danych

Model pojęciowy: związki między 
pojęciami związanymi z działalnością
przedsiębiorstwa, np.:
- Kto to jest „klient” i co o nim wiemy?
- Jak opisywana jest sprzedaż w 
różnych oddziałach firmy?
- Co pod pojęciem „fakt sprzedaży”
chciałby rozumieć analityk?

- Czy model wielowymiarowy danych 
może nam pomóc w tworzeniu 
raportów biznesowych?

MODEL WIELOWYMIAROWY

Baza zawiera fakty opisane przez wymiary i określające wartość miar.

Fakt - pojedyncze zdarzenie będące podstawą analiz (np. sprzedaż).
Fakty opisane są przez wymiary i miary.

Wymiar - cecha opisująca dany fakt, pozwalająca powiązać go z 
innymi pojęciami modelu przedsiębiorstwa (np. klient, data, miejsce, 
produkt). Wymiary są opisane atrybutami.

Atrybut - cecha wymiaru, przechowująca dodatkowe informacje na 
temat faktu (np. wymiar data może mieć atrybuty: miesiąc, kwartał, 
rok; wymiar klient może mieć atrybuty: nazwisko, region).

Miara - wartość liczbowa przyporządkowana do danego faktu 
(np. wartość sprzedaży, liczba sztuk).

background image

3

MODEL GWIAZDY

Fakty i wymiary są często w systemach relacyjnych modelowane 
w postaci gwiazdy.

Sprzedaż

id_klienta
id_daty
id_produktu
id_sklepu

ilość
kwota

Klient

id_klienta
nazwisko
adres
grupa_kl

Data

id_daty
miesiąc
kwartał
rok

Produkt

id_produktu
grupa_prod
opis
data_wprowadzenia
marka
producent

Sklep

id_sklepu
miasto
region
kierownik
telefon

Miary

Uwaga: nie wszystkie informacje będą potrzebne - część można pominąć

Tablica faktów

Tablice 
wymiarów

Atrybuty

MODEL PŁATKA ŚNIEGU

Normalizacja schematu gwiazdy poprzez modelowanie atrybutów 
za pomocą kolejnych tablic prowadzi do modelu płatka śniegu.

Sprzedaż

id_klienta
id_daty
id_produktu
id_sklepu

ilość
kwota

Produkt

id_produktu
id_grupy_prod
id_marki
data_wprowadzenia

Sklep

id_sklepu
id_miasta

Uwaga: model płatka śniegu odtwarza hierarchię wymiarów.

Tablica faktów

Tablice 
wymiarów

Miasto

id_miasta
id_regionu
nazwa

Region

id_regionu
nazwa

Producent

id_producenta
nazwa_producenta
kraj_producenta

Grupa_prod

id_grupy_prod
nazwa_grupy_prod

Marka

id_marki
id_producenta
nazwa_marki

background image

4

AGREGACJE

Agregacje to operacje zamieniające zbiór wartości (przeważnie 
liczbowych) miar opisujących fakty, na pojedynczą wartość.

Podstawowa operacja tworząca kostki danych.

Przykłady:
• Suma
• Liczba rekordów
• Średnia
• Minimum, maksimum, mediana
• Dodatkowy warunek (np. HAVING)
• Specjalne (stored procedures)

SELECT  miesiąc, SUM(kwota) FROM tablica_faktów
GROUP BY  miesiąc  HAVING SUM(kwota)>500

KOSTKI DANYCH

230$

Dane (np. schemat gwiazdy)

Kostka danych: tabela, w której 
krawędziami są wymiary, a 
zawartością komórek – miary.

Zawartość komórki:
zagregowana miara

klient

czas

produkt

Kostka wielowymiarowa danych

background image

5

KOSTKI DANYCH

sprzedaż

wartość

czas

produkt

sklep

miasto

skl_1

skl_2

skl_3

suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1

miasto_2

skl_1

skl_2

skl_3

suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1

miasto_2

skl_1

skl_2

skl_3

suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1

miasto_2

skl_1

skl_2

skl_3

suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1

miasto_2

skl_1

skl_2

skl_3

suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1

miasto_2

Komórki zawierają zagregowane (po 

wymiarach) wartości miar

Nagłówki wierszy i kolumn 

kostki zawierają wartości 

wymiarów (atrybutów)

cza

s

W kostkach bywają też przechowywane 
pomocnicze podsumowania

MODEL PUNKTOWY

Przed stworzeniem logicznego modelu danych (gwiazda, płatek 
śniegu) należy uzgodnić model pojęciowy.
Przykładowa technika modelowania: model punktowy.

Sprzedaż

- Fakty reprezentowane są punktami

Region

Czas

Towar

- Wymiary reprezentowane są
przez nazwy

Kwartał

Grupa towarów

- Podobnie reprezentujemy kolejne 
poziomy hierarchii

Dostawa do 

magazynu

Magazyn

Transport

- Model może obejmować wiele 
(konstelację) faktów, 
korzystających częściowo ze 
wspólnej hierarchii wymiarów

background image

6

MODEL PUNKTOWY

W modelu punktowym zapisujemy ponadto informacje na temat:

- Nazw atrybutów
- Typów danych
- Więzów integralności
- Retrospekcji (zmienności wartości atrybutów w czasie)
- Częstości odświeżania
- Pochodzenia danych (źródło, transformacje)
- Metadanych biznesowych

Retrospekcja może być:

-„prawdziwa” – zapisujemy wszelkie zmiany wartości wraz z 
dokładnym czasem
- „fałszywa” – nowe wartości zastępują stare
- „trwała” – nie przewidujemy zmiany wartości.

POZIOMY AGREGACJI DANYCH

Nie zawsze potrzebujemy danych 
opisanych z pełną dostępną
dokładnością. 

Agregacja wartości może dotyczyć pomijania pewnych wymiarów 
lub atrybutów w hierarchii.
Hurtownia danych (lub hurtownie tematyczne) mogą przechowywać
zmaterializowane podkostki danych i korzystać z nich podczas analiz.

background image

7

PRZYKŁAD: POZIOMY AGREGACJI

Dane: fakty sprzedaży (50 mln. rekordów, miara: wartość), klienci
identyfikowani kodem pocztowym (3000 różnych kodów), towary (60 grup, 800 
nazw indywidualnych), czas: 3 lata (1000 dni), sklepy (18 sztuk).

- Model gwiazdy: tablice z (łącznie) trochę ponad 50 mln. rekordów.

- Kostka danych: 3000*800*1000*18 = 43 200 000 000 komórek.

Wersja zagregowana: ignorujemy wymiar klientów, towary 
rozpatrujemy tylko w grupach, czas rozpatrujemy w skali miesięcy.

- Kostka danych: 60*36*18 = 38 880 komórek (sumy wartości).

Powyższa agregacja nie pozwala na wygenerowanie wszystkich tych raportów, 
które mogły by tworzone oryginalnie, ale za to dla pozostałych raportów może 
działać o 3 rzędy wielkości szybciej.

OPTYMALIZACJA AGREGACJI

Problem: Które wymiary możemy pominąć? Jak agregować dane 
(sum, min, max, avg, count)? Które atrybuty hierarchii agregujemy, 
a które pozostawiamy? Ile powinno powstać zmaterializowanych 
kostek pomocniczych? Jak optymalnie obliczać konkretne 
zapytanie?
Cel: np. minimalizacja średniego czasu przetwarzania zadawanych 
w praktyce zapytań OLAP.

czas, klient, towar, sklep

czas, klient, towar

czas, klient, sklep

czas, towar, sklep

klient, towar, sklep

czas, klient

towar, sklep

klient, towar

czas, sklep

czas

klient, sklep

sklep

czas, towar

towar

klient

Zwykle nie możemy zmaterializować wszystkich podkostek, musimy wybrać takie, z 
których później najłatwiej będzie generować raporty.

gwiazda

kostka

background image

8

NAWIGATOR PO AGREGACJACH

Skąd wiadomo, które zapytania są często wykonywane?

Nawigator po 
agregacjach

Informacje o zadawanych zapytaniach OLAP są gromadzone jako metadane w 
specjalnej bazie (repozytorium). Mogą być wykorzystane do optymalizacji zapytań
(np. materializacji niektórych agregacji). Metadane hurtowni zawierają też wiele 
innych informacji, np. opis pojęciowy i logiczny danych, informacje o źródłach i 
ich integracji, dziennik aktualizacji itd.

NAWIGATOR PO AGREGACJACH

Nawigator po agregacjach wspomaga też przeglądanie danych i 
przygotowywanie raportów. Programy z tej rodziny zapewniają
wygodny wgląd w wielowymiarowy model danych.

Nawigator po 
agregacjach

skl_1 skl_2 skl_3 suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1 miasto_2

Raport

background image

9

NAWIGACJA PO AGREGACJACH

Najczęściej wykonywane operacje OLAP - terminologia:

Agregacja, konsolidacja, zwijanie 

(aggregation, consolidation, roll-up)

dni

miesiące

- przejście na bardziej ogólny poziom 

wymiaru,

- wybór operacji agregującej (np. suma, 

średnia, zestawienie procentowe).

Rozwijanie

(roll-down, drill-down, drill through)

- operacja odwrotna do agregacji: 

przeglądanie szczegółowych danych 
dotyczących danego podsumowania

sprzedaż w regionach

poszczególne sklepy

NAWIGACJA PO AGREGACJACH

Najczęściej wykonywane operacje OLAP - terminologia:

Selekcja

(slicing)

- wycinanie fragmentu danych poprzez określenie warunków na 

wartościach wymiarów,

- wynikiem jest podkostka, np. dwuwymiarowy plaster (slice), 

odpowiadająca danym spełniającym warunki.

skl_1 skl_2 skl_3 suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1 miasto_2

skl_1 skl_2 skl_3 suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1 miasto_2

skl_1 skl_2 skl_3 suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1 miasto_2

skl_1 skl_2 skl_3 suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1 miasto_2

skl_1 skl_2 skl_3 suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1 miasto_2

skl_1 skl_2 skl_3 suma

...

...

...

...

...

...

3

12

70

0

9

23

7

2

12

0

15

1

0

8

5

...

...

...

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1 miasto_2

warunek:
data = ....

background image

10

NAWIGACJA PO AGREGACJACH

Najczęściej wykonywane operacje OLAP - terminologia:

Filtrowanie

(screening, selection, filtering)

- filtrowanie danych wchodzących w skład agregacji, np. poprzez 

ograniczenie wartości miar lub atrybutów wymiarów

skl_1 skl_2 skl_3 suma

89

23

395

122

13

642

27

12

50

0

0

23

146

237

12

76

45

1

0

8

5

249

302

91

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1 miasto_2

skl_1

-

skl_3 suma

...

...

...

...

...

...

3

-

70

0

-

23

7

-

12

0

-

1

0

-

5

...

-

...

prod_1

prod_2

prod_3

prod_4

prod_5

suma

miasto_1 miasto_2

warunek:
tylko sklepy mające 
obrót powyżej 4 mln.
oraz
sumujemy tylko fakty 
sprzedaży o wartości 
powyżej 20.

NAWIGACJA PO AGREGACJACH

Najczęściej wykonywane operacje OLAP - terminologia:

Zawężanie

(scoping)

- ograniczenie danych branych pod uwagę w dalszej analizie,
- podobne do filtrowania, jednak realizowane na wcześniejszym 

poziomie operacyjnym,

- działa jak automatyczne dodanie warunków do wszystkich 

dalszych operacji na kostkach danych.

warunek:
tylko sklepy mające obrót powyżej 4 mln.
oraz
tylko pierwsze dwa kwartały 2000 roku

background image

11

NAWIGACJA PO AGREGACJACH

Najczęściej wykonywane operacje OLAP - terminologia:

Obracanie

(pivot, rotate)

- zamiana miejscami kolumn i wierszy tabeli,
- przeniesienie pewnego wymiaru z kolumn do wierszy 

(lub odwrotnie),

- zamiana pewnego wymiaru (lub atrybutu) na inny, 

nieużywany.

skl_1

skl_2

skl_1

27

12

92

0

0

23

146

237

12

76

45

7

0

8

5

...

...

...

prod_1

prod_2

prod_3

prod_4

prod_5

suma

2002

2003

skl_1

50

21

12

1

0

...

skl_1

skl_2

27

12

0

0

146

237

76

45

0

8

...

...

prod_1

prod_2

prod_3

prod_4

prod_5

suma

92

50

23

21

12

12

7

1

5

0

prod_1

prod_2

prod_3

prod_4

prod_5

2002

2003