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

Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

Data Data CubeCubeŠŠtefan tefan IgnIgnááthth

TomTomášáš SeverýnSeverýn

Page 2: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ÚÚvodvod

Aplikace poskytujAplikace poskytujííccíí analýzu dat analýzu dat typicky pracujtypicky pracujíí s jednou s jednou čči vi vííce ce vrstvami agregacvrstvami agregacííve standardnve standardníím SQL pomocm SQL pomocííoperoperáátoru toru GroupGroup By a agregaBy a agregaččnníích ch funkcfunkcíí lze doslze dosááhnou pouze 0 ahnou pouze 0 ažž 1 1 dimenziondimenzionáálnlníí agregagregáátyty

Page 3: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

NN--dimenziondimenzionáálnlníí zevzevššeobecneobecněěnníí

OperOperáátortor -- datovdatováá kostkakostka (DATA(DATACUBE)CUBE)•• zjednoduzjednoduššeneněě kostka (kostka (cubecube))

ZevZevššeobeceobecňňuje datovuje datovéé operace operace potpotřřebnebnéé pro analýzu datpro analýzu dat•• HistogramHistogram•• DimenzionDimenzionáálnlníí modelmodel•• MezisouMezisouččtyty

Page 4: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

DatovDatováá analýzaanalýza

HledHledáá rrůůznznéé vzorky v datechvzorky v datech•• kategoriekategorie•• trendytrendy

4 z4 záákladnkladníí krokykroky•• formulace otformulace otáázky nad velkou databzky nad velkou databáázzíí•• extrahovextrahováánníí agregovaných dat do souboru agregovaných dat do souboru

nebo tabulkynebo tabulky•• vvizualizaceizualizace•• aanalýzanalýza výsledku a formulace výsledku a formulace nonovvéého dotazuho dotazu

Page 5: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

VizualizaceVizualizace

PotPotřřebnebnáá pro zobrazenpro zobrazeníí•• trendtrendůů•• rozdrozdííllůů•• anomanomááliliíí

Výstup vVýstup věěttššinou jako mnoinou jako množžinyiny•• mnomnožžiny miny můžůžou být obecnou být obecněě v Nv N--

rozmrozměěrnrnéém prostorum prostoru

Page 6: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

VVííce rozmce rozměěrrůů

<=<=3 Standardn3 Standardněě pomocpomocíí 2,3D grafiky2,3D grafikyččas(pohyb) a barvy pas(pohyb) a barvy přřididáávajvajíí daldalšíšídva rozmdva rozměěryry•• dohromady tedy 5 dimenzdohromady tedy 5 dimenzíí

Page 7: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ProPročč vvííce dimenzce dimenzíí

SQL tabulky jsou plochSQL tabulky jsou plochééAle RelaAle Relaččnníí systsystéémy modelujmy modelujíí NN--dimenziondimenzionáálnlníí jako relaci s N atributyjako relaci s N atributyN N -- atributových domatributových doméénn

Page 8: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

SituaSituaččnníí ppřřííklad 1klad 1

PoPoččasasíí4 rozm4 rozměěry (mry (míísto = sto = „„x,y,zx,y,z““,,ččas)as)daldalšíší sloupce sloupce –– mměřěřeneníí v 4D prostoruv 4D prostoru•• teplota, tlak, teplota, tlak, vlhkostvlhkost aa rychlostrychlost vvěětrutru•• ččasto hodnoty agregovanasto hodnoty agregovanéé ppřřes es ččas, nebo prostoras, nebo prostor

Tabulka 1. Počasí:

ČasZem. ší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

Page 9: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

StandardnStandardníí SQLSQL

Dovoluje agregaci jen pDovoluje agregaci jen přřes jednu es jednu dimenzidimenziJednoduchJednoduchéé ppřřííkladyklady•• SELECT AVGSELECT AVG((TeplotaTeplota) FROM ) FROM PoPoččasasíí; ; SELECT SELECT

COUNTCOUNT(DISTINCT (DISTINCT ČČasas) FROM ) FROM PoPoččasasíí

Page 10: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ZvlZvlášáštntníí agregaagregaččnníí fcefce

Mnoho Mnoho systsystéémmůů si si ppřřididáávváá statistickstatistickéé, , fyzikfyzikáálnlníí, matematick, matematickéé, finan, finanččnníí a a daldalšíší funkcefunkceIllustraIllustra•• InitInit((&handle) &handle) –– nastavnastavíí handlehandle•• Iter(&handleIter(&handle)) –– ppřřididáá do handle hodnotudo handle hodnotu•• HodnotaHodnota = = final(&handlefinal(&handle)) –– vrvrááttíí co co

spospoččetletl

Page 11: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

GROUP BYGROUP BY

AgregaAgregaččnníí funkce vrfunkce vrááttíí jedinou jedinou hodnotuhodnotupomocpomocíí GROUP BY mGROUP BY můžůžeme vytvoeme vytvořřit it mnomnožžinu hodnot indexovaných inu hodnot indexovaných mnomnožžinou atributinou atributůů v klauzuli v klauzuli GroupGroupByBySystSystéém RED BRICK m RED BRICK –– rozrozšíšířřil il GroupGroupBy,By, ale nenale neníí stdstd. SQL. SQL

Page 12: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ProblProbléémy s GROUP BYmy s GROUP BY

AgregaAgregaččnníí funkce jsou funkce jsou ččasto asto poupoužžíívanvanééPPřř. Datab. Databáázový zový benchmarkbenchmark (test (test výkonuvýkonu, , ččesky obesky obččas as benbenččmarkmark))

Tabuľka 2. SQL agregáty ve standartních benčmarcích

BenchmarkOtá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

Page 13: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ProblProbléémy GROUP BYmy GROUP BY

HistogramyHistogramy•• AgregAgregááty bez vypoty bez vypoččíítantanéé kategoriekategoriePPřř:po:poččasasíí v zv záávislosti na dni a zemivislosti 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;

Page 14: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ProblProbléémy GROUP BYmy GROUP BY

NNěěkterkteréé implementace podporujimplementace podporujííhistogramy, alehistogramy, ale nenneníí to standardto standardproto je potproto je potřřeba vyrobit tabulkoveba vyrobit tabulkověěorientovaný dotazorientovaný dotaz

SELECT deň, štát, MAX( Teplota ) FROM PočasieFROM ( SELECT Day( Čas ) AS deň,

Štát( Zem. Šírka, Zem. Dĺžka ) AS štát,Teplota

FROM Počasie ) AS fooGROUP BY deň, štát;

Page 15: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

VVíícedimenzioncedimenzionáálnlníí dotazovdotazováánníí

V pV přříípadpaděě, , žže se chceme pohybovat e se chceme pohybovat pomocpomocíí dimenzdimenzíí•• nahoru(nahoru(rollroll--upup) zev) zevššeobeceobecňňovováánníí

informacinformacíí•• dolu (dolu (drilldrill--downdown) z) zíískskáávváánníí agregagregááttůů k k

jemnjemněějjšíším datm datůůmm

PPřř::•• rollroll--upup mměěstosto-->>ststáátt-->>kontinentkontinent•• drilldrill--downdown rokrok-->m>měěssíícc-->>denden

Page 16: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

PouPoužžíívanvanáá řřeeššeneníí

SprSpráávy vy ččasto pouasto použžíívajvajíí•• co atribut to jednotlivco atribut to jednotliváá agregaceagregace

ProblProbléém m -- co co nullnull hodnoty v klhodnoty v klííččiiTabuľka 3. Prodej aut podle Modelu, Roku a Barvy

ModelRok Barva Prodej podle Modelu,

Roku a BarvyProdej podleModelu a Roku

Prodej podleModelu

Chevy 1994 Č 50

B 40

90

1995 Č 85

B 115

200

290

Page 17: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ŘŘeeššeneníí??

PPřřididáána hodnota ALLna hodnota ALLDuplikovDuplikováányny klklííččeeNaplnNaplněěnníí•• jednoduchý dotaz,kde jednoduchý dotaz,kde

je proje pro kakažždou dimenzi dou dimenzi jeden UNION

Tabuľka 4. Sumár predaja

ModelRok Farba Jednotiek

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 290jeden UNION

Page 18: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

NaplnNaplněěnnííjednoduchý dotaz, kde je pro každou dimenzi jeden UNION

SELECT Model, ALL, ALL, SUM( Predaj )FROM PredajWHERE Model = ‘Chevy’GROUP BY Model

UNIONSELECT Model, Rok, ALL, SUM( Predaj )

FROM PredajWHERE Model = ‘Chevy’GROUP BY Model, Rok

UNIONSELECT Model, Rok, Farba, SUM( Predaj )

FROM PredajWHERE Model = ‘Chevy’GROUP BY Model, Rok, Farba;

Page 19: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ProblProbléémm

TatoTato agregace je nesymetrickagregace je nesymetrickááTabulka 4 neagreguje prodej podle Tabulka 4 neagreguje prodej podle rokurokuPPřřididáámm

UNIONUNIONSELECT Model, ALL, SELECT Model, ALL, FarbaFarba, SUM( , SUM( PredajPredaj ))

FROMFROM PredajPredajWHEREWHERE Model = Model = ‘‘ChevyChevy’’GROUP BYGROUP BY Model, Model, RokRok

Page 20: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

SymetrieSymetrie

Výsledkem symetrickVýsledkem symetrickéé agregace je agregace je kkřříížžovováá tabulka (tabulka (crosscross--tabulationtabulation))nněěkdy do kdy do ččeešštiny (výrobci tiny (výrobci tabulkových editortabulkových editorůů) p) přřekleklááddááno jako no jako pivotnpivotníí tabulkytabulky

Tabuľka 5. Predaj Chevy – Krížová tabulka

Chevy1994 1995 Spolu

Čierna 50 85 135

Biela 40 115 155

Spolu 90 200 290

Page 21: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

vvííce dimenzce dimenzíí

MusMusííme pme přřidat dalidat dalšíší kkřříížžovou tabulku ovou tabulku napnapřř pro Fordpro Ford

TTíímto se dostmto se dostáávvááme do 3. rozmme do 3. rozměěruruReprezentace pomocReprezentace pomocíí kkřříížžových ových tabulek je ekvivalentntabulek je ekvivalentníí s ALL s ALL formulacformulacíí

Ford 1994 1995 Spolu

Čierna 50 85 135

Biela 10 75 85

Spolu 60 160 220

Page 22: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ProPročč volvolááme po me po zlepzlepššeneníí II

ReprezentaceReprezentace TabulkyTabulky 4 4 aa sjednocensjednocenííGROUP BY GROUP BY „„řřeešíší““ problprobléém m reprezentacereprezentace agregovaných agregovaných datdatvv relarelaččnníímm modely. modely. ProblProbléémemmem zzůůststáávava vyjvyjááddřřenenííhistogramhistogramůů, , rollroll--upup--ůů, , drilldrill--downdown--ůůaa krkríížžových ových tabulkovýchtabulkových ototáázekzekpomocpomocíí konvenkonvenččnnííhoho SQLSQL

Page 23: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ProPročč volvolááme po zlepme po zlepššeneníí IIII

6D kr6D kríížžovováá tabulka pottabulka potřřebuje ebuje sjednocensjednoceníí 64 64 ččlenlenůů aa 64 r64 růůznych znych GROUP BY tzn. 64 prGROUP BY tzn. 64 průůchodchodůů dat adat a 64 64 ttřřííďďeneníí -- dlouhdlouhéé vykonvykonáávváánníí dotazdotazůů..KKřříížžovovéé tabulky pomoctabulky pomocíí traditradiččnníího ho SQL nejsou relaSQL nejsou relaččnníími objekty. V mi objekty. V tabulce 5tabulce 5 aa 5a5a je poslednje posledníí řřadek adek aa poslednposledníí sloupec sloupec „„zvlzvlášáštntní“í“

Page 24: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

Data CUBE (DatovData CUBE (Datováá kostka)kostka)

CHEVY

FORD 19901991

19921993

REDWHITEBLUE

By ColorBy Make & Color

By Make & Year

By Color & Year

By MakeBy Year

Sum

The Data Cube and The Sub-Space AggregatesSum

REDWHITEBLUE

Chevy Ford

By Make

By ColorCross Tab

REDWHITEBLUE

By Color

Sum

Group By (with total)

Sum

Aggregate

•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.

Page 25: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

VyuVyužžititíí

OLAP aplikace( podskupina MOLAP )OLAP aplikace( podskupina MOLAP )DatovDatovéé skladyskladyDolovDolováánníí dat z rozsdat z rozsááhlých databhlých databáázzíí

Page 26: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

RozRozšíšířřeneníí GROUP BY o CUBEGROUP BY o CUBE

OperOperáátor CUBE (kostka) roztor CUBE (kostka) rozššiiřřuje uje syntaxi :syntaxi :

GROUP BY ({ ( <názov stĺpca> | <výraz>)

[ AS <correlation name> ] [ <collate clause> ]

,...} [ WITH ( CUBE | ROLLUP ) ]

)

Page 27: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

Jak to funguje?Jak to funguje?

OperOperáátor kostka vytvtor kostka vytváářříí tabulku tabulku obsahujobsahujííccíí vvššechny agregovanechny agregovanééhodnotyhodnotyposlednposledníí řřáádek je dek je ALL,ALL,....,ALL,F(*)ALL,ALL,....,ALL,F(*)NazývNazýváá se se úúplný agregplný agregááttNiNižžšíší agregagregááty majty majíí ninižžšíší popoččet ALL et ALL hodnothodnot

Page 28: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

Jak to funguje?Jak to funguje?PoPoččet et řřáádkdkůů takto vytvotakto vytvořřenýchených•• zzááleležžíí na pona poččtu atributtu atributůů•• na kombinaci daných na kombinaci daných atribatrib. v datech. v datech

Bez detailnBez detailníích znalostch znalostíí dat se velikost neddat se velikost nedááppřředpokledpokláádat, pouze horndat, pouze horníí mezmezHornHorníí mezmez•• nnáásobek posobek poččtu rtu růůzných hodnot+1 pro kazných hodnot+1 pro kažždý atributdý atribut

•• oznaoznaččme me popoččetet hodnothodnot ii--tehoteho atributuatributu

1)(cm i +=∏

Page 29: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

PouPoužžitie Iitie I

GROUPGROUP BY BY ststĺĺpecpec WITH CUBE nevrWITH CUBE nevrááti ti hodnoty ALL vhodnoty ALL v riadkoch obsahujriadkoch obsahujúúcich cich superagregsuperagregáátyty. . TransancTransanc--SQLSQL (T(T--SQL) vrSQL) vrááti hodnoty ti hodnoty NULL, NULL, typutypu nazývannazývanéého GROUPING ho GROUPING NULL, znamenajNULL, znamenajúúcece „„vvššetky etky existujexistujúúce hodnoty pre tento stce hodnoty pre tento stĺĺpecpec““. . FunkciaFunkcia GROUPING GROUPING dovodovoľľujeuje rozlrozlíšíšiiťťmedzi rôznymi typmi medzi rôznymi typmi NULL.NULL.

Page 30: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

PouPoužžitie IIitie II

OperOperáátor kocka vrtor kocka vrááti maximti maximáálny lny popoččet riadkov iba ak sa vet riadkov iba ak sa vššetky etky kombinkombináácie hodnôt vyskytli vcie hodnôt vyskytli v ddáátach. tach. Inak je poInak je poččet vret vráátených riadkov tených riadkov menmenšíší. Pre nahradenie vr. Pre nahradenie vráátentenéého ho NULL moNULL možžeme poueme použžit SQL funkciu it SQL funkciu ISNULL.ISNULL.

Page 31: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

PrPrííkladkladSELECTSELECT Jednotky=SUM(Predane_jednotkyJednotky=SUM(Predane_jednotky),),PProduktrodukt==

ISNULL(ProduktISNULL(Produkt, 'ALL'),, 'ALL'), Krajina = Krajina = ISNULL(KrajinaISNULL(Krajina, 'ALL'),, 'ALL'),JazykJazyk = = ISNULL(JazykISNULL(Jazyk, 'ALL'), 'ALL')

FROM FROM Predaj_produktuPredaj_produktu GROUP BY GROUP BY ProduktProdukt, , KrajinaKrajina, , JazykJazykWITH 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

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

18 Excel Mexico English 39

WITH CUBE

Nad tabuľkou 6 Predaj_produktu:

Page 32: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

Funkcia GROUPINGFunkcia GROUPING

Ak dAk dááta neobsahujta neobsahujúú žžiadne NULL vo iadne NULL vo význame význame žžiadnych diadnych dáátt•• momožžemeeme poupoužžiiťť funkciu ISNULL na zmenu hodnôt NULL funkciu ISNULL na zmenu hodnôt NULL

(vo význame ALL) na hodnotu ALL(vo význame ALL) na hodnotu ALL

Predstavme si, Predstavme si, žže tabue tabuľľka povoka povoľľuje uje vlovložženie hodnoty NULL do niektorenie hodnoty NULL do niektoréého ho ststĺĺpca apca a vlovložžííme nasledujme nasledujúúci riadok:ci riadok:

INSERT INSERT Predaj_produktuPredaj_produktuVALUES (NULL, NULL, VALUES (NULL, NULL, ‘‘USUS’’,, 10);10);

Page 33: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

Funkcia GROUPINGFunkcia GROUPINGPoslednPosledný riadok vý riadok v kocke, tak ako sme si ju kocke, tak ako sme si ju predtým definovali, by bol nerozlpredtým definovali, by bol nerozlíšíšiteiteľľný od teraz ný od teraz vlovložženenéého riadkuho riadkuNa odlNa odlíšíšenie tohto rozdielu existuje funkcia enie tohto rozdielu existuje funkcia

GROUPING().GROUPING().

VraciaVracia•• 1(TRUE) 1(TRUE) AkAk je element ALLje element ALL•• 0(FALSE) 0(FALSE) ak je element dak je element dáátovtováá hodnota alebo explicitnhodnota alebo explicitnáá

hodnota NULLhodnota NULL

GROUPING berie ako parameter meno GROUPING berie ako parameter meno ststľľpcapca

Page 34: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

TabuTabuľľka obsahujka obsahujúúca riadok sca riadok s NULLNULL

SELECT Jednotky = SUM(Predane_jednotky),Produkt, ‘ALL Produkt’ = GROUPING(Produkt),Krajina = ‘ALL Krajina’ = GROUPING(Krajina),Jazyk = ‘ALL Jazyk’ = GROUPING(Jazyk)

FROM Predaj_produktuGROUP BY Produkt, Krajina, JazykWITH CUBE

Page 35: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

VýsledokVýsledokJednotiek

Produkt ALL Produkt

Krajina ALL Krajina

Jazyk ALL Jazyk

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

Tabuľka 7

Všimnime si, že prvý a posledný riadok majú rovnako hodnoty NULL v stľpcochProdukt a Krajina, ale odlišujú sa v stľpcochALL Produkt a ALL Krajina.

Page 36: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

PouPoužžitieitie CASE 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_produktuGROUP BY Produkt, Krajina, JazykWITH CUBE

Page 37: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

VýsledokVýsledokJednotiek

Produkt Krajina Jazyk

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

325 ALL ALL Spanish

Tabuľka 8

Page 38: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

TabuTabuľľkaka

TabuTabuľľka obsahuje kaka obsahuje kažžddúú kombinkombinááciu ciu produktu, jazyka aproduktu, jazyka a krajinykrajinyPre uloPre uložženie takejto kocky pre enie takejto kocky pre ďďalalššie ie popožžiadavky iadavky momožžemeeme zmenizmeniťť popožžiadavokiadavok na na pohpohľľad alebo uload alebo uložžiiťť výsledok do novej výsledok do novej tabutabuľľky.ky.NasledujNasledujúúcim spôsobom ulocim spôsobom uložžííme výsledok me výsledok do novej tabudo novej tabuľľky prky prííhodne nazvanej hodne nazvanej Vsetky_kombinacieVsetky_kombinacie

Page 39: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

Vsetky_kombinacieVsetky_kombinacieSELECT 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’)ENDINTO Vsetky_kombinacie

FROM Predaj_produktuGROUP BY Produkt, Krajina, JazykWITH CUBE

Page 40: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ROLLUPROLLUP

MoMožžnosnosťť poupoužžiiťť operoperáátor CUBE na opertor CUBE na operáátor tor GROUP BY je veGROUP BY je veľľmi silným nmi silným náástrojom.strojom.Výsledok Výsledok ččasto obsahuje viac riadkov ako asto obsahuje viac riadkov ako je potrebnje potrebnéé

SQL nSQL náám dm dááva mova možžnosnosťť poupoužžiiťť operoperáátor tor ROLLUP ako alternatROLLUP ako alternatíívu kvu k operoperáátoru CUBEtoru CUBEROLLUP vracia iba hodnoty pre hierarchiu ROLLUP vracia iba hodnoty pre hierarchiu atribatribúútov, ktortov, ktoréé ššpecifikujeme.pecifikujeme.

Page 41: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

CUBE na ROLLUPCUBE na ROLLUPSELECT 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_produktuGROUP BY Produkt, Krajina, JazykWITH ROLLUP

Page 42: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

VýsledokVýsledok

je oveje oveľľa kompaktneja kompaktnejšíší ako výsledok CUBEako výsledok CUBEneodpovedneodpovedáá na kana kažžddúú ototáázku, na ktorzku, na ktorúúodpovedodpovedáá CUBECUBE•• ststáále dostaneme viac informle dostaneme viac informááciciíí ako pouako použžititíím m

obyobyččajnajnéého GROUP BYho GROUP BY

Výsledok ROLLUP je podobný výsledku, ktorý Výsledok ROLLUP je podobný výsledku, ktorý ddááva operva operáátor Ttor T--SQL COMPUTE BYSQL COMPUTE BY•• ale ROLLUP generuje relaale ROLLUP generuje relaččnnúú tabutabuľľku ku narozdielnarozdiel od od

operoperáátora COMPUTE BY.tora COMPUTE BY.

Page 43: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ZZááverver

PouPoužžitie operitie operáátorov CUBE atorov CUBE a ROLLUP ROLLUP zalezaležžíína tom, kona tom, koľľko informko informááciciíí (a ak(a akéé podrobnpodrobnéé) ) je potrebnje potrebnéé zz ddáát zt zíískaskaťť. . Pri generovanPri generovaníí CUBE sa najviac CUBE sa najviac ččasu strasu stráávi vi pri operpri operáácii GROUP BY. cii GROUP BY. PrPrááca ktorca ktorúú musmusíí SQL Server vykonaSQL Server vykonaťťnaviacnaviac pre vykonanie operpre vykonanie operáátoru CUBE toru CUBE oproti beoproti bežžnnéému GROUP BY je mu GROUP BY je zanedbatezanedbateľľnnáá..

Page 44: Data Cubepokorny/dj/prezentace/2_55.pdfROLLUP Možnosťpoužiťoperátor CUBE na operátor GROUP BY je veľmi silným nástrojom. Výsledok často obsahuje viac riadkov ako je potrebné

ImplementovanImplementovanéé

Microsoft SQL server 2000Microsoft SQL server 2000OracleOracle 9i9iSQL7SQL7