34
© 2014 Profinit. All rights reserved. Dimenzionální modelování RNDr. Ondřej Zýka [email protected]

ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved.

Dimenzionální modelování

RNDr. Ondřej Zýka [email protected]

Page 2: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 2

Dimenzionální modelování

o Ralph Kimball (1997)

– Primárně modely pro datové sklady a analýzy

– Silně denormalizovaný model

o Modely

– Pochopitelné pro netechnicky orientované uživatele

– Snadno rozšiřitelné

– Orientované na analytické dotazy

– Podporované datovými servery a analytickými nástroji (OLAP)

o Schopnost reportovat z extrémního objemu dat

o Minimum update – pouze přidávání dat

o Požadavek neměnící se historie

o Technologie „neumí“ současný update a select

Page 3: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 3

Příklad

Page 4: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 4

Standardní dotaz

select SUM(qty) from

F_SALES,D_TIME,D_TITLES,D_STORES,D_AUTHORS

where

F_SALES.TITLES_KEY = D_TITLES.TITLES_KEY

and F_SALES.STORES_KEY = D_STORES.STORES_KEY

and F_SALES.AUTHOR_KEY = D_AUTHOR.AUTHOR_KEY

and F_SALES.DATE_KEY = D_DATE. DATE_KEY

and podminky na D_TITLES

and podminky na D_STORES

and podminky na D_AUTHORS

and podminky na D_DATE

group by

pozadovana granularita vysledku

Page 5: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 5

Star schéma

Grocery Transaction

Store Number

Transaction Date

Customer

Product

Quantity

Amount

Customer

Customer

From Date

To Date

First Name

Last Name

Address 1

Address 2

Address 3

City

State

Country

Postal Code

Time

Transaction Date

Store

Store Number

Store Name

City

State

Country

Telephone

Product

Product

Description

Category

Dimenze

Fakta

Page 6: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 6

Snowflake schéma

Grocery Transaction

Store Number

Transaction Date

Customer

Product

Quantity

Amount

Customer

Customer

First Name

Last Name

Address 1

Address 2

Address 3

City

State

Country

Postal Code

Customer Category

Time

Transaction Date

Store

Store Number

Store Name

City

State

Country

Telephone

Region

Product

Product

Description

Category

Product Category

Product Category

Description

Region

Region

Description

Sales Period

Period Identifier

Sales Period

From Date

To Date

Customer Category

Category

Customer Category

Page 7: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 7

Snowflake model

o Výhody

– Minimální redundance dat v rámci dimenzí

– Úspora místa v databázi

– Větší flexibilita pro modelování

– Užitečný pro dimenze se složitou strukturou

o Nevýhody

– Složitější konstrukce dotazů, mnoho joinů

– Nižší výkonnost

– Komplikovaný snowflake model může odradit uživatele od přímého přístupu k datům

• uživatelské nástroje zpravidla

zavádějí sémantickou vrstvu, která

uživatele odstíní od datového

modelu

– Možný konflikt s bitmapovými indexy

– Úspora místa je většinou převážena nižší výkonností a složitější administrací

Page 8: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 8

Constellation schéma

Grocery Transaction

Store Number

Transaction Date

Customer

Product

Purchase Quantity

Amount

Customer

Customer

First Name

Last Name

Address 1

Address 2

Address 3

City

State

Country

Postal Code

Customer Category

Time

Transaction Date

Store

Store Number

Store Name

City

State

Country

Telephone

Region

Product

Product

Description

Category

Product Line

Product Purchases

Product

Purchase Date

Supplying Vendor

Purchase Order

Unit Quantity

Purchase Cost

Vendor

Vendor

Vendor Name

Address 1

Address 2

Address 3

City

State

Country

Postal Code

Product Inventory

Product

Warehouse Location

Quantity On Hand

Quantity Back Ordered

Warehouse

Warehouse

Address 1

Address 2

Address 3

City

State

Country

Postal Code

Page 9: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 9

Snowstorm schéma

Grocery Transaction

Store Number

Transaction Date

Customer

Product

Purchase Quantity

Amount

Customer

Customer

First Name

Last Name

Address 1

Address 2

Address 3

City

State

Country

Postal Code

Customer Category

Time

Transaction Date

Store

Store Number

Store Name

City

State

Country

Telephone

Region

Product

Product

Description

Category

Product Line

Product Category

Product Category

Description

Region

Region

Description

Sales Period

Period Identifier

Sales Period

From Date

To Date

Customer Category

Category

Customer Category

Promotion Period

Promotion Id

Promotion

From Date

To Date

Product Line

Product Line ID

Description

Product Purchases

Product

Purchase Date

Supplying Vendor

Purchase Order

Unit Quantity

Purchase Cost

Vendor

Vendor

Vendor Name

Address 1

Address 2

Address 3

City

State

Country

Postal Code

Product Inventory

Product

Warehouse Location

Quantity On Hand

Quantity Back Ordered

Warehouse

Warehouse

Address 1

Address 2

Address 3

City

State

Country

Postal Code

Page 10: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 10

Postup návrhu modelu

1. Výběr sledovaných procesů

2. Určení granularity

3. Určení dimenzí

4. Určení metrik

5. Definice získávání dat (ETL)

Page 11: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 11

Výběr sledovaných procesů

o Seznam procesů, které chceme analyzovat

– Od jednodušších ke složitějším

o Bus matrix

– Matice: Business procesy x Dimenze

o Často odpovídá jeden business proces ≈ jeden datamart

Page 12: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 12

Bus matrix

Da

te

Cu

sto

me

r

Se

rvic

e

Ra

te C

ate

go

ry

Lo

ca

l S

vc P

rovid

er

Ca

llin

g P

art

y

Call

ed

Part

y

Lo

ng

Dis

t P

rovid

er

Inte

rna

l

Org

an

iza

tio

n

Em

plo

ye

e

Lo

ca

tio

n

Eq

uip

me

nt

Typ

e

Su

pp

lie

r

Item

Sh

ipp

ed

We

ath

er

Ac

co

un

t s

tatu

s

Custommer Billing × × × × × × × × Service Orders × × × × × × × × × × × Trouble Reports × × × × × × × × × × × × × × Yellow Page Ads × × × × × × × × Customer Inquiries × × × × × × × × × × × × Promotion × × × × × × × × × × × × × × Billing Call Detail × × × × × × × × × × × × × × × Network Call Detail × × × × × × × × × × × × × × × Customer Inventory × × × × × × × × × × × × Network Inventory × × × × × × × × Real eastate × × × × × Labor & Payroll × × × × Computer Charges × × × × × × × × × × × Purchase Orders × × × × × × × Supplier Deliverables × × × × × × ×

Page 13: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 13

Buss matrix

Page 14: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 14

Bus architektura a schéma - příklad

Page 15: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 15

Určení granularity

o Všechny řádky musí mít stejnou granularitu

o Granularita malá

– Jeden řádek ≈ jedno měření

– Velký objem dat

o Granularita velká

– Malé databáze

– Omezená možnost analýz

o Hodnoty odpovídají průniku všech dimenzí

o Někdy potřeba realokace dat na několik řádek

o Řádky s hodnotou nula se nazapisují

Page 16: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 16

Fact tables

o Transaction - co řádek to transakce (například obchody)

– Proces může obsahovat více typů transakcí, rozhodnutí zda jedna nebo více tabulek není jednoduché

o Snapshots - každý den se udělá celý snímek

– State model – celé denní snímky

– Event model – každý den pouze změněné záznamy

– Možnost dopočítání dalších hodnot ke každému snímku

o Akumulujíce se shapshoty (sklad)

– Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

– Do daného řádku se doplní datum expedice, fakturace, dodání, vyúčtování, …

– Pozor - update v tabulce faktů

o (Fact tables bez faktů – slouží jako n:n vazba mezi dimenzemi)

Page 17: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 17

Fact tables

o Fakta

– aditivní - počet, cena v transakčních fact tabulkách

• Význam pro všaechny dimenze

• Nejlépe se s nimi pracuje

• Cílem je převést na aditivní fakta maximum

• Discount -> ceníková cena, prodejní cena

– semiaditivní - počet cena v snapshot tabulkách

• součet za produkty má význam, za čas nemá význam

• Obecně význam pouze pro některé dimenze

– nonadditive - procentuální profit

• Často text

• Někdy možné přenést do dimenzí (degenerované dimenze)

o Factless fact table – pouze cizí klíče, žádná fakta

– Příznak existence (účast v kampani)

Page 18: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 18

Určení dimenzí

o Konformní dimenze

– Jedna nejpodrobnější dimenze, ostatní jsou jejich agregací

– Jednotné dimenze pro všechny business procesy

o Struktura

– Jeden sloupec primárního klíče

– Hodně sloupců popisů, často přes 30, čím více tím lépe

– Atributy spíše textové (srozumitelnost)

– Hierarchie pro analýzy

o Časová dimenze

o Degenerovaná dimenze – nemá popis (číslo faktury)

o Dimenze jsou denormalizované (jedna široká tabulka)

– Normalizace – vločkové schéma

o Řádek s hodnotu „Not applicable“, „Uknown“

Page 19: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 19

Časová dimenze

o V každém datovém skladu

o Často mnoho hierarchií

– Provozní rok

– Fiskální rok

– Kalendářní rok

o Mnoho sloupců

– Textová informace

– Číselná informace

– Konce a začátky období

– …

Page 20: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 20

Časová dimenze

Page 21: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 21

Dimensions

o Schéma a instance dimenze lokace o Použití srozumitelných dat, texty

o Často odvozeno z jiných zdrojů (i externích)

o Redundance dat je pouze v dimenzích (nikoliv ve faktových tabulkách)

o Umožňuje vybírat a agregovat data po úrovních

o Hierarchie by měli mít konstatní hloubku

– (nedoplňovat regiony jenom někde)

o Hierarchie jsou obsaženy v metadatech o dimenzích

Page 22: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved.

Hierarchie

o Popis jak agregovat hodnoty

jedné dimenze

o Může existovat několik

nezávislých hierarchií na jedné

dimenzi

o Drill-down podle dimenzí

o Dimenze času

o Nejmenší granularita – den

o 6 nezávislých dimenzí

Page 23: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 23

Typy dimenzí

o Konformní

– Pro celý podnik

– Ostatní dimenze jako podimenze konformních dimenzí

o Minidimenze a sběrné dimenze

– Číselníky

– Stavové a textové atributy

– Možné sloučit do sběrných dimenzí

o Degenerované dimenze

– Přímo v tabulce faktů (číslo objednávky)

Page 24: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 24

Typy dimenzí z pohledu změn

o Statické

– Žádné ošetření změn

– V případě změny se přepíše starý záznam

– Žádná historie

o Rostoucí dimenze

– Přidávají se nové záznamy

– V případě změny se přepíše starý záznam

– Žádná historie

o Rychle rostoucí diimenze

– Nutné speciální řešení

– Oddělení rychle se měnících atributů do vlastní dimenze

– (Jako Slowly changed dimension Type 2)

o Slowly changing dimenze

Page 25: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 25

Slowly changing dimension

o Typ 1 – přepis hodnot

– Žádná historie

o Typ 2 – přidávání řádků, vždy jeden platný

– Přidané pole“ Begin date, End date, Eff date key, Change reason text, Current flag

– Kompletní historie

o Typ 3 – alternativní realita vice možností v jeden čas

– Přidání nových záznamů uchování současné a předchozí hodnoty v případě změny

o Redundance nebývá problém

– Dimenze zabírají cca 5% místa v DWH

Page 26: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 26

Dimensionální model ve zkratce

o Fact tables – fakta (metriky) a cizí klíče z dimenzí

o Dimension tables – jeden sloupec primárního klíče a mnoho popisných sloupců

o Star schéma

o Další speciální tabulky

Page 27: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 27

Příklad

o Fakta

– Počet prodaných knih

– Cena za prodané knihy

o Dimenze

– Knihy

– Obchody

– Čas

o Hierarchie

– Knihy

• Kniha – typy knih – vše

– Čas

• Den – kalendářní měsíc – kalendářní kvartál – kalendářní rok – celá historie

– Obchody

• Obchod – hierarchická struktura podle ústředí – vše

Page 28: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 28

Další témata

o Údržba modelu

o Přidělování klíčů

o Vazba mezi identifikací ve vstupních datech a primárními klíči

o Datová kvalita

o Agregace

o Vstupní data – snapshots nebo events

Page 29: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 29

OLAP technologie

o Uložení a zpracování dat podporující určité druhy analýz

– parameterized static reporting

– slicing and dicing with drill down

– ‘what if?’ analysis

– goal seeking models

o Způsob uložení předpočítaných hodnot (denormalizace)

– Uložení agregovaných hodnot vyžadovaných analýzami podle zadaných

• Metrik

• Dimenzí

• Hierarchií na dimenzích

Page 30: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved.

OLAP technologie

o Uložení a zpracování dat podporující určité druhy analýz

– parameterized static reporting

– slicing and dicing with drill down

– ‘what if?’ analysis

– goal seeking models

o Způsob uložení předpočítaných hodnot (denormalizace)

– Uložení agregovaných hodnot vyžadovaných analýzami podle zadaných

• Metrik

• Dimenzí

• Hierarchií na dimenzích

Page 31: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 31

Multidimenzionální databáze

o Nutné rozlišit

– Princip

• Práce s dimenzemi

• Práce s hierarchiemi

– Skutečný způsob uložení dat

• Relační model

• Speciální úložiště se speciálními indexy

o Kategorizace dle místa uložení dat a agregací

– MOLAP– veškerá data uložená v multidimenzionální databázi

– ROLAP – veškerá data uložená v relační

– HOLAP – hybrid

o Další typy

– RTOLAP – real time, data pouze v RAM

– DOLAP – desktop OLAP, data uložená na klientském počítači

Page 32: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 32

Příklady dodavatelů OLAP serverů

o MS Analysis Services

o IBM Cognos

o Oracle OLAP option

o Hyperion Essbase

o Business Objects

o MicroStrategy

o SAS

Page 33: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved. 33

Co si zapamatovat

o K čemu slouží dimenzionální datové modely

o Jaké jsou hlavní rozdíly relačního a dimenzionálního modelování

o Jaké jsou rozdíly mezi modely typu hvězda, souhvězdí, vločka nebo sněhová

bouře

o Jaký je doporučený postup při návrhu dimenzionálního modelu

o Co to je Buss Matrix, k čemu slouží

o Jaké typy faktových tabulek se používají

o Co to je aditivní, semiaditivní a neaditivní metrika

o Jaké typy dimenzí se používají

o Co to je "Slowly changing dimension of type 2"

o Co to je OLAP databáze

Page 34: ondrej.zyka@profinit€¦ · o Akumulujíce se shapshoty (sklad) – Id výrobku jako primární klíč a doplňují/updatují se hodnoty pro události popisující životní cyklus

© 2014 Profinit. All rights reserved.

Diskuse