Analýza a modelování dat 5. přednáška Helena Palovská
Historie databázových modelů
Multidimenzionální model ●
Kvantitativní typ faktu s určitými hledisky – – např.: –
„Kdo komu kdy jak moc čeho prodal.“
–
kdo, komu, čeho, kdy – hierarchická hlediska: – – – – – ●
–
divize – pobočka – oddělení – pracovník region – země – kraj – okres – zákazník nadkategorie – kategorie – produkt rok – čtvrtletí – měsíc – den rok – týden – den
i více různých hierarchií pro jedno hledisko
hlediska jsou vzájemně nezávislá
Multi-dimenzionalita ● ●
Každé hledisko = jedna dimenze Kvantitativní ukazatel (measure) = číselná funkce v multi-dimenzionálním prostoru
Ukázka OLAP v MS Access: http://nb.vse.cz/~palovska/bivs/SevVi.zip
dimension
dimension dimension
hierarchy level hierarchy level
snímek z Accessu
measure dimension
hierarchy level
slice drill down
roll up
Agregace (roll up) ●
Nadřízené elementy „agregují“ measure –
rok agreguje čtvrtletí, ...
–
kategorie produktu agreguje její podkategorie
Více různých ukazatelů... ●
Pro stejné dimenze různé ukazatele (measures): –
množství
–
tržba
–
zisk
–
očekávané prodeje
–
...
Příklad http://msdn.microsoft.com/en-us/library/aa216772(SQL.80).aspx
Speciální varianta measure ●
ano/ne (žádný/nějaký)
●
„agregace“ je také ano/ne (žádný/nějaký)
Vlastnosti pozic (members) v dimenzích ●
Mohou mít popisné atributy –
●
váha, charakteristika, adresa
Dají se použít efektivní identifikátory –
množina pozic dané dimenze je většinou relativně stálá
Schéma 1
Schéma 2
Dotazovací jazyk (MDX) základní syntaxe
SELECT axis1 ON COLUMNS, axis2 ON ROWS FROM cube Příklady: Mosha Pasumansky
SELECT Years.MEMBERS ON COLUMNS, Regions.Continent.MEMBERS ON ROWS FROM Sales
Dotazovací jazyk (MDX) výběr pozic z dimenze
SELECT { Years.[1996], Years.[1997] } ON COLUMNS, Regions.Continent.MEMBERS ON ROWS FROM Sales
Dotazovací jazyk (MDX) slice
SELECT { Years.[1996], Years.[1997] } ON COLUMNS, Regions.Continent.MEMBERS ON ROWS FROM Sales WHERE ( Products.[Product Group].[Computers] )
Dotazovací jazyk (MDX) slice
SELECT { Years.[1996], Years.[1997] } ON COLUMNS, Regions.Continent.MEMBERS ON ROWS FROM Sales WHERE ( Products.[Product Group].[Computers], Customers.[AT&T] )
Dotazovací jazyk (MDX) slice
SELECT { Years.[1996], Years.[1997] } ON COLUMNS, Regions.Continent.MEMBERS ON ROWS FROM Sales WHERE ( Products.[Product Group].[Computers], Customers.[AT&T], Measures.[Units]
)
Dotazovací jazyk (MDX) více-dimenzionální výsledek
SELECT { Continent.[Europe], Continent.[Asia] } ON AXIS(0), { Product.[Computers], Product.[Printers] } ON AXIS(1), { Years.[1996], Years.[1997] } ON AXIS(2) FROM Sales
Dotazovací jazyk (MDX) výrazy
WITH MEMBER Measures.Profit AS 'Measures.Sales – Measures.Cost' SELECT Products.MEMEBERS ON COLUMNS, Year.MEMEBERS ON ROWS FROM Sales WHERE ( Measures.Profit )
Dotazovací jazyk (MDX) výrazy
WITH MEMBER Measures.Profit AS 'Measures.Sales – Measures.Cost' MEMBER Measures.ProfitPercent AS 'Measures.Profit / Measures.Cost', FORMAT_STRING = '#.#%' SELECT { Measures.Profit, Measures.ProfitPercent } ON COLUMNS FROM Sales
Dotazovací jazyk (MDX) výrazy
WITH MEMBER Time.[97 to 98] AS 'Time.[1998] – Time.[1997]' SELECT { Time.[97 to 98] } ON COLUMNS, Measures.MEMBERS ON ROWS FROM Sales
Dotazovací jazyk (MDX) výrazy
WITH MEMBER Measures.Profit AS 'Measures.Sales – Measures.Cost' MEMBER Time.[97 to 98] AS 'Time.[1998] – Time.[1997]' SELECT { Measures.Sales, Measures.Cost, Measures.Profit } ON COLUMNS, { Time.[1997], Time.[1998], Time.[97 to 98] } ON ROWS FROM Sales
Dotazovací jazyk (MDX) relativní odkazy
WITH MEMBER Measures.PercentageSales AS '(Regions.CurrentMember, Sales) / (Regions.CurrentMember.Parent, Sales)' , FORMAT_STRING = '#.00%' SELECT { Sales, PercentageSales } ON COLUMNS, Regions.Cities.MEMBERS ON ROWS FROM Sales
Dotazovací jazyk (MDX) relativní odkazy
WITH MEMBER Measures.[Sales Growth] AS '(Sales) – (Sales, Time.PrevMember)' SELECT { [Sales], [Sales Growth] } ON COLUMNS, Month.MEMBERS ON ROWS FROM Sales
Dotazovací jazyk (MDX) relativní odkazy
WITH MEMBER Measures.[Sales Growth] AS '(Sales) – (Sales, Time.PrevMember)' SELECT { [Sales], [Sales Growth] } ON COLUMNS, Product.MEMBERS ON ROWS FROM Sales
Dotazovací jazyk (MDX) množiny pozic
SELECT { [Europe], [USA], [USA].Children, [WA].Children, [Asia]} ON COLUMNS, Year.MEMBERS ON ROWS FROM Sales
Multidimenzionální model ●
Přednosti –
vhodný pro OLAP aplikace ●
●
logický pohled odpovídá OLAP dotazům
Nevhodný pro –
OLTP ●
zpracování transakcí business procesů
–
proměnlivé struktury a množiny prvků dimenzí
–
relační vyhledávání ●
knihovny, kina, dopravní spojení...
Populární vhled: http://www.dwreview.com/OLAP/Introduction_OLAP.html
Fyzická realizace ●
Molap –
●
Rolap –
●
sofistikované metody indexace a řešení řídkosti kostek
...
„jeden nástroj na vše“