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



Podobné dokumenty
Operátory ROLLUP a CUBE

DATA CUBE. Mgr. Jiří Helmich

Data Cube. Luboš Kulič Tomáš Kuthan

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

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

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

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

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

5. blok Souhrnné a skupinové dotazy

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

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.

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

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

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

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

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

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

Materializované pohledy

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

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

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

Databázové systémy I

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Základy business intelligence. Jaroslav Šmarda

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

Databáze SQL SELECT. David Hoksza

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

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

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

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

kapitola 2 Datové sklady, OLAP

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

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

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

4. blok část A Logické operátory

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

Multi-dimensional expressions

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

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

Databázové systémy trocha teorie

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

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

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

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

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

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

KIV/ZIS - SELECT, opakování

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

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

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

Informační systémy 2006/2007

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

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

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

Kapitola 4: SQL. Základní struktura

Dolování v objektových datech. Ivana Rudolfová

Databázové systémy a SQL

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

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

Datové sklady. Ing. Jan Přichystal, Ph.D. 1. listopadu PEF MZLU v Brně

Business Intelligence

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

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

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.

PG 9.5 novinky ve vývoji aplikací

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

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

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í

Ing. Roman Danel, Ph.D. 2010

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

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

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

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

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

QAD Business Intelligence

Dolování asociačních pravidel

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

Databázové systémy Tomáš Skopal

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

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

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

Okruhy z odborných předmětů

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Paralelní dotazy v PostgreSQL 9.6 (a 10.0)

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

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

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

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

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

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

4IT218 Databáze. 4IT218 Databáze


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

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

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen

Oracle XML DB. Tomáš Nykodým

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

Transkript:

Dotazovací jazyky I Datová krychle Soběslav Benda

Obsah Úvod do problematiky Varianty přístupu uživatelů ke zdrojům dat OLTP vs. OLAP Datová analýza Motivace Vytvoření křížové tabulky Datová krychle Teorie Operátory CUBE a ROLLUP Použití SQL syntax SŘBD

Úvod do problematiky (1) V relačních databázích zaznamenáváme různé subjekty a vztahy mezi nimi Subjekty mají různé vlastnosti (atributy) Výrobek název, čas_výroby, kategorie Měření teploty naměřená_hodnota, čas_měření, území Subjekty mají vztahy k různým dimenzím Dimenze = typické kategorie pro analýzu obchodních dat Příklad: čas, geografická poloha, kategorie, Kolik jsem vyrobil ve kterém měsíci? Jaké byly průměrné denní teploty v různých krajích?

Úvod do problematiky (2) Na data se obvykle potřebujeme dotazovat z různých perspektiv Dvě kategorie dotazů: Dotazy pro výběr konkrétních záznamů Jaké filmy hrají dnes v kině Světozor? Jaké dvojice zákazníků mají stejnou adresu? Dotazy pro zachycení celků Kolik zákazníků žije v Praze? Kolik průměrně filmů hrála pražská kina v každém měsíci předchozího roku?

Úvod do problematiky (3) Dvě kategorie přístupů k datům: Uživatelé přistupují k datům denně OLTP (Online transakční zpracování) Řízení změn dat v tabulkách během provádění obchodních procesů Načítání určitých záznamů Modifikace existujících záznamů Uživatelé hledají smysl ohromného množství dat OLAP (Online analytické zpracování) Sumární náhledy na data Reporty Sestavy Hledání vzorů v datech, rozhodování, udržení podniku na úrovni potřebné k úspěšnému přežití na trhu

Úvod do problematiky (4) Datová analýza Formulace dotazu Získání agregovaných hodnot Vizualizace výsledků Chceme všechny závislosti najednou - sledování vývoje, rozdílů Vizualizace 2D a 3D objektů Dimenzionální redukce - agregace přes počítané kategorie (histogramy), křížové tabulky, částečné součty, Analýza výsledků a formulace nových dotazů zpřesňování/zobecňování pohledů

Úvod do problematiky (5) Histogram = jeden ze způsobů vizualizace dat Souhrny přes vypočítané kategorie Příklad: Počasí(čas, z_šířka, z_výška, teplota) Pro každé území chceme minimální měsíční teplotu. Moderní SQL systémy podporují histogramy přímo (není potřeba používat hnízděné dotazy jako v SQL92) SELECT měsíc, území, MIN(teplota) FROM Počasí GROUP BY Měsíc(čas) AS měsíc, Území(z_šířka,z_výška) AS území Mnohem zajímavějším problémem jsou např. křížové tabulky

Motivace (1) Demonstrace vytvoření křížové tabulky Mějme tabulku obsahující záznamy o počtech zvířat v prodejních pobočkách. zvirata(druh, pobocka, počet) druh pobocka pocet pes Praha 12 pes Brno 14 pes Ostrava 5 kočka Ostrava 9 kočka Praha 18 želva Brno 4 želva Ostrava 1

Motivace (2) Z uvedených dat chceme získat souhrnný report (křížovou tabulku): Otázky: Praha Brno Ostrava ALL pes 12 14 5 31 kočka 18 9 27 želva 4 1 5 ALL 30 18 15 63 Jaké nástroje můžeme v SQL systémech využít? Jak použít rychlou a efektivní cestu?

Motivace (3) Agregační funkce Vytváření základních souhrnných informací Možno aplikovat na všechny řádky vrácené klauzulemi FROM a WHERE Použití se vztahuje k hodnotám daného sloupce tabulky Agregační funkce vrací jednu hodnotu Standardní agregační funkce COUNT() - možno použít na všechny sloupce SUM() MIN() MAX() AVG() Mnoho SQL systémů přidává doménově specifické (statistické, fyzikální, finanční analýza, ) Některé systémy umožňují přidávat vlastní

Motivace (4) Výpis počtu všech zvířat: SELECT SUM(pocet) FROM zvirata Výpis počtu psů ve všech pobočkách: SELECT SUM(pocet) FROM zvirata WHERE druh='pes' Výpis počtu všech zvířat v pražské pobočce: SELECT SUM(pocet) FROM zvirata WHERE pobocka='praha'

Motivace (5) Operátor GROUP BY Umožňuje aplikovat agregační funkce na několik skupin v jednom dotazu Řádky, které projdou filtrem WHERE se konceptuálně rozdělí na skupiny, pro které je hodnota zadaného sloupce (sloupců) stejná Získáváme tabulku skupin a na jednotlivé skupiny se pak aplikuje agregační funkce (každá skupina přispívá jedním řádkem do výsledné tabulky) Syntaxe: SELECT { <sloupec> <výraz>, } FROM <odkaz na tabulku> WHERE <podmínka> GROUP BY { <odkaz na sloupec>, }

Motivace (6) Výpis všech poboček s počtem zvířat: SELECT pobocka, SUM(pocet) FROM zvirata GROUP BY pobocka Výpis všech druhů zvířat s jejich počtem ve všech pobočkách: SELECT druh, SUM(pocet) FROM zvirata GROUP BY druh

Motivace (7) Je možno získat data pro report jedním dotazem prostředky které známe? ALL(druh) = {kočka, pes, želva} Praha Brno Ostrava ALL pes 12 14 5 31 kočka 18 9 27 želva 4 1 5 ALL 30 18 15 63 druh pobočka počet ALL ALL 63 ALL Brno 18 ALL Ostrava 15 ALL Praha 30 kočka Ostrava 9 kočka Praha 18 kočka ALL 27 pes Brno 14 pes Ostrava 5 pes Praha 12 pes ALL 31 želva Brno 4 želva Ostrava 1 želva ALL 5

Motivace (8) Použití GROUP BY a UNION Hodnoty ALL budou ve výsledné tabulce reprezentované jako řetězce SELECT druh, pobocka, pocet FROM zvirata UNION SELECT druh,'all', SUM(pocet) FROM zvirata GROUP BY druh UNION SELECT 'ALL', pobocka, SUM(pocet) FROM zvirata GROUP BY pobocka UNION SELECT 'ALL','ALL', SUM(pocet) FROM zvirata

Motivace (9) Použití GROUP BY a UNION Zápis dotazu je dlouhý Pro každou požadovanou dimenzi je potřeba jeden UNION Výpočetně náročné = pro každý poddotaz se prochází data zvonu, třídění výsledků, hašové výpočty, Nejednotný přístup = ALL jsou řetězce Řešení = operátor CUBE Vytvoří tabulku, která bude mít všechny agregované hodnoty CUBE(druh, pobocka) SELECT druh, pobocka, SUM(pocet) FROM zvirata GROUP BY druh, pobocka WITH CUBE

Motivace (10) SELECT druh,pobocka,sum(pocet) FROM zvirata GROUP BY druh,pobocka WITH CUBE druh pobočka počet ALL ALL 63 ALL Brno 18 ALL Ostrava 15 ALL Praha 30 kočka Ostrava 9 MS SQL Server 2005 2x rychlejší než GROUP BY a UNION kočka Praha 18 kočka ALL 27 pes Brno 14 pes Ostrava 5 pes Praha 12 pes ALL 31 želva Brno 4 želva Ostrava 1 želva ALL 5

Datová krychle (1) N-Dimenzionální zobecnění agregací: 0-D agregační funkce 1-D GROUP BY 2-D křížová tabulka 3-D datová krychle >3-D datová hyper-krychle

Datová krychle (2) Příklad: demonstrace 3D-agregace Prodej pečiva (kusy v řádech tisíců) Tabulka: prodej_pečiva(datum, město, druh, prodáno)

Datová krychle (3) Množinový význam CUBE(A, B, C) (A) (B) (C) (A, B) (A, C) (B, C) (A, B, C) Pro CUBE na N atributech bude ve výsledné tabulce 2 N - 1 souhrnných hodnot CUBE(druh, pobočka) (druh), (pobočka), (druh, pobočka) druh pobočka počet ALL ALL 63 ALL Brno 18 ALL Ostrava 15 ALL Praha 30 kočka Ostrava 9 kočka Praha 18 kočka ALL 27 pes Brno 14 pes Ostrava 5 pes Praha 12 pes ALL 31 želva Brno 4 želva Ostrava 1 želva ALL 5

Datová krychle (4) Kardinalita výsledné kostky CUBE nad N atributy, které mají kardinalitu C 1, C 2,, C N je kardinalita výsledné kostky (horní odhad) = (C 1 +1) x x (C N + 1) Příklad: zvirata(druh, pobocka, počet) Druh = {pes, kočka, želva}, C 1 = 3 Pobočka = {Praha, Brno, Ostrava}, C 2 = 3 CARD(CUBE) = (3 + 1) x (3 + 1) = 16 Počet řádků v naší kostkce bylo 14

Datová krychle (5) Někdy nepotřebujeme všechny agregace Všechny kombinace nemusí dávat smysl Stačí produkovat hierarchii dle pořadí atributů Vybudování celé kostky je drahá operace ROLLUP(A, B, C) (A, B, C), (A, B), (A) ROLLUP(druh, pobočka) (druh, pobočka), (druh) Praha Brno Ostrava ALL pes 12 14 5 31 kočka 18 9 27 želva 4 1 5 ALL 63

Datová krychle (6) Operátory tvoří hierarchii GROUP BY, ROLLUP a CUBE mají zajímavou algebru: CUBE(ROLLUP) = CUBE CUBE(GROUP BY) = CUBE ROLLUP(GROUP BY) = ROLLUP Operátory můžeme skládat Nejsilnější varianta: GROUP BY <sloupce> ROLLUP <sloupce> CUBE <sloupce>

Datová krychle (7) Příklad kombinování operátorů prodej_pečiva(datum, město, druh, prodáno) SELECT datum, město, druh, SUM(prodáno) FROM prodej_pečiva GROUP BY datum, ROLLUP(město, druh) Agregace pro všechna města a všechna města a druhy GROUP BY nad datum

Datová krychle (8) - syntaxe GROUP BY <atributy> WITH CUBE Návrh standardu MS SQL Server 2005 GROUP BY CUBE <atributy> SQL99 Oracle IBM DB2 MS SQL Server > 2005

Datová krychle (9) - syntaxe GROUP BY <atributy> WITH ROLLUP Návrh standardu MS SQL Server 2005 GROUP BY ROLLUP <atributy> SQL99 Oracle IBM DB2 MS SQL Server > 2005

Datová krychle (10) hodnota ALL Co je to hodnota ALL? Každá hodnota ALL v podstatě reprezentuje množinu (množinu přes kterou byla spočtena agregace) Příklad: ALL(druh) = {pes, kočka, želva} ALL(pobočka) = {Praha, Brno, Ostrava} Nechceme zavádět nové klíčové slovo Podobné problémy jako s NULL

Datová krychle (11) hodnota ALL Jak se s ALL vypořádat? Nahrazení ALL symbolem NULL, tzv. seskupovací NULL Nový predikát GROUPING(sloupec), který dokáže odlišit seskupovací NULL od běžných NULL Návratové hodnoty: 1 = hodnota NULL je seskupovací 0 = jinak

Datová krychle (12) hodnota ALL SELECT CASE WHEN GROUPING(druh)=1 THEN 'xxx' ELSE druh END AS druh, CASE WHEN GROUPING(pobocka)=1 THEN 'xxx' ELSE pobocka END AS pobočka, SUM(počet) as počet, FROM zvirata GROUP BY druh,pobocka WITH CUBE druh pobočka počet xxx xxx 63 xxx Brno 18 xxx Ostrava 15 xxx Praha 30 kočka Ostrava 9 kočka Praha 18 kočka xxx 27 pes Brno 14 pes Ostrava 5 pes Praha 12 pes xxx 31 želva Brno 4 želva Ostrava 1

Datová krychle (13) Doporučení pro implementace výpočtů agregací: výpočty agregací právědet na co nejnižší systémové úrovni používat pole a hašování k organizaci agregačních sloupců v paměti Mapování dlouhých řetězců do celých čísel Agregace mohou být uloženy v N-dimenzionální polích Možno používat hybridní hašování pro velké množství dat Používání paralelního zpracování pro obrovské množství dat Data mohou být roztroušena na více discích nebo uzlech

Datová krychle (14) Druhy agregačních funkcí Distributivní: F(X) = G(F(X)) COUNT MIN MAX SUM Algebraické: F(X) = H(G(X)) AVG Směrodatná odchylka Holistické: MostFrequent

Datová krychle (15) použití Reporty Křížové tabulky, histogramy, grafy, OLAP (Online analytické zpracování) Cíle: Analyzovat obrovské množství dat Vygenerovat různé varianty souhrnů a agregací Oproti reportům interaktivní (materializované kostky) práce přímo s kostkou Celá databáze je do určité míry denormalizovaná Připuštěna určitá míra redundance Databáze označujeme jako dimenzionální Dimenze krychle = typické kategorie pro analýzu obchodních dat čas, geografická poloha, skupiny výrobků apod.

Datová krychle (16) Údržba materializovaných krychlí je jiná než jejich pouhé vytváření jako u reportů Potřeba měnit hotovou krychli dynamicky - spouště (triggers) Algebraické funkce Laciná údržba Distributivní funkce Drahá údržba Holistické funkce Velmi drahá údržba

Závěr (1) Operátory CUBE a ROLLUP Zobecnění GROUP BY (1D agregace) Optimalizované získávání agregací přes více dimenzí Vhodné používat nad velkými daty Zjednodušení zápisu dotazů Použití datových krychlí: Generátory reportů Použití CUBE a ROLLUP v SQL OLAP systémy Materializované krychle

Závěr (2) Operátor CUBE Celá kostka = agregace přes všechny dané atributy (dimenze) Operátor ROLLUP Část kostky = produkuje hierarchie dle pořadí daných atributů (dimenzí) Predikát GROUPING Umožňuje odlišit hodnoty ALL, resp. seskupovací NULL ve výsledných tabulkách

Zdroje [1] J. Gray a kol.: Data cube: A Relational Aggregation Operator Generalizing Group-By, Cross-Tab, and Sub- Totals, New Orleans, March 1996 [2] SQL1999. ansi-iso-9075-2-1999, September 1999 [3] http://www2.cs.uregina.ca/~hamilton/courses/831/notes/dcubes/dcubes.html [4] R.Vieira: SQL Server 2000 Programujeme Profesionálně, Computer Press, Brno, 2001

Děkuji za pozornost