Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

CUBE - Operátor relační agregace David Hoksza. 2 Aplikace pro analýzu dat Formulace dotazu Extrakce dat Vizualizace výsledků Analýza výsledků.

Podobné prezentace


Prezentace na téma: "CUBE - Operátor relační agregace David Hoksza. 2 Aplikace pro analýzu dat Formulace dotazu Extrakce dat Vizualizace výsledků Analýza výsledků."— Transkript prezentace:

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

2 2 Aplikace pro analýzu dat Formulace dotazu Extrakce dat Vizualizace výsledků Analýza výsledků

3 3 Modelování n-dimenzionálního problému plochými tabulkami Počasí

4 4 Dimenzionální redukce (agregace) ve vizualizačních nástrojích Histogramy Křížové tabulky Součty, podsoučty, …

5 5 Dimenzionální redukce v SQL Agregační funkce – COUNT() – SUM () – MIN() – MAX() – AVG() Operátor GROUP BY

6 6 Příklady agregace SELECT AVG(Tepl) F ROM Pocasi; SELECT COUNT(DISTINCT Cas) FRO M Pocasi; SELECT Cas, Vyska, AVG(Tepl) FROM Pocasi GROUP BY Cas, Vyska;

7 7 Problémy GROUP BY Histogramy Roll-up součty, drill-down podsoučty Křížové tabulky

8 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;

9 9 Řešení roll up není relační

10 10 Řešení roll up 2 N agregačních sloupců

11 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 WHEREModel = '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 WHEREModel = 'Chevy' GROUP BYModel, Rok, Barva;

12 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;

13 13 Křížové tabulky (1) cross-tabulation, cross tab Předchozí jsou relační formou křížové tabulky Obvyklá reprezentace v reportech

14 14 Křížové tabulky (2)

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

16 16 Dimenze CUBE

17 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(*)

18 18 Příklad (1) CUBE SELECT Model, Rok, Barva, SUM(prodeje) as Prodeje FROM Prodeje WHERE Model in (‘Ford’, ‘Chevy’) AND Rok BETWEEN 1900 AND 1992 GROUP BY CUBE Model, Rok, Barva

19 19 Příklad (2) SELECT Den, stat, MAX(Tepl) FROM Pocasi GROUP BY CUBE Den(Cas) AS Den, Zeme(Sirka, Delka) AS stat;

20 20 Sémantika CUBE Provádění CUBE: – Klasický GROUP BY přes – Postupná záměna za ALL => superagregáty

21 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()).

22 22 Výhody ROLLUP Rychlejší Výhodné pro kumulativní agregáty (přirozeně lineární množina výsledků)

23 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) = CUBE ROLLUP(GROUP BY) = ROLLUP Použití: GROUP BY ROLLUP CUBE

24 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;

25 25 Syntaxe Současná: GROUP BY { [collate clause], …} Rozšířená: GROUP BY ::= {( | ) [ AS ] [ ],…} Nová: GROUP BY [ ] [ ROLLUP ] [ CUBE ]

26 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

27 27 ALL() ALL reprezentuje množinu Funkce ALL() vrací množinu, nebo NULL Zjištění, zda je sloupec agregát

28 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

29 29 Problémy ALL Tvoří speciální případy Nutí pracovat s hodnotami jako s množinami Lze vynechat

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

31 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)

32 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

33 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 kontitnent FROM Pocasi GROUP BY CUBE Den(Cas) AS Den, Zeme(Sirka, Delka) AS stat

34 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)

35 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ů)

36 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í

37 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 Možnost definovat cenu funkce => Prostor pro optimalizátor

38 38 2 N - algoritmus Alokování prostoru pro každou buňku kostky Pro každý nový (x 1, …, x N, v) Iter(ukazatel, v) – tzn. 2 N krát (xi nebo ALL) Final(&ukazatel) pro každý z Π(C i +1) uzlů kostky Kardinalita základní tabulky T => T*2 N volání Iter() Lze zrychlit podle typu agregační funkce

39 39 Typy agregačních funkcí Mějme 2-dimenzionální množinu hodnot {X ij |I=1,…I;j=1,…J} Typy funkcí: – Distributivní – Algebraické – Holistické

40 40 Distributivní funkce Agregační funkce F() je distributivní, existuje-li funkce G() tž.: F({X i,j }) = G({F({X i,j |I=1,…,I}) | j=1,…,J}) Př.: – MIN(), MAX(), SUM() ….. F=G – COUNT() … G=SUM()

41 41 Algebraické funkce Agregační funkce F() je algebraická, existuje-li funkce G() vracející n-tici a funkce H() tž.: F({X i,j }) = H({G({X i,j |I=1,…,I}) | j=1,…,J}) Př.: Average(), MaxN(), MinN()

42 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({X i,j |I=1,…,I}) Př.: Median(), MostFrequent()

43 43 Počítání super-agregátů holistické funkce Není znám efektivnější postup než 2 N -algoritmus používající standardní techniky GROUP BY

44 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,x 2,…,x N ) = F({CUBE(u,x 2,…,x N )}) Distributivnost umožňuje agregaci agregátů

45 45 Počítání super-agregátů algebraické funkce Spíše než subagregáty je nutno si pamatovat n-tice z vyšších dimenzí!

46 46 Shrnutí Operátor CUBE generalizuje a sjednocuje: Agregáty GROUP BY Histogramy Roll-upy Kříž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


Stáhnout ppt "CUBE - Operátor relační agregace David Hoksza. 2 Aplikace pro analýzu dat Formulace dotazu Extrakce dat Vizualizace výsledků Analýza výsledků."

Podobné prezentace


Reklamy Google