Datové sklady a BI aplikace

150
Datové sklady a BI aplikace MFF – část 2 Říjen 2004 Ing. David Pirkl

description

Datové sklady a BI aplikace. MFF – část 2. Říjen 2004 Ing. David Pirkl. 3. Přednáška. Téma. Dimenzionální modelování. Agenda BDLC. Plán projektu a projektový management Business požadavky Dimenzionální modelování Architektura Fyzický design ETL Uživatelské aplikace Nasazení - PowerPoint PPT Presentation

Transcript of Datové sklady a BI aplikace

Page 1: Datové sklady a BI aplikace

Datové sklady a BI aplikace

MFF – část 2

Říjen 2004

Ing. David Pirkl

Page 2: Datové sklady a BI aplikace

3. Přednáška

Page 3: Datové sklady a BI aplikace

Téma

Dimenzionální modelování

Page 4: Datové sklady a BI aplikace

Agenda BDLC

Plán projektu a projektový management Business požadavky Dimenzionální modelování Architektura Fyzický design ETL Uživatelské aplikace Nasazení Správa a růst DW

Projektový management

Projektový plán

Definice

uživatelských

požadavků

Technická architektura

Výběr produktůinstalace

Dimensionální modelování

Fyzická úroveň

ETL procesy Nasazení

Údržba a růst

Uživatelské aplikace

specifikace

Uživatelské aplikace

vývoj

Projektový managementProjektový management

Projektový plán

Definice

uživatelských

požadavků

Technická architektura

Výběr produktůinstalace

Dimensionální modelování

Fyzická úroveň

ETL procesy Nasazení

Údržba a růst

Uživatelské aplikace

specifikace

Uživatelské aplikace

vývoj

Page 5: Datové sklady a BI aplikace

Dimenzionální modelování

Dimenzionální modelování je rozdílné od klasického ERD datového modelování

ERD Normalizace Odstranění redundantnosti Málo srozumitelné člověku Optimalizován na vkládáni dat a update

Dimensionální modelování Důraz na srozumitelnost pro uživatele Dosaženo standardní strukturou – fakta a dimenze Základní přístup – denormalizace, redundance Optimalizován na vyhledávání dat a složité analýzy Základy položeny v 60. tých letech (General Mills and Dartmount

University, Nielson Marketing Research)

Page 6: Datové sklady a BI aplikace

Dimenzionální modelování

Výhody dimenzionálního modelu Standardní – navazují na to OLAP aplikace, tvůrci

reportingových aplikací, … Dobře rozšiřitelný (bez dopadu na aplikace)

Přidání nových fakt se stejnou granualitou Přidání dimenze Přidání atributu dimenze

Standardní způsoby modelování reálných problémů SCD Sledování událostí (Factless fact table) Heterogenní produkty …

Page 7: Datové sklady a BI aplikace

Dimenzionální modelování

Základní přístup k modelování dat v datovém skladě Oproti klasickému relačnímu modelu dochází k

denormalizaci Proč dimenzionální modelování:

Přehledné, uživatelsky pochopitelné Důraz na obchodní logiku Denormalizace

Menší počet tabulek, spojení Rychlejší odezva Většina údajů v jedné tabulce Indexy

Page 8: Datové sklady a BI aplikace

Dimenzionální modelování

Základní myšlenka multidimenzionálního modelování

Prodej

Rok

Typproduktu

Region

Kategorieproduktu

Kvartál

Produkt

3 dimenze

Granualita

Page 9: Datové sklady a BI aplikace

Základní typy tabulek

V datovém skladě se vyskytují dva hlavní typy tabulek: Faktové tabulky Dimenzionální tabulky

Page 10: Datové sklady a BI aplikace

Dimensionální modelování

Nejužitečnější fakta – jsou často numerická a aditivní

Dimenze tvoří vstupní bod do DW Omezení v dotazech Hlavičky řádků v reportech

Page 11: Datové sklady a BI aplikace

Dimensionální tabulky

Dimensionální tabulky zachycují úhel pohledu na sledované ukazatele

Představují vlastně „číselníky“ Typické dimenze jsou:

Čas Zákazník Produkt Prodejna Smlouva

Page 12: Datové sklady a BI aplikace

Dimensionální tabulky

Atributy v dimenzi: Textové hodnoty (nebo se

chovají jako textové) Diskrétní Slouží pro definici omezení

a agregace v výstupech

K výstupům lze využít všechny atributy dimenzí Jednoduché SQL (Select

…group by…order by) Month BrandDollarsSold

Unitssold

Jan Doodads 150 57

Jan Widgets 75 51

Feb Doodads 140 32

Feb Widgets 68 44

Grouping column Additive facts

Sales fact table

Time

Product

Store

Dollar_sold

Units_sold

Dollars_cost

Dimension

Time

Day

Month

Fiscal

Dimension

Store

Name

Location

Type

Dimension

Product

Description

Brand

Category

Flavor

Drag

Drag

Page 13: Datové sklady a BI aplikace

Dimenzionální tabulky

Každá dimenzionální tabulka obsahuje jeden jednoznačný identifikátor a popisné atributy

Dimenzionální tabulka je denormalizovaná

D_CAS

ID_Cas (*)

Datum

Rok

Kvartal

Mesic

Den

Víkend

D_Zakazník

ID_Zakaznik (*)

Jmeno

Pohlavi

Rok narozeni

Země

Kraj

Okres

Obec

D_Produkt

ID_Produkt (*)

Nazev

Kategorie

Subkategorie

Page 14: Datové sklady a BI aplikace

Dimensionální tabulky

Atributy v dimenzi: Hierarchické (kategorie –

subkategorie – produkt) Nehierarchické

(barva_produktu)

Výstupy většinou kombinují oba typy atributů

Muže existovat i více hierarchií

Product dimension

Product key

Description

Marketing brand

Marketing subcategory

Marketing category

Financial brand

Financial subcategory

Financial category

Flavour

Package type

Hierarchie 1

Hierarchie 2

Atributy vžádnéhierarchii

Page 15: Datové sklady a BI aplikace

Hierarchie v dimenzi

Dimenzionální tabulka v sobě nese různé hierarchie – vztahy 1:M mezi atributy dimenze

Hierarchie mají vždy stromovou strukturu Příklady hierarchie:

Rok -> Kvartál -> Měsíc -> Den Rok -> Týden -> Den Země -> Kraj -> Okres -> Obec Kategorie produktu -> Sub kategorie -> Produkt

Page 16: Datové sklady a BI aplikace

Hierarchie – zápis

Způsob zápisu hierarchie v dimenzi:

DenDen

Kalendářní rokKalendářní rok

Kalendářní měsíc

Kalendářní měsíc

PrázdninyPrázdniny

Fiskální týdenFiskální týden

Fiskální rokFiskální rok

Kalendářní kvartál

Kalendářní kvartál

Den v týdnuDen v týdnu

VíkendVíkend

ProduktProdukt

Produkt skupinaProdukt skupina

Typ produktuTyp produktu

Produkt kategorie

Produkt kategorie

Page 17: Datové sklady a BI aplikace

Dimensionální modelování

Dimensionální atributy jsou důležité (vstupní brána do DW)

Mají být Popisné Nepoužívat kódy Bez chybějících (null) hodnot – nahradit např.

Neuvedeno Zajištění kvality (bez překlepů, nemožných hodnot,

zastaralé, sirotci…) Standardizace (např. standardní zápis adresy)

Page 18: Datové sklady a BI aplikace

Výběr dimenzí

Počet dimenzí by se měl pohybovat okolo 5 až 15 Méně dimenzí – něco chybí, zda nelze dodat:

Kauzální dimenzi (promoce, kontrakt, počasí, podmínky obchodu, …) Další časové dimenze (hlavně u faktových tabulek zachycující položky

celku (např. objednávka -> objednané produkty) Dimenzi ve více rolích (např. místo odkud se volalo, kam se volalo) Status dimenzi – označující současný status dimenze nebo snímku (např.

nový zákazník) Auditní dimenzi Degenerovanou dimenzi Junk dimenzi

Přidání dimenzí často nezmění granualitu původní faktové tabulky Lze přidat i do provozujícího datového skladu

Page 19: Datové sklady a BI aplikace

Výběr dimenzí

Více jak 20 až 30 dimenzí ukazuje na možnost jejich spojení Nejsou nezávislé – spojit do jedné

Obchodně patří k sobě (např. značka, kategorie, oddělení) Korelace (viz –Junk dimenze)

Page 20: Datové sklady a BI aplikace

Faktové tabulky

Faktové tabulky slouží k uchování informací o sledovaných ukazatelích

Mezi typické ukazatele lze zařadit: Počet prodaných kusů Hodnotu prodaného zboží (v Kč) Počet zákazníků Počet smluv Výše škody Délka hovoru

Z hlediska datového se většinou jedná o číselné údaje, které lze agregovat

Page 21: Datové sklady a BI aplikace

Faktové tabulky

Granualita faktové tabulky: míra podrobnosti sledovaných ukazatelů, jejich přesný význam Např.: počet prodaných kusů za den daného zboží v

dané prodejně

Přiřazený dimenzí: Popisy, které nabývají jedné hodnoty pro jeden

záznam ve faktové tabulce (s danou granualitou) Při více hodnotách (M:N vztah) řešit přes pomocné

tabulky

Page 22: Datové sklady a BI aplikace

Typy ukazatelů

Ukazatele máme tří typů: Aditivní – agregovatelné (sčítáním) přes všechny

dimenze (např. prodej v ks) Semiaditivní – agregovatelné (sčítáním) jen přes

některé dimenze (např. stav zásob v ks) Nutné agregovat jinými agregačními funkcemi např. průměr POZOR nelze vždy použít funkci AVG v SQL – problém

prázdných období (kdy nebyla transakce)

Neaditivní – neagregovatelné (např. některá textová fakta – počasí při nehodě)

Page 23: Datové sklady a BI aplikace

Faktová tabulka

Z datového hlediska: Faktová tabulka obsahuje cizí klíče dimenzionálních

tabulek Tyto cizí klíče tvoří primární klíč faktové tabulky Navíc obsahuje faktová tabulka jednotlivé ukazatele

Kimball’s law: Každý vztah M:N je faktová tabulka, z definice

Page 24: Datové sklady a BI aplikace

Ukazatele v faktové tabulce

Existují dva způsoby zápisu ukazatelů do faktové tabulky:

F_Prodej

ID_Cas

ID_Produkt

ID_Zakaznik

Prodej v ks

Prodej v kč

Náklady v Kč

F_Prodej

ID_Cas

ID_Produkt

ID_Zakaznik

ID_Ukazatele

Hodnota ukazatele

Ukazatel

ID_Ukazatele (*)

Nazev

Page 25: Datové sklady a BI aplikace

Typy faktových tabulek Transakční

Zachycuje jednotlivé transakce, jednotlivé akce v daný časový okamžik Zachycuje jen transakce jež se udály (jestliže zákazník nic nekoupil

nebude v faktové tabulce) Obvyklý fakt: Množství (v dané transakci) Obvykle se po naplnění dále neprovádí update Ukazuje chování, vývoj v čase

Snímková Zachycuje stav k určitému časovému okamžiku (periodicky) Většinou měsíční Obvykle existuje jeden záznam pro všechny kombinace významných

dimenzí Sledovaná fakta – často složité výpočty, někdy vhodné přebírat z OLTP

systémů (již ověřená čísla) Umožňuje efektivně generovat výstupní reporty s často složitě

vypočitatelnými ukazateli Není efektivní je generovat přímo z transakcí

Page 26: Datové sklady a BI aplikace

Typy faktových tabulek

Akumulovaná Zachycuje stav v daný okamžik Většinou obsahuje několik časových dimenzí (kdy byl

záznam naposledy updatován, datum jednotlivých sledovaných fází)

Řada obsahuje „null“ hodnoty, které jsou postupně vyplňovány Potřeba umělých klíčů v časové dimenzi na hodnotu „Dosud

neznámo“ Dochází k update v faktové tabulce při změně stavu

Pro sledovanou událost jeden záznam ve faktové tabulce, který je postupně updatován

Vhodná tam kde sledovaná událost má daný čas trvání

Page 27: Datové sklady a BI aplikace

Typy faktových tabulek

Vhodné začít s snímkovou nebo akumulovanou fakt tabulkou

Postupně lze přidat i transakční Pro pokročilé analýzy chování

Page 28: Datové sklady a BI aplikace

Dimensionální modelování

Čtyři kroky tvorby faktové tabulky Výběr datového tržiště

Jeden datový zdroj vs. Více Začít s řešením kde jeden datový zdroj

Určení granuality dat Měla by být co nejdetailnější Potřeba přesně vydefinovat, určuje co bude v fakt tabulce uloženo Určení typy faktové tabulky

Výběr dimenzí Vychází z určení granuality plus další dimenze vyhovující navržené

granualitě Granualita dimenze nemůže být nižší než granualita faktové tabulky

Určení faktů (ukazatelů) Vychází z granuality a typu faktové tabulky Ukazatele s rozdílnou granualitou vytvořené např. z důvodu urychlení

výpočtu je třeba uložit do zvláštní faktové tabulky (např. součty pro výpočet procent z detailních ukazatelů, …)

Page 29: Datové sklady a BI aplikace

Různá granualita fakt

Fakta s různou granualitou musí být uloženy v různých faktových tabulkách

Často je potřeba alokovat fakta s vyšší granualitou na nižší pro možnost srovnaní Např. alokovat náklady objednávky na jednotlivé

produkty pro porovnání s výnosy Viz dále Parent-child modelování

Page 30: Datové sklady a BI aplikace

Uspořádání tabulek

Existují dvě základní schémata uspořádání faktových a dimenzionálních tabulek: Hvězda Sněhová vločka

Page 31: Datové sklady a BI aplikace

Hvězda

F_Prodej

ID_Cas

ID_Produkt

ID_Zakaznik

Prodej v ks

Prodej v kč

Náklady v Kč

D_CAS

ID_Cas (*)

Datum

Rok

Kvartal

Mesic

Den

Vikend

D_Zakazník

ID_Zakaznik (*)

Jmeno

Pohlavi

Rok narozeni

Země

Kraj

Okres

Obec

D_Produkt

ID_Produkt (*)

Nazev

Kategorie

Subkategorie

Page 32: Datové sklady a BI aplikace

Vločka

F_Prodej

ID_Cas

ID_Produkt

ID_Zakaznik

Prodej v ks

Prodej v kč

Náklady v Kč

D_CAS

ID_Cas (*)

Datum

Rok

Kvartal

Mesic

Den

Vikend

D_Zakazník

ID_Zakaznik (*)

Jmeno

Pohlavi

Rok narozeni

Země

Kraj

Okres

Obec

D_Produkt

ID_Produkt (*)

Nazev

ID_Kategorie

Kategorie

ID_Produkt (*)

Nazev

ID_Subkategorie

Page 33: Datové sklady a BI aplikace

Výhody/Nevýhody uspořádání

Hvězda Preferované uspořádání Přehlednější uspořádání z hlediska uživatele Snadněji udržovatelé Méně spojení než u vločky

Vločka Méně přehledné Náročnější na údržbu Nutné pro napojitelnost dalších faktových tabulek (BUS

architektura)

Page 34: Datové sklady a BI aplikace

Dimensionální modelování

Doporučuje se používat star schéma Snowflake – není tak srozumitelné uživateli Na druhou stranu je někdy vhodné při napojení jiných

faktových tabulek s rozdílnou granualitou Použijeme-li fyzicky snowflake – je vhodné odstínit

uživatele pomocí views Snowflake ušetří trochu místa ale většinou

zanedbatelné (hlavní velikost je ve faktech) Existují výjimky – extra velké dimenze (např. zakaznici)

Page 35: Datové sklady a BI aplikace

Kdy Snowflakes

Před uživatelem je možné Snowflakes skrýt za pomoci views Fyzický design – řízen rychlostí, efektivností Logický design – řízen uživatelskou přívětivostí, jednoduchostí

Např. dimenze zákazník Klasický zákazník (20%) Návštěvník www (80%)

Společné atributy: Shopper surrogate key Shopper ID (fixed ID for each physical shopper) Recency Frequency

Klasický zákazník Five name attributes 10 location attributes 10 behavior attributes 25 demographic attributes.

Page 36: Datové sklady a BI aplikace

Kdy Snowflakes

Příklad:

Base shopper dimension

Surrogate_key

Shopper_id

Recency

Frequency

Intensity

Snowflake_key

Snowflake shopper subdimension

Snowflake_key

50 customer attributes

Page 37: Datové sklady a BI aplikace

Kdy Snowflakes

Finanční produkty Mnoho produktů, některé atributy společné, jiné rozdílné Jedna dimenze – mnoho null hodnot v nevyplněných atributech

Snowflake key lze nahradit umělým klíčem společným přes všechny tabulky (viz unity dimension)

Uživatele lze odstínit pomocí views

Base financial product dimension

Surrogate_key

Core product atributtes

Snowflake_key

Separate subdimension for each product type

Snowflake_key

Product typ 1 atributtes

Separate subdimension for each product type

Snowflake_key

Product typ 2 atributtes

Separate subdimension for each product type

Snowflake_key

Product typ 3 atributtes

Page 38: Datové sklady a BI aplikace

Kdy Snowflakes

Časová dimenze – různé kalendáře v různých organizacích

Pozor: Subdimenze má větší kardinality než dimenze Primární klíč subdimenze je snowflake_key a Organization Potřeba specifikovat organizaci při spojení tabulek (pak 1:1)

Base calendar dimension

Surrogate_key

Common calendar atributtes

Snowflake_key

Snowflake calendar subdimension with organization key

Snowflake_key

Organization

Organization calendar atributtes

Page 39: Datové sklady a BI aplikace

Pojmy Drill-down, ….

Drill-down: ukaž mi větší detail Přidání sloupce z dimenze do výstupu

Drill-up: ukaž mi agregaci Odebrání sloupce z výstupu

Drill-across: spojení dvou a více faktových tabulek se stejnou granualitou

Drill-around: podobné jako drill-across, ale pro nelineární uspořádání

Slice-dice: řez multidimenzionální kostkou, omezení výběru Slice – výběr dimenze (zákazník, produkt, čas) Dice – výběr hodnoty v dimenzi (za rok = 2004 a produkt = chleba)

Page 40: Datové sklady a BI aplikace

Pojmy Drill-down, ….

Příklad drill-across: obchodní řetězec Zásoba, objednávka, dodávka, prodej Samostatné fact tabulky spojené časovou a produktovou

dimenzí (dimenze jsou „conformed“ vůči faktovým tabulkám) Výsledný dotaz využívá outer-join

Time dimesion

Product dimesion

Customer dimesion

Finished goods inventory

Orders

Shipments

Customer sales

Customer inventory

Page 41: Datové sklady a BI aplikace

Pojmy Drill-down, ….

Drill-around: příklad zdravotnictví, conformed dimenze pacient

Patient

Hospital

Laboratory

Medicard

Clinic

Long term care

Physician office

Employer

Insurence company

Pharmaceutical manufacturer

Pharmacy

Page 42: Datové sklady a BI aplikace

4. Přednáška

Page 43: Datové sklady a BI aplikace

Dimensionální modelování BUS architektura

Zajišťuje napojení jednotlivých etap (datových tržišť) navzájem a tak zajišťuje vytvoření celistvého DW

Datová tržiště by měla obsahovat co nejvíce podrobná atomická data Vytvořena za pomoci Conformed dimensions a standard fact

Conformed dimensions Dimenze, která znamená to samé ve všech faktových tabulkách na které může být

připojena Je stejná ve všech datových tržištích Klasickým příkladem: Zákazník, Produkt, Region, Čas Potřeba identifikovat tyto dimenze, udržovat je, publikovat a dodržovat Data pro conformed dimenzi často z více zdrojů Fyzicky jsou implementovány jednou tabulkou napojitelnou na všechny relevantní

faktové tabulky Dovoluje tedy operaci drill across Návrh většinou na co nejdetailnější úrovni Využívat umělé klíče

Větší flexibilita Nezávislost na OLTP SCD

Page 44: Datové sklady a BI aplikace

Dimensionální modelování

Conformed standard fact Aby zaručilo bezchybné drill across Stejná fakta musí být stejně uložena ve všech datových tržištích

(např. příjem) Stejné měrné jednotky (ne jednou v jednotkách, jednou v

krabicích) Lze ztěží porovnat v reportech Uložit oboje

Označuje-li jiné věci, pojmenovat rozdílně Není-li třeba provázanosti, je někdy možné vytvářet

nezávislé datové tržiště (např. prodáváme-li rychlé občerstvení a traktory, nemusí mít cenu zákazníky sdružovat do jedné dimenze)

Page 45: Datové sklady a BI aplikace

Dimensionální modelování

Praktické zkušenosti: Obvykle 4 – 15 dimenzí na faktovou tabulku

Fakt – je něco co není známo většinou předem, co pozorujeme, co vychází z chování trhu, …

Dimenze Často záleží na rozhodnutí designera Lze dimenze produkt a obchod

Prodávají-li se produkty ve všech obchodech (nezávislé) Nebo jednu dimenzi obchod-produkt

Prodávají-li se určité produkty v určitém obchodě (závislé) Taková dimenze je výhodnější – nese informaci o tom kde se co

prodává – lze tuto informaci získat přímo prohlížením (browsing) dimenze

Page 46: Datové sklady a BI aplikace

Praktický příklad 3

Vytvořte multidimenzionální model 1. vrstvy datového skladu: Uživatelé chtějí sledovat:

Prodej zboží v korunách a kusech Prodeje v jednotlivých dnech Prodeje podle produktů, jejich kategorií a subkategorií Analyzovat využití dopravců – počet přepraveného zboží Analyzovat prodejce Analyzovat prodeje podle jednotlivých zákazníků a skupin

zákazníků (dle geografického umístění)

Page 47: Datové sklady a BI aplikace

Praktický příklad 3

Page 48: Datové sklady a BI aplikace

Dimenzionální modelování

Modelovací řešení Slowly Changing Dimensions Rychle se měnící dimenze

(RCD) Surrogate Keys Pomocné tabulky (vztahy M:N)

Složité hierarchie v dimenzi Degenerovaná dimenze Junk dimension Heterogenní produkty Spojení fakt tabulek Transakční dimenze Audit dimenze Časová dimenze Mnohonásobné měrné jednotky

Různě měny Intervalový reporting Změny v dimenzi Velké dimenze Causal dimension Role Many Alternate Realities Unity dimension Faktová tabulka bez faktů Vztahy parent-child On-line DW Sledování zákazníka

Page 49: Datové sklady a BI aplikace

Slowly Changing Dimensions

Problém uchování historie v datech OLTP systémy často neřeší

Přepsání hodnot Odmazání historických dat

Příklad: Změna názvu produktu, ID produktu se nemění

Tři možnosti řešení Přepsání Vytvoření nového záznamu Vytvoření atributu s aktuální hodnotou

Page 50: Datové sklady a BI aplikace

SCD – Typ 1

Nejednoduší a nejrychlejší Neudržuje historii Stará hodnota pro nás není významná

Např. byla špatně zadaná

Page 51: Datové sklady a BI aplikace

SCD – Typ 2

Nejpoužívanější technika

Time_key

Product_key

Shipto_key

Shipmade_key

Shipfrom_key

Invoice_num

Qty_shipped

Lineitem_value

Time dimension

Ship to dimension

Ship made dimension

Ship from dimension

Product dimension

Product_key

Description

Brand

Category

Flavor

Pkg_type

SKU

Page 52: Datové sklady a BI aplikace

SCD – Typ 2

Pro každou změnu neklíčového atributu (jehož historii chceme sledovat) se vytvoří nový záznam

Pro záznamy v dimenzi jsou využity dva klíče IDU – Umělý identifikátor, mění se s změnou atributu, odkazuje do

faktové tabulky IDS – konstantní ID

Je vhodné doplnit do dimenze atributy Platnost od Platnost do

Výhody/Nevýhody Umožňuje přesně sledovat vývoj v historii Zvětšuje dimenzionální tabulku

Page 53: Datové sklady a BI aplikace

SCD – Typ 3

Vhodné jestliže chceme sledovat vývoj jak podle staré tak nové hodnoty

Přidají se atributy Aktuální hodnota Předchozí hodnota

Sales team dimension

Salesteam_key

Team_name

Team_leader

Region

Sales team dimension

Salesteam_key

Team_name

Team_leader

Previous_region

Current_region

Page 54: Datové sklady a BI aplikace

Rychle se měnící dimenze (RCD)

Velké dimenze, kterých probíhají časté změny Velký nárůst dat

Např. Dimenze Zákazník a několik atributů scorujících zákazníka (Dobrý, Brzy odejde, …) Mění se každý měsíc

Řešení: Jsou-li měnící se atributy textové a používají se pro

tvorbu reportů -> Vytvořit pro ně novou dimenzi přímo napojenou na fakt tabulku

Jsou-li numerické – převést je na fakta

Page 55: Datové sklady a BI aplikace

Surrogate Keys Surrogate Keys – umělé klíče, používané v DW místo přirozených

primárních klíčů Je doporučováno – všechny přirozené klíče nahradit umělými

Všechny join do fakt tabulek přes umělé klíče Umělé klíče – integer datový typ

4 byte – 2 miliardy hodnot Důvody

Flexibilní, nezávislé na změnách v OLTP systémech Označení hodnoty „Nevím“ v dimenzi SCD Rychlejší join Většinou menší nároky na místo než u přirozených klíčů

I časová dimenze by měla mít umělý klíč Nespojovat přes DATE-TIME (datový typ) atribut

Page 56: Datové sklady a BI aplikace

Surrogate Keys

Umělé klíče: přiřazené každé dimenzi Hodnoty 1, 2, 3, ….

Přiřazení hodnot umělého klíče: První načtení Následné načtení Využití look-up tabulek

Original complete set ofdimension records

Production_key

Description

Brand

Category

Package_type

Size

Original set of loadable dimension records

Surrogate_key

Production_key

Description

Brand

Category

Package_type

Size

Generate surrogatekeys startingwith key = 1

Data loader

Page 57: Datové sklady a BI aplikace

Surrogate Keys

Look-up tabulka

Production_key Current_surrogate_key

SKU43WERT567 2345

SKU653TYH7889 4567

SKU34RTB567MM 5436

SKU34ERA23UJ4 2376

… …

Page 58: Datové sklady a BI aplikace

Surrogate Keys

Nakonec je třeba aktualizovat look-up tabulky

Jestliže OLTP systémy podporují sledování změn (datum, odpovědnost) nemusí se provádět náročné porovnání položek záznamu.

Existingdimension

recordLookup table

Incomingdimesion

record

Test unknowproduction

key

Surrogate key

Fields change

CompareIncoming

Fields With currentfields

Get currentSurrogate key

Get newSurrogate key

OverwriteDimension

RecordIn DBMS

Load DBMS

Type 2

Type 1

No

Yes

Page 59: Datové sklady a BI aplikace

Surrogate Keys

Po dimenzích následuje faktová tabulka

Sales fact tableProduction ID

Time_id

Product_id

Store_id

Dollar_sold

Units_sold

Dollars_cost

Plan_dollars_sold

Plan_units_sold

Plan_dollars_cost

Most recent key map

product_id

product_key

Most recent key map

store_id

store_key

Most recent key map

time_id

time_key

Sales fact tableSurrogate key

Time_key (FK)

Product_key (FK)

Store_key (FK)

Dollar_sold

Units_sold

Dollars_cost

Plan_dollars_sold

Plan_units_sold

Plan_dollars_cost

Replace ID umělým klíčem

Replace ID umělým klíčem

Replace ID umělým klíčem

Load fact tabledo RDBMS

Page 60: Datové sklady a BI aplikace

Pomocné tabulky

Pro řešení vztahu M:N mezi dimenzí a faktovou tabulkou Jednomu záznam ve faktové tabulce neodpovídá jeden

záznam v dimenzi Např.: dimenze diagnóza u sledování pacientů Řešení:

Vypustit dimenzi Vybrat jednu hlavní hodnotu a ostatní vypustit Vytvořit pevný počet dimenzí – diagnózy (každá dimenze pro

jednu diagnózu) Zvětšit granualitu faktové tabulky Využít pomocnou tabulku (Helper table)

Page 61: Datové sklady a BI aplikace

Pomocné tabulky Pomocná tabulka Weight_Faktor zaručuje správné výsledky ve výstupech

Fakta jsou násobena Weight_Faktor Součet Weight_Faktor pro jednu skupinu se rovna 1 Zde nastavit proporcionálně pro celou skupinu

Impact report Není využit Weight_Faktor k násobení Nelze potom agregovat

Patient billing fact table

Calendar_date_key

Patient_key

Doctor_key

Location_key

Service_key

Diagnosis_group

Payer_key

Amount

Diagnosis grouphelper table

Diagnosis_group

Diagnosis_key

Weight_factor

Diagnosis dimension table

Diagnosis_key

Description

Type

Category

Page 62: Datové sklady a BI aplikace

Pomocné tabulky

Pro uživatele je možné připravit schéma Hvězdy Využit views Spojit pomocnou tabulku na faktovou tabulku Vynásobit fakta Weight_Faktor Výsledek je přímo napojený na dimenzi Diagnóza

Pomocné tabulky se využijí i v např: Bankovnictví – více vlastníků účtu

Page 63: Datové sklady a BI aplikace

Pomocné tabulky

Příklad:

Monthly account fact

Account_key (FK)

Month_key (FK)

Balance

Interest_paid

Tees

Activity_count

Account dimension

Account_type (PK)

Type

Category

Primary holder

Overdraft policy

Behavioral profile

Account to customer map (helper table)

Account_key (FK)

Customer_key (FK)

Begin_date (FK)

End_date (FK)

Weight_factor

Customer dimension

Customer_key (PK)

Name

Address

Demographics …

Page 64: Datové sklady a BI aplikace

Pomocné tabulky

Pomocná tabulka obsahuje umělé klíče do tabulek Klient a Účet Při každé SCD2 změně v některé z těchto tabulek je

nutné přidat záznam do pomocné tabulky BeginDate a EndDate v pomocné tabulce ukazují

interval v němž byl klient majitelem účtu a obě dimenze se neměnily

Architektura umožňuje komplexní analýzu S jednoduchými SQL dotazy

Dopad na složitost ETL: doplnit EndDate do předchozího záznamu

Page 65: Datové sklady a BI aplikace

Pomocné tabulky

Klient účtu ABC123: SELECT customer.name

FROM account, map, customer

WHERE account.accountkey = map.Accountkey

AND customer.customerkey = map.Customerkey

AND account.naturalid = 'ABC123'

AND '7/18/2001' BETWEEN map.begindate AND map.enddate

Page 66: Datové sklady a BI aplikace

Pomocné tabulky Weight_Faktor:

K alokaci aditivních faktů na jednotlivé položky dimenzionální tabulky Pro daný účet součet roven 1

Balance na účtu ABC123 SELECT customer.name, fact.balance*weightingfactor

FROM fact, account, map, customer, monthWHERE fact.accountkey = account.Accountkey

AND fact.monthkey = month.MonthkeyAND account.accountkey = map.AccountkeyAND customer.customerkey = map.CustomerkeyAND account.naturalid = 'ABC123'AND month.monthdate = 'July, 2001'

Bez faktoru – impact report – pro každého majitele účtu stejná hodnota balance Není možné agregovat na zjištění balance účtu Ukazuje s kolika skutečně penězi může klient disponovat

Page 67: Datové sklady a BI aplikace

Pomocné tabulky

Pomocná tabulka musí být aktualizovaná: Při změně v dimenzi Účet, Klient Při přidání klienta k účtu, při odebrání klienta z účtu Při úpravě Weight_Faktor (součet 1)

Pro zjednodušení je vhodné znovu zapsat všechny klienty pro daný účet do pomocné tabulky (stejný BeginDate)

Page 68: Datové sklady a BI aplikace

Složité hierarchie v dimenzi

Využití pomocné tabulky pro sledování složitých hierarchií v dimenzi Standardní SQL

Uvažujme příklad: Konzultantská firma prodává svým zákazníkům Prodeje mohou být provedeny jedné firmě ale na

různých úrovních Uživatelé chtějí sledovat jak prodeje celé firmě tak i

jednotlivým oddělením

Page 69: Datové sklady a BI aplikace

Složité hierarchie v dimenzi

Klasický rekurzivní atribut (join tabulky zákazníků samu na sebe) neřeší problém: Není možné využít jednoduché SQL pro dotazy

Revenue fact table

Date_of_service_key

Customer_key

Consulting_service_key

Consulting_manager_key

Project_status_key

Invoice_number

Billed_revenue

Billed_hours

Customer dimension table

Customer_key

Customer_name

Customer_address

Customer_type

Customer_industry

Parent_keyThe two additive facts

Tempting to add this recursive pointer

Page 70: Datové sklady a BI aplikace

Složité hierarchie v dimenzi

Hierarchie The supremeParent organization

An intermediateParent organization

A lowest-levelOrganization or subsidary

Page 71: Datové sklady a BI aplikace

Složité hierarchie v dimenzi

Řešení přes pomocnou tabulku Nijak neovlivní dosavadní model Obsahuje záznam pro každou cestu z uzlu na

sebe sama a na uzly pod sebou Atributy:

Parent Customer Key Subsidiary Customer Key Depth From Parent Lowest Flag Topmost Flag

Page 72: Datové sklady a BI aplikace

Složité hierarchie v dimenzi

Umožňuje jednoduchým SQL získat pro daný uzel informace o všech potomcích

Obrácením spojení se můžete dívat na nadřízené, např: Depth = 1 nadřízený Topmost = True - nejvyšší

Revenue fact table

Date_of_service_key

Customer_key

Consulting_service_key

Consulting_manager_key

Project_status_key

Invoice_number

Billed_revenue

Billed_hours

Customer dimension table

Customer_key

Customer_name

Customer_address

Customer_type

Customer_industry

Parent_customer_key

Subsidary_customer_key

Depth_from_parent

Lowest_flag

Topmost_flag

Page 73: Datové sklady a BI aplikace

Složité hierarchie v dimenzi

Řešení je možné rozšířit o přidání atributů do pomocné tabulky: Začátek_Platnosti Konec_Platnosti

Umožňuje sledovat změny v hierarchii Je-li více rodičů v hierarchii je možné řešit

přidáním Weight_Faktor do pomocné tabulky Součet pro uzel musí být roven 1

Page 74: Datové sklady a BI aplikace

Degenerovaná dimenze

Degenerovaná dimenze: Většinou se objeví v případě popisu reality objekt –

položky objektu (např. objednávka – položky objednávky)

Faktová tabulka na úrovni položek objednávky Kam s číslem objednávky? Jedná se o degenerovanou dimenzi – je

zapsaná ve faktové tabulce a nemá přímou napojitelnost na žádnou dimenzionální tabulku

Vhodná je pro tvorbu reportů, napojení na provozní systémy, …

Page 75: Datové sklady a BI aplikace

Junk dimension

Při analýze zdrojových dat zůstanou atributy, které nelze přiřadit k některé dimenzi Např. 10 atributů označujících kód transakce, ….

Co s nimi? Vytvořit deset dalších dimenzí – může být nepřehledné pro

uživatele Spojit všechny atributy do jedné junk dimense

Junk dimenze – vhodné uskupení náhodných indikátorů a různých atributů

Pozor aby Junk dimense neobsahovala příliš mnoho záznamů

Page 76: Datové sklady a BI aplikace

Junk dimension

Má-li např. každý atribut 100 různých hodnot a jsou plně nezávislé pak může mít dimenze až 10010 záznamů

Řešení: Rozdělit atributy do skupin korelovaných atributů Např. má-li A1 100 různých hodnot a A2 1000 různých hodnot, kolik

různých hodnot nabývá kombinace atributů A1 a A2

1000 – A1 je rodičem A2

100 000 – A1 nezávislé na A2 – rozdělit do dvou dimenzí

10 000 – lze A1 do dimenze s A2

Nabývají-li např. jen 3 různých hodnot lze vytvořit dimenzi se všemi deseti atributy (maximálně 310 záznamů)

Page 77: Datové sklady a BI aplikace

Heterogenní produkty

Heterogenní produkty Řešení v businessu kde řada produktů s různými

charakteristikami Potřeba sledovat celkový obraz i jednotlivé produkty

Řešení Základní faktová tabulka – pro všechny produkty Faktové tabulky pro jednotlivé produkty

Page 78: Datové sklady a BI aplikace

Heterogenní produkty

Time_keyAccount_keyBranch_keyHousehold_keyBalanceFees PaidFees EarnedNum_transaction

Základní dimenze Account

Household dimenze

Časová dimenze

Branch dimenze

Page 79: Datové sklady a BI aplikace

Heterogenní produkty

Time_keyAccount_keyBranch_keyHousehold_keyBalanceFees PaidFees EarnedNum_transactionKlíč k faktům

Základní dimenze AccountKlíč do rozšířené tabulky

Household dimenze

Časová dimenze

Branch dimenze

Klíč rozšířené tabulkyAtributy daného

produktu

KlíčDalší ukazatelé pro daný produkt

Page 80: Datové sklady a BI aplikace

5. Přednáška

Page 81: Datové sklady a BI aplikace

Spojení fakt tabulek

Pozor při tvorbě dotazů spojujících jednu dimenzi s více než jednou faktovou tabulkou Není možné použít jednoduchý join

Page 82: Datové sklady a BI aplikace

Audit dimenze

Pro sledování auditních informací o plnění faktových tabulek Lze rozšířit na vybrané dimenze i celý datový sklad

V případě že dochází k update faktové tabulky je třeba (vztah M:N mezi faktovou tabulkou a auditní dimenzí) je třeba přidat mezi faktovou tabulku a auditní dimenzi pomocnou tabulku (vazební)

Page 83: Datové sklady a BI aplikace

Audit dimenze

SW run log fact table

Audit_key (PK)

Module_key (PK)

Execution_date_time (PK)

Module_name

Module_revision

Records_processed

Run_status

Audit dimension

Audit_key (PK)

Load_completion_date_time

Load_status

Load_records_rejected

Clean_completition_date_time

Clean_status

Records_corrected

Extract_completition_date_time

Extract_status

Total_records_extracted

Example shipments fact table

Time_key (FK)

Product_key (FK)

Ship_to_key (FK)

Ship_from_key (FK)

Ship_mode_key (FK)

Contract_key (FK)

Audit_key (FK)

Invoice_num (degenerate)

Quantity_shipped

Extended_amount

Při potřebě zachytit podrobnější informace

Page 84: Datové sklady a BI aplikace

Časová dimenze

Vyskytuje se téměř u všech faktových tabulek

Lze uvažovat dva přístupy Pouze hodnota v faktové

tabulce (date-time) Vlastní plnohodnotná dimenze

Druhá možnost podporuje analýzu SQL funkce nejsou tak

komplexní aby zachytily veškerou časovou logiku (např. finanční rok, kalendářní rok, sezónnost, …)

Time_key

Day_of_week

Day_number_in_month

Day_number_overall

Month

Month_number_overall

Quarter

Fiscal_period

Season

Holiday_flag

Weekday_flag

Last_day_in_month

Page 85: Datové sklady a BI aplikace

Časová dimenze

Data jsou plněna „ručně“ Např. makro v Excelu Naplnit několik let (10 – 20)

Většinou granualita denní, v některých případech až na sekundy Vhodné rozdělit, sekundy jako numerická fakta (date-

time atribut ve fakt tabulce) + klasická denní časová dimenze

Page 86: Datové sklady a BI aplikace

Časová dimenze Základní dimenze v každém datovém skladě

Předpokládejme nejprve denní Na první pohled jednoduchá, predikovatelná

Kalendářní dny, 365 dní za rok Vyrůstající otázka okolo časových intervalů Příkladem transakce na účtu (otevření účtu, transakce –výběr,

uložení, uzavření účtu) Otázky bez problémů:

Ukaž všechny transakce za daný časový úsek Urči zda daná transakce nastala v daném časovém úseku Umožni pokročilou časovou analýzu při využití informací o svátcích,

prázdninách, víkendech, … Předchozí otázky vyžadují klasickou časovou dimenzi Vhodné doplnit atributy:

Poslední den v časovém intervalu (např. poslední den v čtvrtletí) Hodnoty Ano/Ne

Page 87: Datové sklady a BI aplikace

Čas dne

Je-li třeba zachytit přesný čas je vhodné ho oddělit od denní časové dimenze Přesný čas je uvažován spíše jako fakt I když může existovat jeho interpretace (čas oběda,

čas uzávěrky, …)

Potřebujeme-li sledovat více časových zón lze přidat více časových dimenzí

Page 88: Datové sklady a BI aplikace

Čas dne

Sales fact table

Date_key (FK)

GMT_data_key (FK)

Product_key (FK)

Customer_key (FK)

Call_center_key (FK)

Service_rep_key (FK)

Promotion_key (FK)

Time_of_day

GMT_time_of_day

Dollars_sold

Unit_sold

Dollar_cost

Page 89: Datové sklady a BI aplikace

Časová dimenze Složitější situace:

Ukaž všechny, kteří jsou zákazníky v daném časovém intervalu. Ukaž poslední transakci zákazníka v daném časovém intervalu Ukaž stav účtu zákazníka v libovolném časovém okamžiku

K odpovědi vystačíme s jednou časovou dimenzí Dotazy jsou ovšem komplexní a složité Neefektivní dotazy Koncové programy je těžko automaticky definují

Řešení: Dvě časové dimenze Počátek a konec intervalu

Odpovědi na otázky: Nalézt všechny účty s cas_zacatek transakce otevření účtu před koncem intervalu

a cas_konec transakce zavření účtu po začátku daného intervalu Najdi transakci s cas_zacatek v nebo před koncem intervalu a cas_konec v nebo

po konci intervalu Najdi transakci s cas_zacatku v nebo před daným okamžikem a cas_konce v nebo

po daném okamžiku Vystačíme s BETWEEN klauzulí

Page 90: Datové sklady a BI aplikace

Časová dimenze

Dopady dvou dimenzí: Musíte navštívit každý záznam v faktové tabulce dvakrát

Při prvním insertu (cas_konce nastaven na neurčito, ne null) Při následujícím insertu na účtu k správnému nastavení

předcházejícího cas_zacatku Problém s větší granualitou

Lze využít dvě dimenze Nelze využít klasickou předpřipravenou časovou dimenzi – mnoho

záznamů (31 milionu sekund za rok) Řešení:

Čtyři dimenze, dvě s denní granualitou, dvě s sekundovou (pouze date/time ve faktové tabulce)

Dynamická časová dimenze (pro daný záznam ve faktové se vygeneruje záznam v časové dimenzi)

Page 91: Datové sklady a BI aplikace

Různě měny

Pro sledování různých měn Lze uložit fakta v různých měnách Nebo využít speciální faktovou tabulku pro konverzi

Multinational sales fact table

Date_key (FK)

Product_key (FK)

Store_key (FK)

Reporting_country_key (FK)

Customer_key (FK)

Promotion_key (FK)

Quantity_sold

Local_currency_tendered

US_dollar_equivavelnt_tendered

Daily currency conversion fact table

Date_key (FK)

Buying_country_key (FK)

Selling_counry_key (FK)

Conversion_rate

Page 92: Datové sklady a BI aplikace

Intervalový reporting

Je-li potřeba vytvořit report stylu:

Není jednoduché v SQL Možno využít CASE, …není transparentní

Lze využít speciální design Join přes spodní a horní meze intervalu Do reportu název intervalu Využívá indexy na faktech

Balancerange

Number of Accounts

Total of Balances

0 - 1000 456 123

1001 - 2000 678 234

2001 - 3000 345 125

3001 and up 123 23

Page 93: Datové sklady a BI aplikace

Intervalový reporting

Monthly account balance fact table

Month_key (FK)

Account_key (FK)

Branch_key (FK)

Product_key (FK)

Household_key (FK)

Ending_balance

Average_daily_balance

Number_transaction

Fees_paid

Fees_earned

Band definition table

Band_group_name (PK)

Band_name

Band_sort_number (PK)

Band_lower_value

Band_upper_value

>=

<

Page 94: Datové sklady a BI aplikace

Změny v dimenzi

V reálném DW nevystačíme pouze s faktovými a dimenzionálními tabulkami

Potřeba zachytit změnu v prostředí Řešení SCD (typ 2) Co když ale chceme prohlížet dimenzi odděleně

od faktové tabulky? Kdy se zákazník oženil? Kdy poprvé si potom zakoupil zboží? Které další atributy se u zákazníka změnily? Které atributy se obvykle mění společně?

Page 95: Datové sklady a BI aplikace

Změny v dimenzi

Řešení:

Customer

Customer_key

Trans effective date

Trans end date

Last trans flag

Customer SCD group key

First name

Last name

Marital status

Address

City

State

….

Customer SCD group

Customer SCD group key

Customer SCD column key

Customer SCD column

Customer SCD column key

SCD column name

Column business name

Page 96: Datové sklady a BI aplikace

Změny v dimenzi

Customer SCD column mohou zároveň sloužit jako metadata pro vývojáře ETL – co sledovat za změny (typ 2)

Customerkey

Trans effective date

Trans end date

Last trans flag

Customer SCD group key

First name

Last name

Marital status City State

1 1.4.2004 15.6.2004 N 0 Mary Smith Single New York NY

2 15.6.2004 12.7.2004 N 501 Mary Jones Married New York NY

3 12.7.2004 31.12.9999 Y 502 Mary Jones Married Westport CT

Customer SCD group key

Customer SCD column key

0 0

501 1

501 2

502 3

502 4

CustomerSCDcolumn key

SCD column name

Column business name

0 New record New record

1 Last_name Last name

2 Marital_status Marital status

3 City City

4 State State

Customer Dimension

Customer SCD group Customer SCD column

Page 97: Datové sklady a BI aplikace

Změny v dimenzi

0 pomáhá identifikovat kdy zákazník byl vložen do systému

V obrázku je využita technika dvou časových dimenzí cas_zacatku, cas_konce efektu transakce

Last_Trans_Flag – pro nalezení poslední transakce – aktuálního profilu zákazníka

Technika je využitelná nejen pro dimenzi zákazník (produkt, dodavatel, zaměstnanec)

Page 98: Datové sklady a BI aplikace

Velké dimenze

Některé dimenze mohou být opravdu velké Zákazníci Produkty (500 000)

Nutné využít bitmapové indexy Rozdělit velké dimenze

Stabilní část Proměnlivá – SCD (rozdělit na intervaly, naplnit všemi možnostmi) Obě dimenze napojené na fakt tabulku Nebo neimplementovat SCD

Problémy: Ztráta informace při převodu na intervaly Proměnlivá dimenze nesmí být moc velká – řešení vytvořit jich několik Zpomalení prohlížení dimenze, nutné přes faktovou tabulku Změna pouze při zápisu do faktové tabulky – řešení vytvořit umělý typ

transakce změna atributu, kdy se změní atributy v proměnlivé dimenzi

Page 99: Datové sklady a BI aplikace

Causal dimension

Zachycuje důvody proč došlo k zápisu do faktové tabulky Příklad: Prodej v obchodním řetězci

Proč zákazník nakoupil Důvody: Platí sleva, promo akce, ochutnávka, …

Obdobně telekomunikace: sleva na volaní, akce na víkend, nej číslo, …

Vhodné nalézt tyto informace a dodat do modelu Podpora marketingových analýz

Nemá vliv na původní faktovou tabulku Nemění její granualitu

Page 100: Datové sklady a BI aplikace

Causal dimension

Důležité je nezapomenout na hodnotu: Žádná promoce

Transaction fact table

(Existing keys)

Causal key

(Existing facts)

New causal dimension table

Causal key

Condition name

Price treatment type

Price discount

Ad type

Ad media name

Ad size

Display type

Display provider

Display size

Page 101: Datové sklady a BI aplikace

Role

Výskyt dimenzionální tabulky ve více rolích Např.: Akumulovaná fakt tabulka objednávek

Dimenze: Datum objednávky, Datum balení, Datum dodávky, Datum platby, …, Zákazník, Produkt

Není možné napojit vše na jednu časovou dimenzi Fyzicky je možné udržovat pouze jednu dimenzi Využít view, kopie, materializované view – každá dimenze své

jméno (i atributy) Podobně je možné řešit např. výskyt Regionu v různých

dimenzích (Zakaznik, Dodavatel, …) Pouze jedna dimenze Region Napojení přes Sněhovou vločku na dimenze ostatní

Page 102: Datové sklady a BI aplikace

Many Alternate Realities Pro sledování SCD – jestliže je třeba sledovat vedle sebe současné i

historické atributy dimenze Něco mezi SDC 2 a SCD 3

Příklad 1: Prodejci rozděleni do jednotlivých prodejních regionů Příklad 1a – Distribuční sít se mění ročně - uživatelé chtějí sledovat:

Prodeje v daném roce podle distribuční mapy daného roku Prodeje v daném roce podle distribuční mapy jiného roku Prodeje za několik let podle distribuční mapy z vybraného roku

Příklad 1b – Distribuční sít se mění kdykoliv - uživatelé chtějí sledovat: Prodeje v minulosti dle platné distribuční mapy Prodeje podle aktuální distribuční mapy Prodeje podle vybrané alternativní distribuční mapy

Řešení je možné využít např. pro sledování Regionální dimenze Změny zařazení obcí, okresů, …

Page 103: Datové sklady a BI aplikace

Many Alternate Realities Příklad 1a Atributy:

Sales Team Key Sales Team Name Sales Team Physical Address (stays constant) District1999 (the district assignment for the team in 1999) District1998 (the district assignment for the team in 1998) District1997 District1996 District1995 District1994 District1993 District1992 Distric t1991 District1990 … plus other unrelated sales team attributes

Page 104: Datové sklady a BI aplikace

Many Alternate Realities

Příklad 2b Atributy

Sales Team Key Sales Team Name Sales Physical Address (remains unchanged) District (the district assignment valid between the following dates) Begin Effective Date (the first date this record is valid) End Effective Date (the last date this record is valid) Obsolete District1 (a selected obsolete definition) Obsolete District2 (a different obsolete definition) Current District (the most current district assignment; periodically

overwritten) … plus other unrelated sales team attributes

Page 105: Datové sklady a BI aplikace

Unity dimension

V případě, že dimenze může vystupovat v několika různých rolích

Např.: sledování toku zboží mezi zákazníkem, výrobcem, dodavatelem, skladem

Obsahuje Všechny tabulky sdílí jednu sekvenci umělých

klíčů Faktová tabulka obsahuje umělý klíč do unit dimenze a

dané komponentní dimenze Podobné řešení např. pro různé typy účtů

Page 106: Datové sklady a BI aplikace

Unity dimension

Příklad: Shipping_points

Shipping_points_uid

Type_code

Name

Address

Shipment_facts

Sp_original_uid (FK)

Sp_destination_uid (FK)

Customers

Customer_uid (FK)

Customer_id

Customer_type

Name

Address

Vendors

Vendors_uid (FK)

Vendor_id

Name

Address

Temrs

Storage_location

Location_uid (FK)

Location_id

Name

Address

Plants

Plant_uid (FK)

Plant_id

Name

Address

Page 107: Datové sklady a BI aplikace

Faktová tabulka bez faktů

Faktová tabulka bez ukazatelů Faktová tabulka zaznamenávající události (Events)

Např. Studentova přítomnost na výuce

Data dimension Course dimension

Facility dimension

Student dimensionTeacher dimension

Fact table

Date_key

Student_key

Course_key

Teacher_key

Facility_key

Page 108: Datové sklady a BI aplikace

Faktová tabulka bez faktů

Umožňuje odpovídat na dotazy typu: Která výuka je nejvíce navštěvovaná? Který učitel učí nejvíce studentů? Který učitel učí na jiné katedře než z které pochází? Která učebna je nejvíce využívaná?

Někdy se přidává atribut „Zučasnil_se“ vždy vyplněný 1 Čitelnější SQL, vhodné pro OLAP Např.:

SELECT COURSE, SUM(ATTENDANCE) FROM FACT_TABLE COURSE_DIMENSION, ETC. WHERE ... GROUP BY COURSE

Podobně lze např. využít pro pojistné události Dimenze: Date of Collision Insured Party Insured Auto Claimant

Claimant Auto Bystander Witness Claim Type

Page 109: Datové sklady a BI aplikace

Faktová tabulka bez faktů

Dalším typem jsou Factless Coverage Table

Např. Faktová tabulka bez faktů společně s faktovou tabulkou prodejů odpovídá na otázku: „Které výrobky byly v promoci ale neprodaly se?“

Sales fact table

Time_key (FK)

Product_key (FK)

Store_key (FK)

Promotion_key (FK)

Dollar_sold

Units_sold

Dollars_cost

Data dimension

Product dimension

Store dimension

Promotion dimension

Store dimension

Promotion dimensionProduct

dimension

Data dimensionSales fact table

Time_key (FK)

Product_key (FK)

Store_key (FK)

Promotion_key (FK)

Page 110: Datové sklady a BI aplikace

Faktová tabulka bez faktů

Coverage table se vyskytuje tam kde je klasická faktová tabulka řídká

Klasická faktová tabulka nedokáže odpovědět na otázku „Co se nestalo?“

Dva kroky dotazu: Zjistit které zboží bylo v promoci Zjistit které zboží se prodalo Rozdíl je výsledek

Page 111: Datové sklady a BI aplikace

Co se nestalo?

Analýza situací, které se nestaly Obecně faktové tabulky zachycují co se stalo

Lze využít Coverage factless table Lze zapsat i do původní faktové tabulky jako speciální

událost, která nenastala Např. studenti, kteří nenavštívili výuku

Factless fakt tabulka (Zučastnil_se = 0) Vhodné řešení, jestliže nedojde k výraznému růstu faktové tabulky Vhodné jestliže nenastání události má stejnou dimenzionalitu jako

nastání

Page 112: Datové sklady a BI aplikace

Vztahy parent-child Mnoho vztahu v obchodním světě je parent-child

Objednávka – objednané zboží Pojistná smluva – pojištěná rizika Dodejka – dodané zboží

Příklad: Faktura Faktura

Four regular dimensions: date of overall invoice, sales agent, customer, and payment terms

One degenerate dimension: invoice number (more on this later) Five additive facts: total net price from the line items, total invoice-level

discounts representing promotional allowances, total freight charges, total tax, and grand total

Položky faktury Two dimensions: product and promotion Four additive facts: number of units of product, extended gross price (units 3

price), extended net price [units 3 (unit price - promotional discount)], and unit price of product and promotional discount for this specific product (more on this later)

The "context" from the overall invoice (the five parent dimensions)

Page 113: Datové sklady a BI aplikace

Vztahy parent-child Jednoduchá úvaha vede na dvě faktové tabulky

Problém: nelze sledovat ukazatele na produkt (např. co s celkovou cenou vč. nákladů)

Modelovat jednou faktovou tabulkou na nejnižší úrovni (položky faktury) Atributy celé faktury rozpočítat na nižší úroveň

Dimenze Date of overall invoice (dimension) Sales agent (dimension) Customer (dimension) Payment terms (dimension) Product (dimension) Promotion (dimension).

Číslo faktury v faktové tabulce jako degenerovaná dimenze (nemá odpovídající dimenzionální tabulku)

Page 114: Datové sklady a BI aplikace

Vztahy parent-child

Ukazatele: Number of units of product (additive fact) Gross extended product price (additive fact) Net extended product price (additive fact) Allocated invoice-level promotional discounts (additive fact) Allocated freight charges (additive fact) Allocated tax (additive fact)

Cenu zboží lze vypočítat z množství a celkové ceny Na základě degenerované dimenze číslo faktury lze

vytvořit součty za celou fakturu Plně nahradí faktovou tabulku pro celou faktury Žádná informace tak není alokací ztracena

Page 115: Datové sklady a BI aplikace

Vztahy parent-child

Jak alokovat? Např. náklady dodávky. Dle: Množství Hmotnosti Hodnoty Objem

Je to politická otázka Některá oddělení odpovědná za určitý druh zboží mohou potom

vypadat více profitabilní (nesou menší náklady)

Vhodné provést alokaci podle více atributů (více ukazatelů ve faktové tabulce)

Page 116: Datové sklady a BI aplikace

On-line DW

Velice složité z hlediska náročnosti ETL Vhodné rozdělit na

Statické tabulky – plněné v pravidelných intervalech Dynamické – plněné on-line a navazatelné na statické

Potřeba omezit indexy, agregace

Page 117: Datové sklady a BI aplikace

Sledování zákazníka

Vhodné sledovat zákazníka podle tří hledisek (RFI) Recency – doba od posledního nákupu, interakce Frekvenci – jak často zákazník nakoupil, přišel do obchodu Intensity – jak produktivní to bylo, počet prodaného zboží

Sledují se za dané časové období, např. měsíc Lze definovat segmenty (data mining)

A: High-volume, repeat customer, good credit, few product returns B: High-volume, repeat customer, good credit, but many product returns C: Recent new customer, no established credit pattern D: Occasional customer, good credit E: Occasional customer, poor credit F: Former good customer, hasn't been seen recently G: Frequent window shopper, mostly unproductive H: Other

Page 118: Datové sklady a BI aplikace

Sledování zákazníka

Jednotlivé segmenty jsou textová fakta o zákazníkovy

Lze sledovat časové řady vývoj zákazníka John Doe: C C C D D A A A B B Podařilo se zákazníka převést z nového zákazníka,

přes příležitostného k velmi profitabilnímu zákazníkovi. Ale poslední dobou začal vracet produkty. Hrozí, že je s produkty nespokojen a bude chtít přejít ke konkurenci.

Page 119: Datové sklady a BI aplikace

Sledování zákazníka

Jak modelovat: 1. Záznam ve faktové tabulce pro každého zákazníka za každý

měsíc s textovým ukazatelem segmentu Problematické porovnávat vývoj zákazníka

2. SCD typ 2 – Segment – atribut podléhající SCD 2. Nový záznam o zákazníkovi je generován každý měsíc.

Problematické porovnávat vývoj zákazníka 3. Jednoduchá dimenze zákazníka s 24 atributy (časová řada 24

údajů o segmentu do historie) – SCD typ 3 Vhodné řešení, problém co po 24 měsících (předpokládáme, že se

zákazník scoruje každý měsíc) Lze kombinovat s SCD 2 pro sledování změny ostatních atributů – je

třeba doplnit nové score do všech záznamů zákazníka

Page 120: Datové sklady a BI aplikace

6. Přednáška

Page 121: Datové sklady a BI aplikace

Agenda BDLC

Plán projektu a projektový management Business požadavky Dimenzionální modelování – metodika

pokračování Architektura Fyzický design ETL Uživatelské aplikace Nasazení Správa a růst DW

Projektový management

Projektový plán

Definice

uživatelských

požadavků

Technická architektura

Výběr produktůinstalace

Dimensionální modelování

Fyzická úroveň

ETL procesy Nasazení

Údržba a růst

Uživatelské aplikace

specifikace

Uživatelské aplikace

vývoj

Projektový managementProjektový management

Projektový plán

Definice

uživatelských

požadavků

Technická architektura

Výběr produktůinstalace

Dimensionální modelování

Fyzická úroveň

ETL procesy Nasazení

Údržba a růst

Uživatelské aplikace

specifikace

Uživatelské aplikace

vývoj

Page 122: Datové sklady a BI aplikace

Budování dimensionálního modelu

Začít s maticí datová tržiště proti použité dimenze Datová tržiště zde volně chápáno jako skupina ukazatelů (faktu),

které má smysl sdružit dohromady (např. ukazatele obratu a aktivity na účtu)

Většinou datové tržiště z jednoho obchodního procesu (je jednodušší) s jedním datovým zdrojem

Lze potom kombinovat tržiště dohromady na složitější Datový tržiště (DM) se mohou překrývat (společná fakta)

Pro větší organizaci 10 až 30 DM Idea: Rozděl a panuj Ne vše do jednoho velkého tržiště Větší počet už se většinou hodně překrývá

Page 123: Datové sklady a BI aplikace

Budování dimensionálního modelu

Potřeba vzít v úvahu business potřeby a dostupné datové zdroje Vyvážení mezi aktuálními potřebami (ukazateli) a nejlépe dostupnými

zdroji -> umění DW Datová tržiště:

Začít od jednodušších – rychlí přínos pro uživatele Nejprve uvést jednoduší (jeden hlavní zdroj dat) Pak až složitější (více zdrojů dat – např. profitabilita)

Dimenze Ve sloupcích matice Pro každý DM

V buňkách matice je označeno zda se dimenze v DM používá Potřeba zjistit zda danou dimenzi je možné navázat na fakta (existuje

vazba ve zdrojových datech) Popis dimenzí a datových tržišť (description)

Page 124: Datové sklady a BI aplikace

Budování dimensionálního modelu

Data Mart Date BillingDate

Resolution Date

Time Customer Product …

Customer Usage Billing X X     X X

Call Detail Tracking X X   X X X

Vendor Contracts X   X        

Purchased Product Tracking X            

Materials Inventory X            

Service Call Tracking X   X   X    

… X   X   X    

Page 125: Datové sklady a BI aplikace

Budování dimensionálního modelu

Dimension Name Dimension Description

Date Contains all of the attributes associated with the date that activity occurred.

Time Contains attributes about the time when an activity occurred.

Billing Date Contains all of the attributes associated with the date that products and/or services were billed to the customer.

… …

Data Mart Name Data Mart Description

Customer Usage Billing Represents monthly customer billing at the product and price package grain.

Call Detail Tracking Detailed customer call activity that is included in customer usage billing.

Vendor ContractsSpecifics about the relationship between Telco and suppliers of products and services. This includes both parts and products sold to customers and items purchased for internal use (office supplies etc.)

… ...

Page 126: Datové sklady a BI aplikace

Budování dimensionálního modelu

Z matice je možné identifikovat conformed dimenze (BUS architektura)

Matice je základ pro politické schválení podoby jednotlivých conformed dimenzí všemi útvary, které ji budou používat Je navržena podoba všech dimenzí a schválena Podoba na obecné úrovni, problémy zdrojů dat a kvality se řeší ve

fázi implementace ETL Potom se přistoupí k návrhu faktových tabulek

Výběr DM Urči granualitu Vyber dimenze Urči ukazatele (fakta)

Page 127: Datové sklady a BI aplikace

Budování dimensionálního modelu

Při návrhu vycházet z podoby zdrojových dat jak jsou ne jak by měly být

Začít s jednoduchými DM (jeden zdroj dat) Deklarovat přesně granualitu faktové tabulky Výběr dimenzí

Určen zvolenou granualitou Každá dimenze která nabývá jediné hodnoty pro danou granualitu

faktů je kandidátem Jestliže dimenze nevyhovuje granualitě je možně

Vynechat dimenzi Změnit granualitu faktové tabulky Uvažovat o vztahu M:N a použití pomocné tabulky

Page 128: Datové sklady a BI aplikace

Budování dimensionálního modelu

Určit fakta s danou granualitou – nevkládat fakta s jinou granualitou Zmatek při tvorbě reportů

Výběr názvu dimenzí, DM, atributů a faktů by měl odrážet obchodní zvyklosti (terminologii uživatelů) V této fázi projektu se používají názvy, které potom

uvidí uživatelé

Stejné dimenze s různou rolí pojmenuj různě (např. čas začátku volání, čas konce volání)

Page 129: Datové sklady a BI aplikace

Budování dimensionálního modelu

Výsledky zdokumentovat Využít grafické prvky

Tabulku DM vs. Dimenze Diagram faktové tabulky Detail faktové tabulky Detail dimenzionální tabulky

Page 130: Datové sklady a BI aplikace

Diagram faktové tabulky

Grafický obrázek a popis faktové tabulky a dimenzí DM Faktová tabulka obsahuje název a popis granuality Dimenze

Napojené na faktovou tabulku Nenapojené z daného DM

Složí pro kontrolu, aby uživatelé viděli, které dimenze nepůjde s danou faktovou tabulkou využít

Názvy a popis dimenzí pod obrázkem Slouží

Pro komunikaci s uživateli Pro školení uživatelů

Umístění stejných dimenzí by mělo být na všech diagramech na stejném místě Přehlednější

Page 131: Datové sklady a BI aplikace

Diagram faktové tabulky

Billingmonth

Employee

Internalorganization

Localserviceprovider

Ratecategory

Product

Customer

Accountstatus

Location

Longdistanceprovider

Equipmenttype

Weather

Supplier

Callingparty

Calledparty

Customer billingline item fact

Table

Grain:line item oncustomer bill

Page 132: Datové sklady a BI aplikace

Detail faktové tabulky

Zaznamenat Fakta Odvozená fakta Další možná fakta vypočítána z předchozích skupin Potencionální fakta (nejsou pro ně zdroje)

Uživatelé vidí, že jejich názor byl vyslyšen

Agregace fakt (sum, semiaditive, neagregovatelné, …)

Page 133: Datové sklady a BI aplikace

Detail dimenzionální tabulky

Ukazuje pro dimenzi Atributy Základní granualitu Kardinalitu atributů dimenze Hierarchie Potencionální atributy (nejsou zatím v řešení)

Popis diagramu zahrnuje Název atributu Popis atributu Kardinalitu Ukázku hodnot SCD politiku (typ 1, 2 nebo 3)

Page 134: Datové sklady a BI aplikace

Detail dimenzionální tabulky

Den (365)Den (365)

Kalendářní rok (1)Kalendářní rok (1)

Kalendářní Měsíc (12)

Kalendářní Měsíc (12)

Prázdniny (14)Prázdniny (14)

Fiskální týden (52)Fiskální týden (52)

Fiskální rok (1)Fiskální rok (1)

Kalendářní Kvartál (4)

Kalendářní Kvartál (4)

Den v týdnu (7)Den v týdnu (7)

Víkend (52)Víkend (52)

Hodina (8 760)Hodina (8 760)

Budoucí možná granualita

Budoucí možný atribut

Granualita dimenze

Atributy

Více hierarchií

Page 135: Datové sklady a BI aplikace

Detail dimenzionální tabulky

Lze zaznamenat vztahy M:N Řešeno pomocnou tabulkou

Lze zaznamenat SCD

ZákazníkZákazník

RodinaRodina

StavStav

MěstoMěsto

PříjemPříjem

VozidloVozidlo

M:NSCD

Page 136: Datové sklady a BI aplikace

Budování dimensionálního modelu Vytvořit odpovídající model je interaktivní a týmová práce

Zkoumání zdrojových dat, změna granuality, spojení dimenzí, … Doporučeno nejprve vytvořit draft návrhu

Setkání zainteresovaných pracovníků Brainstorming, flip chart, … Specifické dotazy zaznamenat ale nezatěžovat se s nimi a vytvořit první

návrh Ten zdokumentovat a další pracovník mezitím hledá odpovědi na

položené otázky Pak se znovu sejit nad řešením

Postup tvorby draftu Identifikace DM Identifikace dimenzí (ty se pravděpodobně budou časem ještě měnit) Pro každý DM vyber dimenze a urči jejich granualitu Urči fakta pro DM Znovu překontroluj dimenze (objev nové dimenze, rozděl, spoj dimenze,

…)

Page 137: Datové sklady a BI aplikace

Budování dimensionálního modelu

Typy faktů (ukazatelů) Základní Odvozené a agregovatelné z základních

Lze je „uložit“ do faktové tabulky – mají stejnou granualitu Odvozené semiaditivní

S rozdílnou granualitou než faktová tabulka Např. sum prodeje od začátku roku do dnes

Potřeba zajistit že všechny odvozená fakta mají být z čeho spočtena Zjistit přesnou podobu výpočtu

Postup Identifikovat fakta (s reportů, od uživatelů, …) Odstranit duplicity Rozdělení na základní a odvoditelné Zjistit a zdokumentuj kalkulace odvozených faktů Zajistit že pro výpočet odvozených faktů jsou opravdu všechny základní

fakta v seznamu Schválení seznamu uživateli

Page 138: Datové sklady a BI aplikace

Budování dimensionálního modelu

Dokumentace faktů by měla zahrnovat Datové tržiště Název Popis Typ (základní, odvozený, odvozený semiaditivní, …) Agregační pravidlo (sum, avg, …) Způsob výpočtu

Page 139: Datové sklady a BI aplikace

Budování dimensionálního modelu Prezentuj výsledky IS pracovníků – kontrola z jejich strany Prezentuj klíčovým uživatelům

Zapisovat poznámky a otázky Představit koncept a postupně detaily

Příklady analytických otázek, na které model může odpovědět Vyburcovat uživatele k interakci

Ptát se na názory Pojmenování Jak by chtěli s daty pracovat …

Po úpravách prezentace širokému spektru uživatelů Nebuď zklamán když uživatelé nebudou nadšení z perfektně

odvedené práce Je to model jejich business a tak když je správný není pro ně překvapující Překvapení spíš bude, když model bude špatně Překvapeni budou až dostanou prví data, rychle a jednoduše

Page 140: Datové sklady a BI aplikace

Budování dimensionálního modelu

Všechny připomínky a otázky zaznamenat a řešit Obvykle jich může být až kolem 100

Jak mají vypadat hierarchie? Co znamená tento atribut? Nebude skutečně tento atribut důležitý pro analýzu? Nemá být tato dimenze rozdělena/spojena? Jak se tyto dva atributy liší? Umožní model uživatelům vidět co chtějí? Uvědomují si uživatelé smysl daného atributu? Že tento atribut

nepokrývá určitou oblast? Využil jsem všechny informace z provozních databází? Mají všechny atributy zdrojová data?

Page 141: Datové sklady a BI aplikace

Budování dimensionálního modelu

Aby bylo možno vytvořit dobrý model je třeba porozumět Uživatelským potřebám Zdrojovým systémům a datům

Zdrojová data Zdrojové systémy Ale často i personální databáze uživatelů (Excel, …)

Pro každá zdrojová data (ZD) Jaká dat obsahuje Jak jsou dostupná Kdo je za ně zodpovědný

Detailně poznat hlavní ZD a ZD určená pro první etapu Conformed dimenze většinou pocházejí z více zdrojů

(např. zákazník)

Page 142: Datové sklady a BI aplikace

Budování dimensionálního modelu

Seznam datových zdrojů by měl být výstupem fáze získávání uživatelských požadavků

Pro každý DZ popsat Název Odpovědný pracovník z business hlediska (kvalita dat) IS správce Platforma Umístění Popis

Vhodné je aby správci provozních databází byli vtaženi do procesu tvorby DW: Rychleji jsou tak předávány informace o změnách OLTP systémů Vhodnou formou je definování datového rozhraní (extraktů), které

správce provozního systému připravuje pro načtení do DW Extrakty jsou stejné ať se změní model provozní databáze Odpovědnost je přesunuta na správce (tvůrce) provozní databáze

Page 143: Datové sklady a BI aplikace

Budování dimensionálního modelu

Vhodné je začít projekt nad jednou provozní databází (pro jednoduchost) Conformed dimenze plněny případně z více zdrojů Někdy může být náročné integrovat (např. zákazníky –

odstranění duplicit, customer matching, householding ) Potom je vhodné začít zjednodušeně a postupně

zpřesňovat Je-li více možností odkud vzít data pak se

rozhodujeme dle Dostupnosti dat Kvality dat

Page 144: Datové sklady a BI aplikace

Budování dimensionálního modelu

Je třeba provést detailní analýzu datových zdrojů pro první etapu Využít datové modely, extrakty výběru dat, dokumentaci, …

Popsat IS správce Business správce Platforma Typ databáze (MS SQL, ORACLE, Excel, soubor) Fyzická lokace Objem dat, přírůstky (počet vět, MB) Primární a cizí klíče (integritní pravidla) Fyzické charakteristiky atributů (datové typy, délka, přesnost) Minulé snahy o integraci (proč neuspěly) Budoucnost zdroje (Nebude vyměněn za nový)

Page 145: Datové sklady a BI aplikace

Budování dimensionálního modelu

Vytvořit tabulku o mapování zdrojových dat na data v DW Mělo by zahrnovat:

Název tabulky Název sloupce Datový typ (logický pro DW – znak, číslo, datum) Délku Popis sloupce Zdrojová tabulka (soubor) Zdrojový sloupec Transformace (co je dosud známo, detailně bude až v dalších fázích –

ETL) Datového tržiště

Může být více zdrojů pro jeden atribut v DW Zahrnout i atributy, které zatím nemají zdroj dat (pro budoucí použití)

Page 146: Datové sklady a BI aplikace

Budování dimensionálního modelu

Rada: Tato fáze je velmi únavná pro celý tým Řešit hlavní problémy a otázky

Složité otázky zaberou v řešení kolik času jako prvních 50 otázek a mohou mít jen malý dopad

Nastavit priority Datově kritické Politicky kritické (business rozhodnutí jak řešit problém) Otázky pro budoucí řešení (bylo by hezké je vyřešit dnes ale

stálo by to mnoho úsilí)

Page 147: Datové sklady a BI aplikace

Budování dimensionálního modelu

Řešení by mělo být rozšiřitelné do budoucnosti Prohlédnout na konceptuální úrovni datové zdroje

pro další etapy Jak zapadají do modelu první etapy Všechny otázky sepsat a předložit odpovědným

pracovníkům (business sponzor, …) Buď rozhodnou pokračovat nebo se vrátit zpět a znovu měnit

analýzu (vytvořený model)

Page 148: Datové sklady a BI aplikace

Budování dimensionálního modelu

Pro modelování využít CASE modelovací nástroje Umožňují dokumentovat, tvorbu scriptů, některé i

transformace, …. Pro odhad velikosti databáze potřeba určit počet

řádek v každé tabulce Maximální velikost faktové tabulky a dimenzí:

Vynásobit počet řádků ve všech dimenzích x velikost řádku faktové tabulky plus velikost dimenzí.

Ve skutečnosti je ale faktová tabulka řidší (nejsou všechny kombinace) – potřeba odhadnout (např. analýzou zdrojových dat)

Page 149: Datové sklady a BI aplikace

Budování dimensionálního modelu

Je třeba navrhnout i agregace faktových a dimenzionálních tabulek (pro zvýšení výkonu – někdy nahrazuj OLAP) Agregace jsou uloženy ve vlastních faktových tabulkách Dimenze agregačních tabulek jsou uřezané verze dimenzí

původních tabulek

Odhadovaná doba této fáze (2 týdny až 12 měsíců) Záleží na rozsahu řešení, složitosti dat, složitosti odvětví,

dostupnosti a otevřenosti uživatelů, …

Page 150: Datové sklady a BI aplikace

Děkujeme za pozornost

Ing. David [email protected]