Data Cube. Luboš Kulič Tomáš Kuthan

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

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

Operátory ROLLUP a CUBE

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

DATA CUBE. Mgr. Jiří Helmich

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

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

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

PG 9.5 novinky ve vývoji aplikací

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

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

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

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

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

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

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

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

Základní informace o co se jedná a k čemu to slouží

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

Základy business intelligence. Jaroslav Šmarda

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

Materializované pohledy

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Databázové systémy trocha teorie

Distanční opora předmětu: Databázové systémy Tématický blok č. 3: OLAP, operátory CUBE a ROLLUP Autor: RNDr. Jan Lánský, Ph.D.

Databáze SQL SELECT. David Hoksza

Databáze. datum jmeno prijmeni adresa_ulice adresa_mesto cislo_uctu platba zustatek

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

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

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Michal Krátký, Miroslav Beneš

kapitola 2 Datové sklady, OLAP

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

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

SQL - trigger, Databázové modelování

Jazyk SQL databáze SQLite. připravil ing. petr polách

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

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

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Databázové systémy I

5. POČÍTAČOVÉ CVIČENÍ

Databázové a informační systémy Jana Šarmanová

Optimalizace dotazů a databázové transakce v Oracle

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

10. Datové sklady (Data Warehouses) Datový sklad

Použití databází na Webu

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

Databázové systémy a SQL

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

Business Intelligence. Adam Trčka

Úvod do databázových systémů. Ing. Jan Šudřich

Business Intelligence

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

8.2 Používání a tvorba databází

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

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

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

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

Dobývání znalostí z databází. Databáze. datum jmeno prijmeni adresa_ulice adresa_mesto cislo_uctu platba zustatek

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

Databázové a informační systémy

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

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Datové modelování II

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Informační systémy 2006/2007

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

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

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

Multi-dimensional expressions

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

Oracle XML DB. Tomáš Nykodým

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

Nerelační databázové modely. Helena Palovská

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

Zápisování dat do databáze

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

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

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

STÁTNÍ POKLADNA. Integrovaný informační systém Státní pokladny (IISSP)

12. blok Pokročilé konstrukce SQL dotazů - část II

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

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

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

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

VŠB FEI - Technická Univerzita Ostrava. DAIS - Projekt. Dopravní podnik. Jméno: Matěj Kotyz (KOT0177)

Okruhy z odborných předmětů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

- sloupcové integritní omezení

Databázové systémy úvod

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

Stručný obsah. K2118.indd :15:27

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

TimescaleDB. Pavel Stěhule 2018

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Transkript:

Data Cube Luboš Kulič Tomáš Kuthan 31.10.2007

Osnova Motivace Použití DWH, analýza dat Operátory CUBE a ROLLUP teorie Podpora v reálných (SŘBD)

Motivace Většina souč. DB relační => zaznamenání vztahů Velmi často vztah nějakého subjektu k různým dimenzím př. subjektů zákazník, zaměstnanec, transakce, výrobek př. dimenzí čas, poloha (adresa...), peníze (cena/plat...)

Motivace Př. Prodej výrobků ID Výrobku Kategorie Podkategorie Prodejní ID Zákazníka Výrobku Výrobku Čas Prodeje Kanál Cena KS 35107 Jan Novák HW Síťové prvky 12.06.2007 19:05 Internet 1254 3 25667 Jiří Laušman SW OS 14.06.2007 10:15 Telefon 2666 1 34211 Eva Tichá HW Procesory 14.06.2007 12:24 Telefon 3522 2 16467 Petr Buben HW Monitory 15.06.2007 15:46 Prodejna 12629 1 21341 Jana Stará HW Pevné disky 24.06.2007 08:55 Internet 2856 2 Počet KS

Motivace Analýza dat Inf. systémy, účetnictví ( ) - potřeba pracovat s daty s přesností na každý záznam Lidé (především analytici, manažeři atp.) - spíše důležitý celkový pohled => agregovaná data

Motivace Analýza dat Př. Kolik jsem prodal od různých druhů výrobků Kolik výrobků jsem prodal v kterém městě Kolik výrobků jsem prodal v kterém měsíci

Motivace Analýza dat Velmi často chci analyzovat data o nějakém subjektu v závislosti na různých faktorech Na první pohled odpovídá reprezentaci v DB různé dimenze

Motivace Analýza dat Problém chtěl bych mít všechny závislosti najednou A nejlépe ještě možnost si v případě potřeby zpřesňovat/abstrahovat pohled (drill down/roll up) Klasické SQL nabízí pouze GROUP BY => agregace vzhledem k jedné dimenzi

Viz Excel Motivace - Příklad

Možné řešení Výsledných dat s agregáty je možné dosáhnout kombinací různých GROUP BY dotazů spojených pomocí UNION Pro každou požadovanou dimenzi je ale potřeba jeden UNION

Možné řešení SELECT Kategorie, "" as Podkategorie, "" as ID_Výrobku, sum(cena_ks * Počet_KS) as Tržby FROM Prodej_Výrobků WHERE Kategorie = HW GROUP BY Kategorie UNION ALL SELECT Kategorie, "" as Podkategorie, ID_Výrobku, sum(cena_ks * Počet_KS) as Tržby FROM Prodej_Výrobků WHERE Kategorie = HW GROUP BY Kategorie, Podkategorie UNION ALL...

Nevýhody Sjednocení mnoha dotazů používajících GROUP BY, pro každý nutný průchod daty a třídění => výpočetně velmi náročné Výsledek není běžný relační objekt řádky s mezisoučty jsou zvláštní

Datová kostka Zevšeobecnění agregačních funkcí a GROUP BY do více dimenzí

Datová kostka 0D jen agregační funkce 1D GROUP BY + agreg. fce 2D křížová tabulka (cross table) Tržby HW SW Celkový součet Internet Prodejna Telefon Celkový součet 67 362 63 272 14 222 144 856 18 040 11 776 7 998 37 814 85 402 75 048 22 220 182 670

Datová kostka 3 a více dimenzí datová kostka

Využití - DWH Datové sklady Místo, kde jsou uchovávána všechna data z podniku Typicky jako soubor dat z různých produkčních systémů ale jednotný pohled, čištění atd. Účelem mj. podpora rozhodování, řízení společnosti

Využití - DWH Pro účely analýz nad DWH se právě velmi hodí multidimenzionální pohled při rozhodování by neměla být žádná závislost zanedbaná Často potřeba interaktivity po položení dotazu výsledek vizualizován, analyzován a na základě toho položen další dotaz

Využití DWH Reporty OLAP Online Analytical Processing Oproti reportům interaktivní Přímo práce s kostkou možnost různě řezat, přecházet v rámci dimenzí nahoru/dolů, popř. skákat mezi různými dimenzemi Vytváření hypotéz a jejich ověřování, Co-kdyby (What-if) analýza atp.

Datová kostka v SQL

Příklad - schéma CREATE TABLE prodej_baget ( menza varchar2(20), datum date, bageta varchar2(20), prodano integer Menza Datum Bageta # Trója 10/30/07 cvalík 4 Trója 10/30/07 golf 2 Trója 10/31/07 cvalík 7 Trója 10/31/07 golf 1 Voršilská 10/30/07 cvalík 5 Voršilská 10/30/07 golf 6 Voršilská 10/31/07 cvalík 4 Voršilská 10/31/07 golf 0 );

Vyjádření v SQL92 SELECT to_char(datum) datum, bageta, sum(prodano) prodej FROM prodej_baget WHERE menza = 'Voršilská' GROUP BY datum, bageta UNION SELECT 'ALL', bageta,sum(prodano) FROM prodej_baget WHERE menza = 'Voršilská' GROUP BY bageta UNION SELECT to_char(datum), 'ALL',sum(prodano) FROM prodej_baget WHERE menza = 'Voršilská' GROUP BY datum UNION SELECT 'ALL', 'ALL', sum(prodano) FROM prodej_baget WHERE menza = 'Voršilská';

SQL 1999 - operátor CUBE SELECT to_char(datum), bageta, sum(prodano) FROM prodej_baget WHERE menza='voršilská' GROUP BY CUBE(datum, bageta); Den Bageta Prodano ALL ALL 15 ALL golf 6 ALL cvalík 9 10/30/07 ALL 11 10/30/07 golf 6 10/30/07 cvalík 5 10/31/07 ALL 4 10/31/07 golf 0 10/31/07 cvalík 4

Cena výpočtu Operace Cena SELECT STATEMENT 15 SORT 15 UNION-ALL HASH 4 TABLE ACCESS 2 HASH 4 TABLE ACCESS 2 HASH 4 TABLE ACCESS 2 SORT 3 TABLE ACCESS 2 Celkem 53 Operace Cena SELECT STATEMENT 3 SORT 3 GENERATE 3 SORT 3 TABLE ACCESS 2 Celkem 14 Operátor CUBE 'Obyčejné' GROUP BY

Výpočet datové kostky Menza Datum Bageta # Trója 10/30/07 cvalík 4 Trója 10/30/07 golf 2 Trója 10/31/07 cvalík 7 Trója 10/31/07 golf 1 Voršilská 10/30/07 cvalík 5 Voršilská 10/30/07 golf 6 Voršilská 10/31/07 cvalík 4 Voršilská 10/31/07 golf 0 staženo z http://xkcd.com

Datová kostka - výsledek Menza Den Bageta Počet ALL ALL ALL 29 ALL ALL golf 9 ALL ALL cvalík 20 ALL 30.10.2007 ALL 17 ALL 30.10.2007 golf 8 ALL 30.10.2007 cvalík 9 ALL 31.10.2007 ALL 12 ALL 31.10.2007 golf 1 ALL 31.10.2007 cvalík 11 Trója ALL ALL 14 Trója ALL golf 3 Trója ALL cvalík 11 Trója 30.10.2007 ALL 6 Trója 30.10.2007 golf 2 Trója 30.10.2007 cvalík 4 Trója 10/31/07 ALL 8 Trója 10/31/07 golf 1 Trója 10/31/07 cvalík 7 Voršilská ALL ALL 15 Voršilská ALL golf 6 Voršilská ALL cvalík 9 Voršilská 10/30/07 ALL 11 Voršilská 10/30/07 golf 6 Voršilská 10/30/07 cvalík 5 Voršilská 10/31/07 ALL 4 Voršilská 10/31/07 golf 0 Voršilská 10/31/07 cvalík 4

Velikost datové kostky Kostka na N atributech přibylo 2 N - 1 souhrnných hodnot Velikost kostky jsou-li kardinality atributů C 1, C 2,... C N pak horní odhad velikosti je Π(C i + 1)

Hodnota ALL Nové klíčové slovo SQL? podobné chování a problémy jako NULL Řešení - nahrazení ALL symbolem NULL tz. seskupovací NULL (GROUPING NULL) Jak odlišit od běžného NULL? nový predikát GROUPING() GROUPING(<název_sloupce>) vrací 1, pokud hodnota NULL ve sloupci je seskupovací jinak vrací 0

GROUPING -- přidáme řádek s nevyplněným datem INSERT INTO prodej_baget VALUES ('Voršilská',NULL,'cvalík',1); -- použijeme GROUPING pro jeho identifikaci SELECT to_char(datum) datum, sum(prodano), grouping(datum) gd FROM prodej_baget WHERE menza='voršilská' AND bageta='cvalík' GROUP BY CUBE(datum); Datum Prodej GD NULL 1 0 NULL 10 1 30.10.2007 5 0 31.10.2007 4 0 Poznámka: formálně jde o převod mezi n-ticemi ( ALL, f() ) ( NULL, f(), 1 )

GROUPING_ID není součást standardu, menší podpora kompaktnější vyjádření než GROUPING pomocí bitové mapy Př: Menza Datum Bageta Prodej GID NULL NULL cvalík 1 4 NULL NULL cvalík 21 6

Histogram Souhrny přes vypočítané kategorie ve standardu SQL92 nebylo možné řešilo se pomocí hnízděného poddotazu SELECT year(datum), month(datum), dayofweek(datum), sum(prodano) FROM prodej_baget GROUP BY ROLLUP(year(datum), month(datum), dayofweek(datum)) Rok Měsíc Den Prodej 2007listopad úterý 17 2007listopad středa 12 2007listopad ALL 29 2007ALL ALL 29 ALL ALL ALL 30

ROLLUP někdy nepotřebujeme souhrny přes všechny kombinace atributů vybudování celé kostky je nákladné ne všechny kombinace musí dávat smysl Operátor ROLLUP produkuje hierarchii podle pořadí atributů méně hodnot

ROLLUP - Příklad SELECT menza, to_char(datum), bageta, sum(prodano) FROM prodej_baget GROUP BY ROLLUP(menza, datum, bageta); Menza Datum Bageta Počet Trója 30.10.2007 golf 2 Trója 30.10.2007 cvalík 4 Trója 30.10.2007 ALL 6 Trója 31.10.2007 golf 1 Trója 31.10.2007 cvalík 7 Trója 31.10.2007 ALL 8 Trója ALL ALL 14 Voršilská 30.10.2007 golf 6 Voršilská 30.10.2007 cvalík 5 Voršilská 30.10.2007 ALL 11 Voršilská 31.10.2007 golf 0 Voršilská 31.10.2007 cvalík 4 Voršilská 31.10.2007 ALL 4 Voršilská ALL ALL 15 ALL ALL ALL 29

GROUPING SETS Další alternativa ke CUBE a ROLLUP novější rozšíření SELECT menza, to_char(datum),bageta, sum(prodano) FROM prodej_baget GROUP BY GROPING SETS(menza, (bageta,datum)); Menza Datum Bageta Prodano ALL 30.10.2007 cvalík 9 ALL 31.10.2007 golf 1 ALL 30.10.2007 golf 8 ALL 31.10.2007 cvalík 11 Trója ALL ALL 14 Voršilská ALL ALL 15

Množinový význam CUBE(A,B,C) (A,B,C), (A,B), (A,C), (B,C), (A), (B), (C), () ROLLUP(A,B,C) (A,B,C), (A,B), (A), () GROUPING SETS((A,C),(B,C),B) (A,C), (B,C), (B)

Syntax GROUP BY CUBE<aggregation list> Standard SQL1999 [3] Oracle, DB2, MS SQL Server ASA - Adaptive Server Anywhere GROUP BY <aggregation list> WITH CUBE návrh standardu [1] T-SQL ASA

Kombinování operátorů Operátory tvoří hierarchii GROUP BY ROLLUP CUBE Můžeme je za sebe skládat v pořadí GROUP BY <select list> ROLLUP <select list> CUBE <select list>

Kombinování operátorů - příklad SELECT datum, menza, bageta, sum(prodano) FROM prodej_baget GROUP BY datum, ROLLUP(menza, bageta) Datum Menza Bageta Prodano 30.10.2007 Trója golf 2 30.10.2007 Trója cvalík 4 30.10.2007 Trója ALL 6 30.10.2007 Voršilská golf 6 30.10.2007 Voršilská cvalík 5 30.10.2007 Voršilská ALL 11 30.10.2007 ALL ALL 17 31.10.2007 Trója golf 1 31.10.2007 Trója cvalík 7 31.10.2007 Trója ALL 8 31.10.2007 Voršilská golf 0 31.10.2007 Voršilská cvalík 4 31.10.2007 Voršilská ALL 4 31.10.2007 ALL ALL 12

Podpora v SŘBD Podporují specifikaci T431 Oracle DB2 MS SQL Server, ASA Prozatím nepodporují MySQL, PgSQL, Derby

Závěr Operátor CUBE rozšiřuje SQL konstrukci GROUP BY zefektivňuje vícedimenzionální dotazování umožňuje počítat souhrny nad vypočtenými kategoriemi Někdy je dobré zvážit použití úspornější verze ROLLUP

Zatajeno Definování uživatelských agregačních funkcí Infromix Illustra Implementace operátorů dělení agregačních funkcí distributivní, algebraické, holistické Materializace datové kostky a její údržba

Literatura [1] J. Gray, A. Bosworth, A. Layman, and H. Pirahesh. Data cube: A relational aggregation operator generalizing group-by, cross-tab, and sub-totals. In Proc. 12th ICDE, pages 152--159, New Orleans, March 1996 [2] A. Beaulieu, S. Mishra. Mastering Oracle SQL, 2nd Edition, O'Reilly, June 2004 [3] SQL1999. ansi-iso-9075-2-1999, September 1999 [4] Chris Eaton. blog, http://blogs.ittoolbox.com/database/technology/archives/, as visited 29.10.2007 [5] Markus Jaegle. Grouping_id. Technical Background Info, April 2002 [6] http://wiki.apache.org/db-derby/ as visited on 29.10.2007... a dokumentace jednotlivých SŘBD