CUBE - Operátor relační agregace

Slides:



Advertisements
Podobné prezentace
Aplikační a programové vybavení
Advertisements

KIV/ZIS Cvičení 6 SQL - SELECT.
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Business intelligence
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Databázové systémy SQL Výběr dat.
YDASYS1 Ing. Monika Šimková.
Fakulta elektrotechniky a informatiky
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
AGREGACE Distinct, Group By, Having, SUM, …. DISTINCT  Slučování stejných řádků ve výsledku dotazu. AGREGACE 2 JménoPříjmeníID FrantišekVomáčka1 JosefPokorný2.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Temporální databáze a TSQL
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Temporální Databáze Jaroslav Dražan. Čím se budeme zabývat Proč je čas v DB důležitý Práce s časem pomocí klasického SQL Reprezentace časové domény Spojování.
Dotazovací jazyk pro setříděná data Tereza Cihelková, Matěj Klonfar.
Lukáš Navrátil, Dotazovací jazyky I, MFF UK
FORMALIZACE PROJEKTU DO SÍŤOVÉHO GRAFU
Databáze Jiří Kalousek.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
REDUKCE DAT Díváme-li se na soubory jako na text, pak je tento text redundantní. Redundance vyplývá z:  některé fráze nebo slova se opakují  existuje.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Informatika pro ekonomy II přednáška 10
SQL – základní pojmy Ing. Roman Danel, Ph.D.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Rauer Luboš Kopic Petr Blažek Tomáš. Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý.
Databázové systémy Přednáška č. 3.
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Databázové systémy Tomáš Skopal
Fuzzy SQL Jaroslav Tykal, Jiří Dokulil. Proč Fuzzy Přesné vs. „nepřesné“ hodnoty Kdo má nejvyšší plat Kdo má vysoký plat Výhody přesnosti Jednoznačná.
Databázové systémy UIN010 N-ticový (řádkový) relační kalkul Hodnoty proměnných n-tice relací (řádky) Konstanty hodnoty atributů Unární funkční.
Databázové modelování
Informatika II PAA DOTAZOVACÍ JAZYKY
Aplikační a programové vybavení
Databázové systémy Informatika pro ekonomy, př. 18.
Databáze velké množství dat pevně dané struktury
Definice fraktální (vnitřní) dimenze a její aplikace v databázích
XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.
Databázové systémy SQL Výběr dat.
TEMPORÁLNÍ DATABÁZE A TSQL2
Progress SQL92 Optimalizátor Jan Lánský
Statistické databáze a OLAP: Podobnosti a rozdíly Michal Král
Data Warehousing Růst obratu: $10 miliard v 1999
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
J. Pokorný, I Halaška1 DBS: SQL92 Jaroslav Pokorný MFF UK, Praha
Teorie zpracování dat RELAČNÍ DATOVÝ MODEL.
23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ-
Databázové systémy I Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Příkazy jazyka SQL ve VFP a na SQL Serveru
Perzistence XML dat Kamil Toman
Doc. RNDr. František Koliba, CSc. Katedry Informatiky a matematiky OPF SU Budova A Informatika pro ekonomy II INM / BPNIE Přednáška.
Úvod do databázových systémů
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Databázové systémy I Přednáška 8 Databázové systémy 1 – KIT/IDAS1
Výpočetní technika Akademický rok 2008/2009 Letní semestr
Databázové systémy 1 – KIT/IDAS1 Ing. Monika Borkovcová, Ph.D.
Databázové systémy a SQL
Informatika pro ekonomy přednáška 8
A5M33IZS – Informační a znalostní systémy
Optimalizace SQL dotazů
Dotazovací jazyk SQL - II
Přednáška 7 SQL – JOIN.
Transkript prezentace:

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 Křížové tabulky Součty, podsoučty, …

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

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;

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

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;

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

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

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

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

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

Křížové tabulky (2)

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

Dimenze CUBE

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

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

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

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

Operátor ROLLUP CUBE může být být moc => vznik operátoru ROLLUP 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()).

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

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 <select list> ROLLUP <select list> CUBE <select list>

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;

Syntaxe Současná: Rozšířená: Nová: 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> ]

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

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

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

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

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

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)

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

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

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)

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

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í

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

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

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é

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

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

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

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

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ů

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

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