46
CUBE - Operátor relační agregace David Hoksza

CUBE - Operátor relační agregace

Embed Size (px)

DESCRIPTION

CUBE - Operátor relační agregace. David Hoksza. Aplikace pro analýzu dat. Formulace dotazu Extrakce dat Vizualizace výsledků Analýza výsledků. Modelování n-dimenzionálního problému plochými tabulkami. Počasí. Dimenzionální redukce (agregace) ve vizualizačních nástrojích. Histogramy - PowerPoint PPT Presentation

Citation preview

Page 1: CUBE  -  Operátor relační agregace

CUBE - Operátor relační agregace

David Hoksza

Page 2: CUBE  -  Operátor relační agregace

2

Aplikace pro analýzu dat

Formulace dotazu Extrakce dat Vizualizace výsledků Analýza výsledků

Spread Sheet

Table

1

1015

1012

109

106

103

Size vs Speed

Access Time (seconds)10-9 10-6 10-3 10 0 10 3

Cache

Main

Secondary

Disc

Nearline Tape Offline

Tape

OnlineTape

104

102

100

10-2

10-4

Price vs Speed

Access Time (seconds)10-9 10-6 10-3 10 0 10 3

Cache

MainSecondary

Disc

Nearline Tape

OfflineTape

OnlineTape

Size(B) $/MB

Visualize

ExtractAnalyze &Formulate

Page 3: CUBE  -  Operátor relační agregace

3

Modelování n-dimenzionálního problému plochými tabulkami

Čas Šířka Délka Výška Teplota Tlak96/6/1:1500 37:58:33N 122:45:28W 102 21 1009. . . . . .. . . . . .. . . . . .96/6/7:1500 34:16:18N 27:05:55W 10 21 1024

Počasí

Page 4: CUBE  -  Operátor relační agregace

4

Dimenzionální redukce (agregace) ve vizualizačních nástrojích

Histogramy Křížové tabulky Součty, podsoučty, …

Page 5: CUBE  -  Operátor relační agregace

5

Dimenzionální redukce v SQL

Agregační funkce– COUNT()– SUM ()– MIN()– MAX()– AVG()

Operátor GROUP BY

Page 6: CUBE  -  Operátor relační agregace

6

Příklady agregace

SELECT AVG(Tepl) FROM Pocasi;

SELECT COUNT(DISTINCT Cas) FROM Pocasi;

SELECT Cas, Vyska, AVG(Tepl)

FROM Pocasi

GROUP BY Cas, Vyska;

Page 7: CUBE  -  Operátor relační agregace

7

Problémy GROUP BY

Histogramy Roll-up součty, drill-down podsoučty Křížové tabulky

Page 8: CUBE  -  Operátor relační agregace

8

GROUP BY a histogramy

SELECT Den, stat, MAX(Tepl) FROM Pocasi GROUP BY Den(Cas) AS Den,

Stát(Sirka, Delka) AS stat;

NELZE

SELECT Den, stat, MAX(Tepl)FROM ( SELECT Den(Cas) AS Den,

Stat(Sirka, Delka) AS stat,

Tepl FROM Pocasi ) AS foo

GROUP BY Den, stat;

Page 9: CUBE  -  Operátor relační agregace

9

Řešení roll up

Model Rok Barva

Prodeje by Model by

Rok by Barva

Prodeje by Model by

Rok

Prodeje by Model

Chevy 1994 cerna 50

bila 40

90

1995 cerna 85

bila 115

200

290

Roll Up prodejů podle modelu, roku, barvy

není relační

Page 10: CUBE  -  Operátor relační agregace

10

Řešení roll up

Model Rok Barva

Prodeje by Model by

Rok by Barva

Prodeje by Model by

Rok

Prodeje by Model

Chevy 1994 cerna 50 90 290

Chevy 1994 bila 40 90 290

Chevy 1995 cerna 85 200 290

Chevy 1995 bila 115 200 290

Roll Up prodejů podle modelu, roku, barvy

2N agregačních sloupců

Page 11: CUBE  -  Operátor relační agregace

11

Řešení roll up – hodnota ALL(1)

Přetížení hodnot sloupce => přidání ALL SELECT Model, ‘ALL’, ‘ALL’, SUM(Prodeje)

FROM Prodeje WHERE

Model = 'Chevy' GROUP BY Model UNION SELECT Model, Rok, ‘ALL’, SUM(Prodeje) FROM Prodeje

WHERE Model = 'Chevy' GROUP BY

Model,Rok UNION SELECT Model, Rok, Barva, SUM(Prodeje)

FROM Prodeje WHERE

Model = 'Chevy'GROUP BY Model, Rok, Barva;

Model Rok Barva Jednotky

Chevy 1994 cerna 50

Chevy 1994 bila 40Chevy 1994 ALL 90Chevy 1995 cerna 85Chevy 1995 bila 115Chevy 1995 ALL 200Chevy ALL ALL 290

Page 12: CUBE  -  Operátor relační agregace

12

Řešení roll up – hodnota ALL(2)

Symetrická agregace:UNION

SELECT Model, ALL, Barva, SUM(Prodeje)

FROM Prodeje

WHERE Model = 'Chevy'

GROUP BY Model, Barva;

Model Rok Barva Jednotky

Chevy ALL cerna 135

Chevy ALL bila 155

Page 13: CUBE  -  Operátor relační agregace

13

Křížové tabulky (1)

cross-tabulation, cross tab

Předchozí jsou relační formou křížové tabulky

Obvyklá reprezentace v reportech

Page 14: CUBE  -  Operátor relační agregace

14

Křížové tabulky (2)

Chevy 1994 1995 total (ALL)

cerna 50 85 135

bila 40 115 155 total (ALL) 90 200 290

Ford 1994 1995 total (ALL)

cerna 50 85 135

bila 10 75 85 total (ALL) 60 160 220

Page 15: CUBE  -  Operátor relační agregace

15

Problémy

Složitý SQL zápis (6D dotaz => 64 UNION) Optimalizace

Page 16: CUBE  -  Operátor relační agregace

16

Dimenze CUBE

REDWHITEBLUE

By Color

By Make & Color

By Make & Year

By Color & Year

By MakeBy Year

Sum

The Data Cube and The Sub-Space Aggregates

REDWHITEBLUE

Chevy Ford

By Make

By Color

Sum

Cross TabRED

WHITEBLUE

By Color

Sum

Group By (with total)Sum

Aggregate

Page 17: CUBE  -  Operátor relační agregace

17

Celkové a dílčí agregace CUBE

CUBE tvoří tabulku se všemi dimenzemi

celková agregace funkcí f():

ALL, ALL, ….., ALL, f(*)

Dílčí agregace (vyšší dimenze)

…, ALL, …ALL, …, f(*)

Page 18: CUBE  -  Operátor relační agregace

18

Příklad (1)

SALES Model Year Color Sales Chevy 1990 red 5 Chevy 1990 white 87 Chevy 1990 blue 62 Chevy 1991 red 54 Chevy 1991 white 95 Chevy 1991 blue 49 Chevy 1992 red 31 Chevy 1992 white 54 Chevy 1992 blue 71 Ford 1990 red 64 Ford 1990 white 62 Ford 1990 blue 63 Ford 1991 red 52 Ford 1991 white 9 Ford 1991 blue 55 Ford 1992 red 27 Ford 1992 white 62 Ford 1992 blue 39

DATA CUBE Model Year Color Sales ALL ALL ALL 942 chevy ALL ALL 510 ford ALL ALL 432 ALL 1990 ALL 343 ALL 1991 ALL 314 ALL 1992 ALL 285 ALL ALL red 165 ALL ALL white 273 ALL ALL blue 339 chevy 1990 ALL 154 chevy 1991 ALL 199 chevy 1992 ALL 157 ford 1990 ALL 189 ford 1991 ALL 116 ford 1992 ALL 128 chevy ALL red 91 chevy ALL white 236 chevy ALL blue 183 ford ALL red 144 ford ALL white 133 ford ALL blue 156 ALL 1990 red 69 ALL 1990 white 149 ALL 1990 blue 125 ALL 1991 red 107 ALL 1991 white 104 ALL 1991 blue 104 ALL 1992 red 59 ALL 1992 white 116 ALL 1992 blue 110

CUBE

SELECT Model, Rok, Barva, SUM(prodeje) as ProdejeFROM ProdejeWHERE Model in (‘Ford’, ‘Chevy’) AND Rok BETWEEN 1900 AND 1992GROUP BY CUBE Model, Rok, Barva

Page 19: CUBE  -  Operátor relační agregace

19

Příklad (2)

SELECT Den, stat, MAX(Tepl)

FROM Pocasi

GROUP BY CUBE

Den(Cas) AS Den,

Zeme(Sirka, Delka) AS stat;

Page 20: CUBE  -  Operátor relační agregace

20

Sémantika CUBE

Provádění CUBE:– Klasický GROUP BY přes <select list>– Postupná záměna za ALL => superagregáty

Page 21: CUBE  -  Operátor relační agregace

21

Operátor ROLLUP

CUBE může být být moc– Chci pouze roll-up nebo drill-down– Funkční závislosti atributů

=> vznik operátoru ROLLUP Produkuje pouze superagregáty:

(v1 , v2 , …., vn , f()),(v1 , v2 , …., ALL, f()),....(v1 , ALL, …., ALL, f()),(ALL, ALL, …., ALL, f()).

Page 22: CUBE  -  Operátor relační agregace

22

Výhody ROLLUP

Rychlejší Výhodné pro kumulativní agregáty (přirozeně

lineární množina výsledků)

Page 23: CUBE  -  Operátor relační agregace

23

Algebra pro operátory GROUP, CUBE, ROLLUP

CUBE od GROUP BY je CUBE CUBE od ROLLUP je CUBE ROLLUP od GROUP BY je ROLLUP Tedy:

CUBE(ROLLUP) = CUBEROLLUP(GROUP BY) = ROLLUP

Použití:GROUP BY <select list>

ROLLUP <select list>CUBE <select list>

Page 24: CUBE  -  Operátor relační agregace

24

Příklad složení

SELECT Manufacturer, Rok , Mesic, Den, Barva, Model

SUM(cena) AS Vynos

FROM Prodeje

GROUP BY Manufacturer,

ROLLUP Rok(Cas) AS Rok ,

Mesic(Cas) AS Mesic,

Den(Cas) AS Den,

CUBE Barva, Model;

Manufacturer Year, Mo, Day

Mo

de

l x

Co

lor

cu

be

s

Page 25: CUBE  -  Operátor relační agregace

25

Syntaxe

Současná:GROUP BY {<column jmeno> [collate clause], …}

Rozšířená:GROUP BY <aggregation list>

<aggregation list> ::=

{(<column jmeno> | <expression>)

[ AS <correlation jmeno> ]

[ <collate clause> ]

,…}

Nová:GROUP BY [ <aggregation list> ]

[ ROLLUP <aggregation list> ]

[ CUBE <aggregation list> ]

Page 26: CUBE  -  Operátor relační agregace

26

Diskuse hodnoty ALL

Co je ALL?– Model.ALL = ALL(Model) = {Chevy, Ford}– Model.ALL = ALL(Rok) = {1990, 1991, 1992}– Model.ALL = ALL(Barva) = {red, white, blue} hnízděné relace

Page 27: CUBE  -  Operátor relační agregace

27

ALL()

ALL reprezentuje množinu

Funkce ALL() vrací množinu, nebo NULL

Zjištění, zda je sloupec agregát

Page 28: CUBE  -  Operátor relační agregace

28

Přidání ALL do SQL

Nové klíčové slovo ALL [NOT] ALLOWED do definice sloupce a

systémového katalogu Interpretace operátorů jako množinových (=) Ostatní prvky domény => singltony

Page 29: CUBE  -  Operátor relační agregace

29

Problémy ALL

Tvoří speciální případy

Nutí pracovat s hodnotami jako s množinami

Lze vynechat

Page 30: CUBE  -  Operátor relační agregace

30

Nahrazení ALL

Místo ALL použít NULL Neimplementovat ALL() Implementovat GROUPING() pro rozlišení

mezi NULL a ALL

Page 31: CUBE  -  Operátor relační agregace

31

Nahrazení ALL - příklad

SELECT Model,Rok,Barva,SUM(prodeje),

GROUPING(Model),

GROUPING(Rok),

GROUPING(Barva)

FROM Prodeje

GROUP BY CUBE Model, Rok, Barva;

Dostaneme:

(NULL, NULL, NULL, 941, TRUE, TRUE, TRUE)

Místo

(ALL, ALL, ALL, 941)

Page 32: CUBE  -  Operátor relační agregace

32

Dekorace

Sloupce, které nejsou v GROUP BY, ale jsou na nich funkčně závislé

SELECT oddeleni.jmeno, sum(prodeje)

FROM prodeje JOIN oddeleni USING (oddeleni_cislo)

GROUP BY prodeje.oddeleni_cislo;

oddeleni.jmeno není v SQL92 povoleno

Page 33: CUBE  -  Operátor relační agregace

33

Dekorace – nový přístup

Je-li dekorace funkčně závislá na agregaci, pak je v SELECT listu povolena

Dekorace interagují s agregačními sloupci:

SELECT Den,stat,MAX(Tepl), kontitnent(stat) AS kontitnentFROM PocasiGROUP BY CUBE Den(Cas) AS Den, Zeme(Sirka, Delka) AS stat

den stat max(Tepl) kontinent

25.1.1995 USA 28 North America

ALL USA 37 North America

25.1.1995 ALL 41 NULLALL ALL 48 NULL

Page 34: CUBE  -  Operátor relační agregace

34

Schémata dimenzí

Ukládáno mnoho informacích o akci => dimenze

Schéma sněhové vločky (snowflake schema) Hvězdicové schéma (star schema)

Page 35: CUBE  -  Operátor relační agregace

35

Snowflake - příklad

Tabulky dimenzí mohou obsahovat i dekorace (např. další informace o kanceláři…)

Dimenze se mohou dále štěpit (např. týdny nezapadají do měsíců)

ALL

DivisionGroup

Unit

ALL

Channel Discount District

Region

Geography

WeekMonth

QuarterYear

Product Seller Buyer Units Price Office Date

ALL

ALL

ALL

Cust Type

ALL

Page 36: CUBE  -  Operátor relační agregace

36

Počítání CUBE a ROLLUP

Zobecnění GROUP BY => stejné techniky výpočtu

Počítaní agregátů na co nejnižší systémové úrovni Omezit přesuny dat Používat pole nebo hashování pro reprezentaci

agregačních sloupců v paměti Pro velké agregáty (řetězce) používat hashování

Page 37: CUBE  -  Operátor relační agregace

37

Definice a implementace agregačních funkcí

1. Inicializace agregační funkce 2. Volání agregace pro každou novou hodnotu 3. Získání výsledné hodnoty

Scratchpad

start

next

end

Možnost definovat cenu funkce =>

Prostor pro optimalizátor

Page 38: CUBE  -  Operátor relační agregace

38

2N - algoritmus

Alokování prostoru pro každou buňku kostky Pro každý nový (x1, …, xN, v) Iter(ukazatel, v)

– tzn. 2N krát (xi nebo ALL)

Final(&ukazatel) pro každý z Π(Ci+1) uzlů kostky

Kardinalita základní tabulky T => T*2N volání Iter() Lze zrychlit podle typu agregační funkce

Page 39: CUBE  -  Operátor relační agregace

39

Typy agregačních funkcí

Mějme 2-dimenzionální množinu hodnot {Xij|I=1,…I;j=1,…J}

Typy funkcí:– Distributivní– Algebraické– Holistické

Page 40: CUBE  -  Operátor relační agregace

40

Distributivní funkce

Agregační funkce F() je distributivní, existuje-li funkce G() tž.:F({Xi,j}) = G({F({Xi,j|I=1,…,I}) | j=1,…,J})

Př.: – MIN(), MAX(), SUM() ….. F=G– COUNT() … G=SUM()

Page 41: CUBE  -  Operátor relační agregace

41

Algebraické funkce

Agregační funkce F() je algebraická, existuje-li funkce G() vracející n-tici a funkce H() tž.:F({Xi,j}) = H({G({Xi,j|I=1,…,I}) | j=1,…,J})

Př.: Average(), MaxN(), MinN()

Page 42: CUBE  -  Operátor relační agregace

42

Holistické funkce

Agregační funkce F() je holistická, jestliže neexistuje konstanta omezující velikost subagregátu tj.:Neexistuje konstanta M charakterizující F({Xi,j|I=1,

…,I})

Př.: Median(), MostFrequent()

Page 43: CUBE  -  Operátor relační agregace

43

Počítání super-agregátů holistické funkce

Není znám efektivnější postup než 2N-algoritmus používající standardní techniky GROUP BY

Page 44: CUBE  -  Operátor relační agregace

44

Počítání super-agregátů distributivní funkce

Z N-té dimenze spočítáme (N-1)-tou dimenzi projekcí (agregací) jedné dimenze

Př.:CUBE(ALL,x2,…,xN) = F({CUBE(u,x2,…,xN)})

Distributivnost umožňuje agregaci agregátů

Page 45: CUBE  -  Operátor relační agregace

45

Počítání super-agregátů algebraické funkce

Spíše než subagregáty je nutno si pamatovat n-tice z vyšších dimenzí!

Page 46: CUBE  -  Operátor relační agregace

46

Shrnutí

Operátor CUBE generalizuje a sjednocuje:AgregátyGROUP BYHistogramyRoll-upyKřížové tabulky

CUBE je založen na ALL (označení sloupce přes který se agreguje)

Někdy se vyplatí pouze ROLLUP Jednoduše spočitatelné pro distributivní a algebraické

funkce