Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
Data Data CubeCubeŠŠtefan tefan IgnIgnááthth
TomTomášáš SeverýnSeverýn
ÚÚ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
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
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
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
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íí
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
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
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íí
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
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
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
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;
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;
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
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
ŘŘ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
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;
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
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
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
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
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í“í“
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.
VyuVyužžititíí
OLAP aplikace( podskupina MOLAP )OLAP aplikace( podskupina MOLAP )DatovDatovéé skladyskladyDolovDolováánníí dat z rozsdat z rozsááhlých databhlých databáázzíí
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 ) ]
)
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
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 +=∏
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.
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.
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:
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);
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
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
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.
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
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
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
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
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.
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
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.
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áá..
ImplementovanImplementovanéé
Microsoft SQL server 2000Microsoft SQL server 2000OracleOracle 9i9iSQL7SQL7