DATA CUBE. Mgr. Jiří Helmich



Podobné dokumenty
Operátory ROLLUP a CUBE

Dotazovací jazyky I. Datová krychle. Soběslav Benda

Data Cube. Luboš Kulič Tomáš Kuthan

Analýza a modelování dat. Přednáška 9

Analýza a modelování dat. Přednáška 8

PG 9.5 novinky ve vývoji aplikací

Databáze SQL SELECT. David Hoksza

Úvod do databázových systémů

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Data Cube. Štefan Tomáš. Severýn

Úvod do databázových systémů 3. cvičení

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Databáze I. Přednáška 6

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Dotazy tvorba nových polí (vypočítané pole)

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Jazyk S Q L základy, příkazy pro práci s daty

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Databázové systémy I

Informační systémy ve zdravotnictví. 10. cvičení

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Dotazování v relačním modelu a SQL

Databázové systémy. Agregace, sumarizace, vnořené dotazy. Vilém Vychodil

5. blok Souhrnné a skupinové dotazy

KIV/ZIS cvičení 5. Tomáš Potužák

Úvod do databázových systémů

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Úvod do databázových systémů

KIV/ZIS - SELECT, opakování

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

kapitola 2 Datové sklady, OLAP

Databázové systémy. Cvičení 6: SQL

Databázové systémy a SQL

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Marketingová komunikace. 3. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK3PH (vm3bph)

Databázové systémy Tomáš Skopal

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

Kapitola 4: SQL. Základní struktura

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

6. blok část B Vnořené dotazy

Multi-dimensional expressions

Databázové systémy. Dotazovací jazyk SQL - II

Databázové systémy a SQL

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

On line analytical processing (OLAP) databáze v praxi

MS Access Dotazy SQL

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

Informační systémy ve zdravotnictví. 6. cvičení

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze accdb. SQL dotazy. budeme probírat pouze SELECT

Informační systémy ve zdravotnictví. 8. cvičení

- sloupcové integritní omezení

Spark SQL, Spark Streaming. Jan Hučín

Analýza a modelování dat 3. přednáška. Helena Palovská

Materializované pohledy

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9

Spark SQL, Spark Streaming. Jan Hučín

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

MS Access Dotazy SQL

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

FAKULTA STAVEBNÍ STUDIJNÍ PROGRAM: GEODÉZIE A KARTOGRAFIE TYP PROGRAMU: MAGISTERSKÝ STUDIJNÍ OBOR: GEOMATIKA ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT

Databáze. Logický model DB. David Hoksza

3 zdroje dat. Relační databáze EIS OLAP

Dotazovací jazyk pro řazená data

Základní přehled SQL příkazů

Ukládání a vyhledávání XML dat

Osnova je orientační pro FIT, u FEKTu se dá předpokládat, že budou zohledněny předchozí znalosti studentů, kde většina s databází nikdy přímo

Obsah. SQL konstrukce select join Rekurze (rekurzivní with) Analytické funkce, group by Pivoting

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Zpracování informací

6. blok část C Množinové operátory

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Úvod do databázových systémů

Databázové systémy Cvičení 5.3

Kapitola 3: Relační model. Základní struktura. Relační schéma. Instance relace

Materiál ke cvičením - SQL

Formální sémantika SQL dotazování

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Datový sklad. Datový sklad

QAD Business Intelligence

Databázové systémy Cvičení 5.2

Úvod do databázových systémů

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

KIV/ZIS cvičení 6. Tomáš Potužák

Databáze I. 1. přednáška. Helena Palovská

Databáze I. Přednáška 4

6. SQL složitější dotazy, QBE

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Analýza dat s využitím MS Excel

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

Databázové systémy Cvičení 5

1. Relační databázový model

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Transkript:

DATA CUBE Mgr. Jiří Helmich

Analytické kroky formulace dotazu analýza extrakce dat vizualizace

Motivace n-sloupcová tabulka v Excelu vs. sloupcový graf Dimensionality reduction

n dimenzí data obecně uspořádána do n dimenzí vizualizace = projekce do 2D nebo 3D příklad: mapa poloha na mapě = 2D (lat, lng) + hodnota v daném místě = 3D + časový údaj (timeline) = 4D + barva = 5D

Dimensionality reduction redukce dat z n dimenzí na počet dimenzí vizualizace SUMARIZACE toho, co je důležité

Příklad sumarizace prodej automobilů model rok prodeje barva značka distributor datum prodeje

Klasické SQL konstrukty Jak dosáhnout redukce počtu dimenzí? relační datbáze: relace s n atributy Počasí čas lat lng výška [m] teplota [C] tlak [HPa] 1.6.1996 15:00 37:58:33N 122:45:28W 102 21 1009 7.6.1996 15:00 34:16:18N 27:05:55W 10 23 1024 dimenze hodnoty

Klasické SQL konstrukty redukce dimenzí ~ sumarizace ~ agregace agregační funkce COUNT SUM MIN MAX AVG operátor GROUP BY

Agregace SELECT AVG(teplota) FROM pocasi; SELECT COUNT(DISTINCT teplota) FROM pocasi; Redukce všech vybraných hodnot na jedinou hodnotu.

GROUP BY 1. rozdělení tabulky na skupiny 2. agregace skupin pomocí agregační funkce

GROUP BY SELECT cas, vyska, AVG(teplota) FROM pocasi GROUP BY cas, vyska; čas lat lng výška [m] teplota [C] AVG(teplota) 1.6.1996 15:00 37:58:33N 122:45:28W 102 21 21 1.6.1996 15:00 34:16:18N 27:05:55W 10 23 23 1.6.1996 16:00 34:16:18N 27:05:55W 10 27 27 1.6.1996 16:00 34:16:18N 27:05:55W 102 30 1.6.1996 16:00 37:58:33N 122:45:28W 102 24 27

Další agregace median standardní odchylka variace střed úhlová rychlost a další doménově specifické funkce

Implementace GROUP BY Init(handle) { sum = 0 } Iter(handle, value) { sum += value } value = Final(handle) { return sum } Init(handle) { sum = 0; count = 0 } Iter(handle, value) { sum += value; ++count } value = Final(handle) { return (sum/count) }

Agregace /Red Brick/ Rank(expr) pro N hodnot v tabulce expr je minimum z hodnot ve sloupci: 1 expr je maximum z hodnot ve sloupci: N N_tile(expr, n) rozdělí tabulku na n hodnotových (zhruba stejně velkých) rozsahů vrátí číslo (index) rozsahu, do kterého patří expr Ratio_To_Total(expr) sečte všechny výrazy vrátí podíl expr oproti získané sumě

N_tile - příklad SELECT percentil, MIN(teplota), MAX(teplota) FROM pocasi GROUP BY N_tile(teplota, 10) as percentil HAVING percentil = 5; 1. rozdělí tabulku na 10 podobně velkých skupin 2. v každé skupině spočte MIN a MAX 3. vybere řádek s 5. skupinou (prostředních 10 % všech teplot)

Kumulativní agregace Cumulative(expr) součet dosavadních hodnot v uspořádaném seznamu Running_sum(expr, n) součet n posledních hodnot v uspořádaném seznamu prvních n-1 hodnot je NULL Running_average(expr, n) průměr

Nedostatky GROUP BY GROUP BY neumožňuje přímou tvorbu histogramů některé systémy ano, ale mimo standard SELECT den, stat, MAX(teplota) FROM pocasi GROUP BY DAY(cas) AS den, NATION(lat, lng) AS stat; Denní maximum v dané zemi.

Histogramy dle SQL92 SELECT den, stat, MAX(teplota) FROM (SELECT DAY(cas) AS den, NATION (lat, lng) AS stat, teplota FROM pocasi ) AS tmp GROUP BY den, stat; Nejprve transformace, poté agregace.

roll-up & drill-down reporty nejprve pomocí hrubých agregací postupně odkrýváme detaily

roll-up & drill-down Model Rok Barva Chevy 1994 černá 50 bílá 40 1995 černá 85 bílá 115 Prodej - model - rok - barva Prodej - model - rok 90 200 Prodej - model 290 roll-up podle modelu, roku a barvy 2 N agregačních sloupců! (6D = 64)

roll-up & drill-down Model Rok Barva Prodej - model - rok - barva Prodej - model - rok Chevy 1994 černá 50 90 290 Chevy 1994 bílá 40 90 290 Chevy 1995 černá 85 200 290 Chevy 1995 bílá 115 200 290 Prodej - model roll-up podle modelu, roku a barvy [Date]

roll-up & drill-down Model rok/barva 1994 mezisoučet 1995 mezisoučet černá bílá černá bílá 1994 1995 součet Chevy 50 40 90 85 115 200 290 Ford 50 10 60 85 75 160 220 Součet 100 50 150 170 190 360 510 roll-up podle modelu, roku a barvy [Excel Pivot]

Hodnota ALL méně sloupců SELECT ALL, ALL, ALL, SUM(prodeje) FROM prodeje WHERE model = Chevy UNION 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 Kusů Chevy 1994 černá 50 Chevy 1994 bílá 40 Chevy 1994 ALL 90 Chevy 1995 černá 85 Chevy 1995 bílá 115 Chevy 1995 ALL 200 Chevy ALL ALL 290 ALL ALL ALL 290

Roll-up Není symetrický! Pivot počítá meziagregace podle všech agregovaných sloupců (všechny kombinace) Roll-up dle GROUP-BY Model Rok Barva Kusů Chevy ALL černá 135 Chevy ALL bílá 155 UNION SELECT model, ALL, barva, SUM(prodeje)

Kontingenční tabulky Kontingenční tabulka je výsledkem symetrické agregace Chevy 1994 1995 Součet (ALL) černá 50 85 135 bílá 40 115 155 Součet (ALL) 90 200 290 Ford 1994 1995 Součet (ALL) černá 50 85 135 bílá 10 75 85 Součet (ALL) 60 160 220

Problémy GROUP BY Velikost dotazů je závislá na počtu dimenzí 6D = 64-way UNION 64 průchodů daty 64 třídění/hashování

Operátory CUBE a ROLLUP Myšlenka: zavést operátor, který provede agregace postupně na všech úrovních 0D 2D 1D 3D ALL, ALL, ALL,, ALL, f(*) = SUM (0D)

Operátor CUBE

Operátor CUBE nagenerovat množinu všech podmnožin agregací rozšíření GROUP BY GROUP BY je speciální případ CUBE SELECT den, stat, MAX(teplota) FROM pocasi GROUP BY CUBE DAY(cas) AS den, NATION(lat, lng) AS stat;

Operátor CUBE 1. klasická agregace přes <select list> atributy z GROUP BY 2. UNION super-agregací globální kostky substituce hodnot za ALL N atributů v <select list> ~ 2 N -1 superagregací

Operátor CUBE C 1,C 2,, C N kardinality N atributů ze <sel. list> kardinalita výsledné kostky: (C i +1) +1 pro každý atribut za hodnotu ALL

ROLLUP pokud chceme data pro roll-up nebo drill-down report, je CUBE kanón na vrabce ROLLUP(v1,, vn) (v1, v2,, vn, f()), (v1, v2,, ALL, f()),. (v1, ALL,, ALL, f()), (ALL, ALL,, ALL, f()).

ROLLUP vs. CUBE ROLLUP (YEAR, MONTH, DAY) YEAR, MONTH, DAY YEAR, MONTH YEAR () CUBE YEAR, MONTH, DAY YEAR, MONTH YEAR, DAY YEAR MONTH, DAY MONTH DAY ()

Algebra => syntaxe CUBE(ROLLUP) = CUBE ROLLUP(GROUP BY) = ROLLUP GROUP BY <select list> ROLLUP <select list> CUBE <select list>

Příklad SELECT vyrobce, rok, mesic, den, barva, model, SUM(cena) AS zisk FROM prodej GROUP BY vyrobce, ROLLUP YEAR(cas) AS rok, MONTH(cas) AS mesic, DAY(cas) AS den, CUBE barva, model;

Syntaxe GROUP BY <aggregation list> <aggregation list> ::= { (<column name> <expression> ) [ AS <correlation name> ] [ <collate clause> ], } Rozšíření GROUP BY nezávislé na CUBE

Syntaxe GROUP BY [ <aggregation list> ] [ ROLLUP <aggregation list> ] [CUBE <aggregation list> ]

ALL nové klíčové slovo model.all = ALL(model) = {Chevy, Ford} rok.all = ALL(rok) = {1994,1995} barva.all = ALL(barva) = {černá, bílá} definice sloupce: ALL [NOT] ALLOWED podpora operátorů = a IN operátor GROUPING(): ALL() IS NOT NULL Jak je to náročné?

ALL jde to i bez něj? ALL je jako NULL mnoho speciálních případů vyžaduje vnímání množiny jako hodnoty návrh NULL místo ALL neimplementovat ALL implementovat GROUPING pro rozlišení ALL a NULL

ALL jako NULL SELECT model, rok, barva, SUM(prodej), GROUPING(model), GROUPING(rok), GROUPING(barva) FROM prodej GROUP BY CUBE model, rok, barva; ALL (NULL, NULL, NULL, 941, TRUE, TRUE, TRUE) ALL (ALL, ALL, ALL, 941

Decorations sloupce, které nejsou v GROUP BY ale jsou funkčně závislé na GROUPING() SELECT oddeleni.jmeno, SUM(prodej) FROM prodej JOIN oddeleni USING (cislo_oddeleni) GROU BY prodej.cislo_oddeleni; jméno oddělení není agregační sloupec jméno oddělení závislé na agregované hodnotě

Decorations SELECT den, stat, MAX(teplota), continent(stat) AS kontinent FROM pocasi GROUP BY CUBE DAY(cas) AS den, country(lat, lng) AS stat; den národ MAX(teplota) kontinent 25.1.1995 USA 28 Severní Amerika ALL USA 37 Severní Amerika 25.1.1995 ALL 41 NULL ALL ALL 48 NULL

Snowflake a star schémata tabulka pozorování dekorační tabulky pro každou dimenzi granularita tvoří čistou hierarchii

Užitečné zkratky SELECT Model,Year,Color,SUM(Sales), SUM(Sales)/ (SELECT SUM(Sales) FROM Sales WHERE Model IN { Ford, Chevy } AND Year Between 1990 AND 1992 ) FROM Sales WHERE Model IN { Ford, Chevy } AND Year Between 1990 AND 1992 GROUP BY CUBE Model, Year, Color ; SELECT Model, Year, Color SUM(Sales) AS total, SUM(Sales) / total(all,all,all) FROM Sales WHERE Model IN { Ford, Chevy } AND Year Between 1990 AND 1992 GROUP BY CUBE Model, Year, Color;

Výpočet ROLLUP a CUBE 1. seřadit řádky podle hodnot agregačních atributů 2. spočítat agregační funkce CUBE je UNION několika ROLLUP

Výpočet agregace algebraické MaxN, MinN, Avg distributivní count, max, min, sum alokace handle pro každou buňku n-tice (x 1,x 2,...,x N, v): 2 N x Iter() x i nebo ALL pro N hodnot tabulka kardinality T T x 2 N

Udržování kostky

Literatura Data Cube: A Relational Aggregation Operator Generalizing Group-By, Cross-Tab, and Sub- Totals Jim Gray Surajit Chaudhuri, Adam Bosworth, Andrew Layman, Don Reichart, Murali Venkatrao, Frank Pellow, Hamid Pirahesh