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

Podobné dokumenty
Operátory ROLLUP a CUBE

DATA CUBE. Mgr. Jiří Helmich

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

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

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

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

Program "Inventúra program.xlsm"

Import cenových akcií FRESH

MANUÁL K TVORBE CVIČENÍ NA ÚLOHY S POROZUMENÍM

PG 9.5 novinky ve vývoji aplikací

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

Spracovanie informácií

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

Databázové systémy I

Vytvorenie účtovnej knihy

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

Pracovné prostredie MS EXCEL 2003.

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

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

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

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

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

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

Hromadná korešpondencia v programe Word Lektor: Ing. Jaroslav Mišovych

Databázové systémy. Dátové modelovanie - relačný model

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.

5. blok Souhrnné a skupinové dotazy

Import Excel Univerzál

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

Tvorba logického a fyzického dátového modelu relačnej databázy pomocou nástrojov od firmy Oracle výukový tutoriál

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

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

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

3 Determinanty. 3.1 Determinaty druhého stupňa a sústavy lineárnych rovníc

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 2 Datové sklady, OLAP

Je to voľne dostupný programový balík (free software), ktorý sa používa na meraniach.

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

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

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

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

Tvorba informačních systémů

Vkládání, aktualizace, mazání

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

To bolo ľahké. Dokážete nakresliť kúsok od prvého stromčeka rovnaký? Asi áno, veď môžete použiť tie isté príkazy.

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

7.1 Návrhové zobrazenie dotazu

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

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

Kontrola väzieb výkazu Súvaha a Výkaz ziskov a strát Príručka používateľa

Vytvorenie používateľov a nastavenie prístupov

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

Základy business intelligence. Jaroslav Šmarda

Total Commander. Základné nastavenia

Postup registrácie certifikátov do Windows

1. Formát exportov typu *.gpc (ABO)

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

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

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

Ako započítať daňovú licenciu

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

MS PowerPoint - Úvod.

Limita funkcie. Čo rozumieme pod blížiť sa? y x. 2 lim 3

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

Advanced SQL Modeling in RDBMS - SQL Spreadsheet part1. Your Organization (Line #1)

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

Skákalka. Otvoríme si program Zoner Callisto, cesta je Programy Aplikácie Grafika Zoner Callisto.

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

Úvodná strana IS ZASIELKY Prvky úvodnej stránky:

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

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

Materializované pohledy

Blokové a prúdové šifry

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

eformulár ČSOB Leasing užívateľský manuál verzia 1.0

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

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

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

Temporální databáze. Jan Kolárik Miroslav Macík

Iracionálne rovnice = 14 = ±

Krížovka. Hot Potatoes JCross ( červená farba) = vytvorenie krížovky, do ktorej vpisujeme odpovede na zadané otázky. Priradenie

STRUČNÝ NÁVOD KU IP-COACHU

P R O L U C. POZNÁMKY individuálnej účtovnej závierky pre rok 2014

PODMIENKY POUŽITIA ZOZNAMU PLATOBNÝCH OPERÁCIÍ

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

13. blok Práce s XML dokumenty v databázi Oracle

Ako sme postavili Benátky

Kombinatorická pravdepodobnosť (opakovanie)

Prevody z pointfree tvaru na pointwise tvar

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

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

Základy optických systémov

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

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

Imagine. Popis prostredia:

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

Transkript:

Data Cube Štefan Ignáth Tomáš Severýn

Úvod Aplikace poskytující analýzu dat typicky pracují s jednou či i více v vrstvami agregací ve standardním m SQL pomocí operátoru Group By a agregačních funkcí lze dosáhnou pouze 0 aža 1 dimenzionáln lní agregáty

N-dimenzionální zevšeobecn eobecnění Operátor - datová kostka (DATA CUBE) zjednodušen eně kostka (cube( cube) Zevšeobec eobecňuje datové operace potřebn ebné pro analýzu dat Histogram Dimenzionáln lní model Mezisoučty

Datová analýza Hledá různé vzorky v datech kategorie trendy 4 základnz kladní kroky formulace otázky nad velkou databází extrahování agregovaných dat do souboru nebo tabulky vizualizace analýza výsledku a formulace nového dotazu

Vizualizace Potřebn ebná pro zobrazení trendů rozdílů anomáli lií Výstup většinou v jako množiny množiny můžm ůžou být obecně v N-N rozměrn rném m prostoru

Více rozměrů <=3 3 Standardně pomocí 2,3D grafiky čas(pohyb) a barvy přidp idávají další dva rozměry ry dohromady tedy 5 dimenzí

Proč více dimenzí SQL tabulky jsou ploché Ale Relační systémy modelují N- dimenzionáln lní jako relaci s N atributy N - atributových domén

Situační příklad 1 Počas así 4 rozměry ry (místo = x,y,z,čas) další sloupce měření v 4D prostoru Čas teplota, tlak, vlhkost a rychlost větru často hodnoty agregované přes čas, nebo prostor Tabulka 1. Počasí: Zem. šírka Zem. délka Nad. výška Teplota Tlak 27/11/94:1500 37:58:33N 122:45:28W 102 21 1009 27/11/94:1500 34:16:18N 27:05:55W 10 10 1024

Standardní SQL Dovoluje agregaci jen přes p jednu dimenzi Jednoduché příklady SELECT AVG(Teplota Teplota) ) FROM Počas así; SELECT COUNT(DISTINCT Čas) ) FROM Počas así

Zvláš áštní agregační fce Mnoho systémů si přidává statistické, fyzikáln lní,, matematické,, finanční a další funkce Illustra Init(&handle) nastaví handle Iter(&handle) přidá do handle hodnotu Hodnota = final(&handle) vrátí co spočetl

GROUP BY Agregační funkce vrátí jedinou hodnotu pomocí GROUP BY můžm ůžeme vytvořit množinu hodnot indexovaných množinou atributů v klauzuli Group By Systém m RED BRICK rozší šířil Group By, ale není std.. SQL

Problémy s GROUP BY Agregační funkce jsou často používan vané Př.. Databázový benchmark (test výkonu, česky občas benčmark mark) Benchmark Tabuľka 2. SQL agregáty ve standartních benčmarcích Otázka Agregáty Počet GROUP BY TPC-A,B 1 0 0 TPC-C 18 4 0 TPC-D 16 27 15 Wisconsin 18 3 2 AS3AP 23 20 2 SetQuery 7 5 1

Problémy GROUP BY Histogramy Agregáty bez vypočítan tané kategorie Př:počasí v závislosti z na dni a zemi SELECT den, stát, MAX( Teplota ) FROM Počasí GROUP BY Day( Čas ) AS den, Country( Zem. Délka, Zem. Šířka ) AS stát;

Problémy GROUP BY Některé implementace podporují histogramy, ale není to standard proto je potřeba vyrobit tabulkově orientovaný dotaz SELECT deň, štát, MAX( Teplota ) FROM Počasie FROM ( SELECT Day( Čas ) AS deň, Štát( Zem. Šírka, Zem. Dĺžka ) AS štát, Teplota FROM Počasie ) AS foo GROUP BY deň, štát;

Vícedimenzionální dotazování V případp padě, že e se chceme pohybovat pomocí dimenzí nahoru(roll roll-up) ) zevšeobec eobecňování informací dolu (drill( drill-down) ) získz skávání agregátů k jemnější ším m datům Př: roll-up město->stát->kontinent drill-down down rok->m >měsíc->den

Používan vaná řešení Správy často používaj vají co atribut to jednotlivá agregace Problém - co null hodnoty v klíči Tabuľka 3. Prodej aut podle Modelu, Roku a Barvy Model Rok Barva Prodej podle Modelu, Roku a Barvy Prodej podle Modelu a Roku Prodej podle Modelu Chevy 1994 Č 50 B 40 1995 Č 85 B 115 90 200 290

Řešení? Přidána hodnota ALL Duplikovány klíče Naplnění jednoduchý dotaz,kde je pro každou dimenzi jeden UNION Tabuľka 4. Sumár predaja Rok Farba Jednotiek Model Chevy 1994 Č 50 Chevy 1994 B 40 Chevy 1994 ALL 90 Chevy 1995 Č 85 Chevy 1995 B 115 Chevy 1995 ALL 200 Chevy ALL ALL 290

Naplnění jednoduchý dotaz, kde je pro každou dimenzi jeden UNION SELECT Model, ALL, ALL, SUM( Predaj ) FROM Predaj WHERE Model = Chevy GROUP BY Model UNION SELECT Model, Rok, ALL, SUM( Predaj ) FROM Predaj WHERE Model = Chevy GROUP BY Model, Rok UNION SELECT Model, Rok, Farba, SUM( Predaj ) FROM Predaj WHERE Model = Chevy GROUP BY Model, Rok, Farba;

Problém Tato agregace je nesymetrická Tabulka 4 neagreguje prodej podle roku Přidám UNION SELECT Model, ALL, Farba,, SUM( Predaj ) FROM Predaj WHERE Model = Chevy GROUP BY Model, Rok

Symetrie Výsledkem symetrické agregace je křížová tabulka (cross( cross-tabulation) někdy do češtiny (výrobci tabulkových editorů) ) překlp ekládáno jako pivotní tabulky Tabuľka 5. Predaj Chevy Krížová tabulka 1994 1995 Spolu Chevy Čierna 50 85 135 Biela 40 115 155 Spolu 90 200 290

více dimenzí Musíme přidat p další křížovou tabulku např pro Ford Ford 1994 1995 Spolu Čierna 50 85 135 Biela 10 75 85 Spolu 60 160 220 Tímto se dostáváme do 3. rozměru ru Reprezentace pomocí křížových tabulek je ekvivalentní s ALL formulací

Proč voláme po zlepšen ení I Reprezentace Tabulky 4 a sjednocení GROUP BY řeší problém reprezentace agregovaných dat v relačním modely. Problémem zůstáva vyjádřen ení histogramů, roll-up up-ů, drill-down down-ů a krížových tabulkových otázek pomocí konvenčního SQL

Proč voláme po zlepšen ení II 6D krížov ová tabulka potřebuje sjednocení 64 členů a 64 různych r GROUP BY tzn. 64 průchod chodů dat a 64 tříďení - dlouhé vykonávání dotazů. Křížové tabulky pomocí tradičního SQL nejsou relačními objekty. V tabulce 5 a 5a je poslední řadek a poslední sloupec zvláštní

Data CUBE (Datová kostka) Aggregate Sum Zevšeobecnění předchozích ideí je jasné 0 rozměrný je jen výsledek fce 1 rozměrný group by 2 rozměrný křížové tabulky 3 datová krychle 3 dim. RED WHITE BLUE Group By (with total) By Color Sum RED WHITE BLUE By Make Cross Tab Chevy Ford By Color Sum By Make & Year By Year FORD CHEVY By Color & Year The Data Cube and The Sub-Space Aggregates Sum 1990 1991 1992 By Color 1993 By Make RED WHITE BLUE By Make & Color

Využit ití OLAP aplikace( podskupina MOLAP ) Datové sklady Dolování dat z rozsáhlých databází

Rozší šíření GROUP BY o CUBE Operátor CUBE (kostka) rozšiřuje syntaxi : GROUP BY ( { ( <názov stĺpca> <výraz>) [ AS <correlation name> ] [ <collate clause> ],...} [ WITH ( CUBE ROLLUP ) ] )

Jak to funguje? Operátor kostka vytváří tabulku obsahující všechny agregované hodnoty poslední řádek je ALL,ALL,...,ALL,F(*) Nazývá se úplný agregát Nižší agregáty mají nižší počet ALL hodnot

Jak to funguje? Počet řádků takto vytvořených záleží na počtu atributů na kombinaci daných atrib.. v datech Bez detailních znalostí dat se velikost nedá předpokládat, dat, pouze horní mez Horní mez násobek počtu různých r hodnot+1 pro každý atribut označme počet hodnot i-teho atributu m = (ci + 1)

Použitie I GROUP BY stĺpec WITH CUBE nevráti hodnoty ALL v riadkoch obsahujúcich superagregáty ty. Transanc-SQL (T-SQL) vráti hodnoty NULL, typu nazývaného GROUPING NULL, znamenajúce všetky existujúce hodnoty pre tento stĺpec pec. Funkcia GROUPING dovoľuje rozlíš íšiť medzi rôznymi typmi NULL.

Použitie II Operátor kocka vráti maximálny počet riadkov iba ak sa všetky v kombinácie hodnôt vyskytli v dátach. Inak je počet vrátených riadkov menší ší.. Pre nahradenie vráten teného NULL možeme použit SQL funkciu ISNULL.

Príklad SELECT Jednotky=SUM(Predane_jednotky), ),Produkt= ISNULL(Produkt,, 'ALL'), Krajina = ISNULL(Krajina,, 'ALL'), Jazyk = ISNULL(Jazyk,, 'ALL') FROM Predaj_produktu GROUP BY Produkt, Krajina, Jazyk WITH CUBE ID Produkt Krajina Jazyk Predane_jednotky 1 Word US French 5 2 Word US Spanish 87 3 Word US English 62 4 Word Canada French 54 5 Word Canada Spanish 95 Nad tabuľkou 6 Predaj_produktu: 6 Word Canada English 49 7 Word Mexico French 31 8 Word Mexico Spanish 54 9 Word Mexico English 71 10 Excel US French 64 11 Excel US Spanish 62 12 Excel US English 63 13 Excel Canada French 52 14 Excel Canada Spanish 9 15 Excel Canada English 55 16 Excel Mexico French 27 17 Excel Mexico Spanish 62

Funkcia GROUPING Ak dáta d neobsahujú žiadne NULL vo význame žiadnych dátd možeme použiť funkciu ISNULL na zmenu hodnôt NULL (vo význame ALL) na hodnotu ALL Predstavme si, že e tabuľka povoľuje vloženie hodnoty NULL do niektorého stĺpca a vložíme nasledujúci riadok: INSERT Predaj_produktu VALUES (NULL, NULL, US, 10);

Funkcia GROUPING Posledný ý riadok v kocke, tak ako sme si ju predtým definovali, by bol nerozlíš íšiteľný od teraz vložen eného riadku Na odlíš íšenie tohto rozdielu existuje funkcia GROUPING(). Vracia 1(TRUE) Ak je element ALL 0(FALSE) ak je element dátovd tová hodnota alebo explicitná hodnota NULL GROUPING berie ako parameter meno stľpca

Tabuľka obsahujúca riadok s NULL SELECT Jednotky = SUM(Predane_jednotky), Produkt, ALL Produkt = GROUPING(Produkt), Krajina = ALL Krajina = GROUPING(Krajina), Jazyk = ALL Jazyk = GROUPING(Jazyk) FROM Predaj_produktu GROUP BY Produkt, Krajina, Jazyk WITH CUBE

Jednotiek Produkt ALL Produkt Krajina ALL Krajina Jazyk ALL Jazyk Výsledok Tabuľka 7 Všimnime si, že prvý a posledný riadok majú rovnako hodnoty NULL v stľpcoch Produkt a Krajina, ale odlišujú sa v stľpcoch ALL Produkt a ALL Krajina. 10 NULL 0 NULL 0 Spanish 0 10 NULL 0 NULL 0 NULL 1 10 NULL 0 NULL 1 NULL 1 55 Excel 0 Canada 0 English 0 9 Excel 0 Canada 0 Spanish 0 64 Excel 0 Canada 0 NULL 1 39 Excel 0 Mexico 0 English 0 62 Excel 0 Mexico 0 Spanish 0 101 Excel 0 Mexico 0 NULL 1 63 Excel 0 US 0 English 0 62 Excel 0 US 0 Spanish 0 125 Excel 0 US 0 NULL 1 290 Excel 0 NULL 1 NULL 1 49 Word 0 Canada 0 English 0 54 Word 0 Canada 0 French 0 95 Word 0 Canada 0 Spanish 0 198 Word 0 Canada 0 NULL 1 62 Word 0 US 0 English 0..................... 5 NULL 1 US 0 French 0 149 NULL 1 US 0 Spanish 0 279 NULL 1 US 0 NULL 1 157 Excel 0 NULL 1 English 0 111 Word 0 NULL 1 English 0 268 NULL 1 NULL 1 English 0 59 Word 0 NULL 1 French 0 59 NULL 1 NULL 1 French 0 10 NULL 0 NULL 1 Spanish 0 133 Excel 0 NULL 1 Spanish 0 182 Word 0 NULL 1 Spanish 0 325 NULL 1 NULL 1 Spanish 0

Použitie CASE SELECT Jednotky = SUM(Predane_jednotky), Produkt = CASE WHEN (GROUPING(Produkt)=1) THEN ALL ELSE ISNULL(Produkt, N/A ) END, Krajina = CASE WHEN (GROUPING(Krajina)=1) THEN ALL ELSE ISNULL(Krajina, N/A ) END, Jazyk = CASE WHEN (GROUPING(Jazyk)=1) THEN ALL ELSE ISNULL(Jazyk, N/A ) END FROM Predaj_produktu GROUP BY Produkt, Krajina, Jazyk WITH CUBE

325 ALL ALL Spanish Jednotiek Produkt Krajina Jazyk Výsledok Tabuľka 8 10 N/A N/A Spanish 10 N/A N/A ALL 10 N/A ALL ALL 55 Excel Canada English 9 Excel Canada Spanish 64 Excel Canada ALL 39 Excel Mexico English 62 Excel Mexico Spanish 101 Excel Mexico ALL 63 Excel US English 62 Excel US Spanish 125 Excel US ALL 290 Excel ALL ALL 49 Word Canada English 54 Word Canada French 95 Word Canada Spanish............ 62 ALL Mexico Spanish 101 ALL Mexico ALL 125 ALL US English 5 ALL US French 149 ALL US Spanish 279 ALL US ALL 157 Excel ALL English 111 Word ALL English 268 ALL ALL English 59 Word ALL French 59 ALL ALL French 10 N/A ALL Spanish 133 Excel ALL Spanish 182 Word ALL Spanish

Tabuľka Tabuľka obsahuje každú kombináciu produktu, jazyka a krajiny Pre uloženie takejto kocky pre ďalšie požiadavky možeme zmeniť požiadavok na pohľad alebo uložiť výsledok do novej tabuľky. Nasledujúcim spôsobom uložíme výsledok do novej tabuľky príhodne nazvanej Vsetky_kombinacie

Vsetky_kombinacie SELECT Jednotky = SUM(Predane_jednotky), Produkt = CASE WHEN (GROUPING(Produkt)=1) THEN ALL ELSE ISNULL(Produkt, N/A ) END, Krajina = CASE WHEN (GROUPING(Krajina)=1) THEN ALL ELSE ISNULL(Krajina, N/A ) END, Jazyk = CASE WHEN (GROUPING(Jazyk)=1) THEN ALL ELSE ISNULL(Jazyk, N/A ) END INTO Vsetky_kombinacie FROM Predaj_produktu GROUP BY Produkt, Krajina, Jazyk WITH CUBE

ROLLUP Možnos nosť použiť operátor CUBE na operátor GROUP BY je veľmi silným nástrojom. n Výsledok často obsahuje viac riadkov ako je potrebné SQL nám n m dáva d možnos nosť použiť operátor ROLLUP ako alternatívu k operátoru CUBE ROLLUP vracia iba hodnoty pre hierarchiu atribútov, tov, ktoré špecifikujeme.

CUBE na ROLLUP SELECT Jednotky = SUM(Predane_jednotky), Produkt = CASE WHEN (GROUPING(Produkt)=1) THEN ALL ELSE ISNULL(Produkt, N/A ) END, Krajina = CASE WHEN (GROUPING(Krajina)=1) THEN ALL ELSE ISNULL(Krajina, N/A ) END, Jazyk = CASE WHEN (GROUPING(Jazyk)=1) THEN ALL ELSE ISNULL(Jazyk, N/A ) END FROM Predaj_produktu GROUP BY Produkt, Krajina, Jazyk WITH ROLLUP

Výsledok je oveľa a kompaktnejší ako výsledok CUBE neodpovedá na každú otázku, na ktorú odpovedá CUBE stále dostaneme viac informáci cií ako použit itím obyčajn ajného GROUP BY Výsledok ROLLUP je podobný výsledku, ktorý dáva operátor T-SQL T COMPUTE BY ale ROLLUP generuje relačnú tabuľku narozdiel od operátora COMPUTE BY.

Záver Použitie operátorov CUBE a ROLLUP zaleží na tom, koľko informáci cií (a aké podrobné) je potrebné z dát t získaz skať. Pri generovaní CUBE sa najviac času strávi pri operácii GROUP BY. Práca ktorú musí SQL Server vykonať naviac pre vykonanie operátoru CUBE oproti bežnému GROUP BY je zanedbateľná.

Implementované Microsoft SQL server 2000 Oracle 9i SQL7