Utilizarea limbajului SQL pentru cereri OLAP. Mihaela Muntean 2015

Similar documents
O V E R V I E W. This study suggests grouping of numbers that do not divide the number

Sisteme cu logica fuzzy

Soluţii juniori., unde 1, 2

Reactoare chimice cu curgere piston (ideala) cu amestecare completa de tip batch (autoclava)

Inteligenta Artificiala

Pentru clasa a X-a Ştiinţele naturii-sem II

Divizibilitate în mulțimea numerelor naturale/întregi

1.3. OPERAŢII CU NUMERE NEZECIMALE

Reactoare chimice cu curgere piston (ideala) (Plug Flow Reactor PFR) cu amestecare completa (Mixed Flow Reactor MFR) de tip batch (autoclava)

GENERATOARE DE SEMNAL DIGITALE

Sisteme cu logica fuzzy cu mai multe intrari (MISO)

UNITATEA DE ÎNVĂȚARE 3 Analiza algoritmilor

ON THE QUATERNARY QUADRATIC DIOPHANTINE EQUATIONS (II) NICOLAE BRATU 1 ADINA CRETAN 2

Teorema Reziduurilor şi Bucuria Integralelor Reale Prezentare de Alexandru Negrescu

COMPARATIVE DISCUSSION ABOUT THE DETERMINING METHODS OF THE STRESSES IN PLANE SLABS

2D AND 3D PROCESSING OF THE INTERDEPENDENCE BETWEEN THE COMFORT MAIN INDICATORS

Gradul de comutativitate al grupurilor finite 1

Programarea Dinamica. (si alte chestii adiacente) Andrei Olariu

SIMULAREA DECIZIEI FINANCIARE

Cristalul cu N atomi = un sistem de N oscilatori de amplitudini mici;

Modelling the Steady State Characteristic of ph Neutralization Process: a Neuro-Fuzzy Approach

Liste. Stive. Cozi SD 2017/2018

Legi de distribuţie (principalele distribuţii de probabilitate) Tudor Drugan

Procedeu de demonstrare a unor inegalităţi bazat pe inegalitatea lui Schur

Rezolvarea ecuaţiilor şi sistemelor de ecuaţii diferenţiale ordinare (II)

STRUCTURAL INTENSITY METHOD APPLIED TO STUDY OF VIBRATIONS DAMPING / METODA INTENSIMETRIEI STUCTURALE APLICATĂ LA STUDIUL AMORTIZĂRII VIBRAŢIILOR

Subiecte geometrie licenta matematica-informatica 4 ani

array a[0..n-1] a[0] = v0,..., a[n-1] = vn-1

METODE NUMERICE: Laborator #4 Eliminare gaussiană cu pivotare totală şi scalare. Algoritmul Thomas pentru rezolvarea sistemului 3-diagonal

FINDING THE TRACES OF A GIVEN PLANE: ANALYTICALLY AND THROUGH GRAPHICAL CONSTRUCTIONS

DEZVOLTAREA REGIONALĂ PRIN TURISM

4/68. Mini-comutatoare cu came. Prezentare generalã a sistemului. Întreruptoare Pornit-Oprit TM. Comutatoare de comandã TM.

ȘIRURI (TABLOURI UNIDIMENSIONALE)

ARTICOLE ŞI NOTE MATEMATICE

Barem de notare clasa a V-a

"IIITO-TEC 'NIKI" & EQUIPME

Definiţie. Pr(X a) - probabilitatea ca X să ia valoarea a ; Pr(a X b) - probabilitatea ca X să ia o valoare în intervalul a,b.

Ordin. pentru aprobarea structurii informaţiilor înscrise pe cardul naţional de asigurări sociale de sănătate

The 2017 Danube Competition in Mathematics, October 28 th. Problema 1. Să se găsească toate polinoamele P, cu coeficienţi întregi, care

GIDD PENTRU CALCULUL CONSUMULUI DE CA.LOURA AL CONSTRUCTIILOR DOTATE CU ' A SISTEME PASIVE DE INCALZIRE SO LARA INDICATIV GP

A GENERALIZATION OF A CLASSICAL MONTE CARLO ALGORITHM TO ESTIMATE π

ANOVA IN THE EDUCATIONAL PROCESS

Habilitation Thesis. Periodic solutions of differential systems: existence, stability and bifurcations

MODEL FOR FLEXIBLE PLATES SUPPORTED ON PILES

Laborator 5. Instructiuni de control logic : FOR, IF, WHILE. - Staţii de lucru care au instalat Orcad9.2. si MatLab 7.1

PROTECTII PRIN RELEE. (2) _ Principii si particularitati ale principalelor protectii

Utilizarea claselor de echivalenta in analiza asistata de calculator a sistemelor cu evenimente discrete

CURS 11: Programare dinamică - II - Algoritmica - Curs 12 1

Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor

PRELUCRARI PE IMAGINI BINARE (ALB/NEGRU)

DYNAMIC ANALYSIS ON THE HEART ELECTROMAGNETIC ACTIVITY

U.P.B. Sci. Bull., Series A, Vol. 74, Iss. 3, 2012 ISSN SCALAR OPERATORS. Mariana ZAMFIR 1, Ioan BACALU 2

TWO BOUNDARY ELEMENT APPROACHES FOR THE COMPRESSIBLE FLUID FLOW AROUND A NON-LIFTING BODY

THE METROLOGY OF OPTICAL FIBRE LOSSES

Modelare fuzzy. Problematica modelarii Sisteme fuzzy in modelare Procedura de modelare ANFIS Generarea sistemului fuzzy initial Utilizare ANFIS

Fişa de verificare a îndeplinirii standardelor minimale

Ecuatii si inecuatii de gradul al doilea si reductibile la gradul al doilea. Ecuatii de gradul al doilea

QUASI-ANALYTIC SOLUTIONS OF FIRST-ORDER PARTIAL DIFFERENTIAL EQUATIONS USING THE ACCURATE ELEMENT METHOD

Laborator 3. Backtracking iterativ

ELABORATION AND VALIDATION OF AN HPLC METHOD FOR THE QUANTITATIVE ASSAY OF 5-FLUOROURACIL

THE EXPERIMENTAL TESTING AND NUMERICAL MODEL CALIBRATION OF A STEEL STRUCTURE

VINDECAREA BOLILOR INCURABILE PRIN METODE NATURALE BY MIKHAIL TOMBAK

ATTENUATION OF THE ACOUSTIC SCREENS IN CLOSED SPACES

Logică și structuri discrete. Marius Minea 25 septembrie 2017

ASPECTS REGARDING NUMERICAL MODELING OF INDUCTIVE HEATING PROCESS FOR LOW VOLTAGE ELECTRICAL CABLES

ON THE ANALYSIS OF RECURRENCE CHARACTERISTICS OF VARIABLE ACTIONS

FISA DE VERIFICARE A INDEPLINIRII STANDARDELOR MINIMALE NECESARE ŞI OBLIGATORII PENTRU GRADUL DE CONFERENŢIAR UNIVERSITAR DOMENIUL MATEMATICĂ

A STABILITY STUDY OF NON-NEWTONIAN FLUID FLOWS

Graduări pe algebre de matrice

Clasa a 10-a. Review of preview

Rezultate în Teoria Punctului Fix şi Procese Iterative cu Aplicaţii

COMPARATIVE ANALYSIS OF THE BENDING THEORIES FOR ISOTROPIC PLATES. CASE STUDY

IDENTIFICATION AND OPTIMAL CONTROL OF BLOWING SYSTEM

ANALYTICAL AND GRAPHICAL SOLUTIONS TO PROBLEMS IN DESCRIPTIVE GEOMETRY INVOLVING PLANES AND LINES

Curs 6. Discrete Event Simulation

$IfNot ParametricTable= P_ratio_gas. P ratio,gas = 14; Raport comprimare compresor aer - Pressure ratio for gas compressor (2) $EndIf

MATEMATICĂ 3 PROBLEME DE REFLECŢIE

Proiectarea cu Micro-Procesoare

LIGHTNING MVP System

GDPR (Doar) cateva idei. Adriana Radu Partener Schoenherr si Asociatii 21 Noiembrie 2017

EURO3. Without EGR. NOx reduction. particulate filter. Trade-off. Euro V (2008) denox system B US2007 US

POLAR CHARACTERISTIC OF ENERGETIC INTENSITY EMITTED BY AN ANISOTROPIC THERMAL SOURCE IRREGULARLY SHAPED

Solutions to Section 2.9 Homework Problems Problems 1 5, 7, 9, 10 15, (odd), and 38. S. F. Ellermeyer June 21, 2002

THE DIVERSITY INDICES APPLIED TO THE MAYFLY (EPHEMEROPTERA) COMMUNITY OF BUZAU RIVER

A COMPARATIVE ANALYSIS OF WEB BUCKLING RESISTANCE: STEEL PLATE GIRDERS GIRDERS WITH CORRUGATED WEBS

THE BEHAVIOUR OF ELASTOMERIC BEARINGS UNDER LOAD COMBINATIONS

Cercet¼ari operaţionale

18.06 Problem Set 3 Solution Due Wednesday, 25 February 2009 at 4 pm in Total: 160 points.

CATAVASII LA NAȘTEREA DOMNULUI DUMNEZEU ȘI MÂNTUITORULUI NOSTRU, IISUS HRISTOS. CÂNTAREA I-A. Ήχος Πα. to os se e e na aș te e e slă ă ă vi i i i i

FINITE ELEMENT ANALYSIS OF FRICTIONAL CONTACTS

FORMULELE LUI STIRLING, WALLIS, GAUSS ŞI APLICAŢII

Avem 6 tipuri de simboluri in logica predicatelor:

O U T O F A H U N D R E D P E O P L E : T H O S E W H O A L W AY S K N O W B E T T E R ;

REZUMATUL TEZEI DE DOCTORAT

Metode clasice. Camelia Chira.

ANALYSIS OF THE THERMO-CONVECTION VARIATION IN TUBULAR HEAT EXCHANGERS FUNCTIONING WITH NANOFLUID

1994, Phd. in mathematics, Faculty of mathematics and informatics, University of Bucharest.

Câteva rezultate de algebră comutativă

OPTIMAL OBSERVABILITY OF PMU'S USING ANALYTIC HIERARCHY PROCESS (AHP) METHOD

Prelegerea 7. Sistemul de criptare AES. 7.1 Istoric

Transcription:

Utilizarea limbajului SQL pentru cereri OLAP Mihaela Muntean 2015

Cuprins Implementarea operatiilor OLAP de baza in SQL -traditional: Rollup Slice Dice Pivotare SQL-2008 Optiunea ROLLUP Optiunea CUBE, grouping sets Optiunea PIVOT RANK(), DENSE_RANK() Mihaela Muntean

Operaţii de bază Slice şi dice sau selecţii în cub. Afişează vânzările anuale din Bucureşti. Drill down / rollup - utilizează ierarhiile din dimensiuni şi măsurile pentru agregări sau de-agregări. Drill across - combină mai multe cuburi cu una sau mai multe dimensiuni comune (joncţiunea de cuburi). Ranking sau top/bottom n -analize de tip primii n sau ultimii n după anumite criterii. Pivotare/rotirea unui cub pentru a pune în evidenţă alte aspecte analitice. Mihaela Muntean

Mihaela Muntean

SELECT SQL traditional Cererile OLAP utilizeaza: functii de agregare (COUNT, SUM, AVERAGE, MIN, MAX ) clauza GROUP By roll-up, drill-down slice, dice pivot Mihaela Muntean

Se considera urmatoarea tabela de fapte VVanzari cu masura Cantitate Tabelele de dimensiuni: VLocatie (MagId, Oras ), VProdus (ProdId, Denumire_prod, Categorie ), VTimp (TimpId, luna.) Ierarhiile din dimensiuni sunt: MagId Oras (ierarhie din Locatie) ProdId Categorie (ierarhie din Produs) TimpId luna (ierarhia din Timp) Mihaela Muntean

Roll-up dimensional pe tabela de fapte prin eliminarea unei dimensiuni /mai multor dimensiuni, in timp ce dimensiunile ramase sunt reprezentate de cheile lor in clauza Group By O dimensiune eliminata dimensiunea Timp: SELECT ProdId, MagId, SUM(cantitate ) AS Total_dupa_Prod_Loc FROM vvanzari GROUP BY ProdId, Magid order by prodid; ; Doua dimensiuni eliminate : Locatie si Timp : SELECT ProdId, SUM(cantitate ) AS Total_dupa_Prod FROM vvanzari GROUP BY ProdId; Mihaela Muntean Toate dimensiunile eliminate : SELECT SUM(cantitate ) AS Total_general FROM Vvanzari;

Mihaela Mun

Mihaela Mun

Roll-up ierarhic pe tabela de fapte si pe unele dimensiuni prin parcurgerea ierarhiilor din dimensiuni, spre varful lor Numarul de rollup-uri ierarhice depinde de numarul de nivele din ierarhii. O ierarhie simpla (fara ramuri paralele) cu n nivele, da n rollup-uri. Roll-up ierarhic dupa ierarhia din dimensiunea Locatie (MagId oras ) vanzarile dupa oras, produs si zi SELECT oras, ProdId, TimpId, SUM(cantitate ) AS Oras_Total FROM vvanzari v, vlocatie l WHERE v.magid = l.magid GROUP BY oras,prodid, Timpid order by oras; Mihaela Muntean

Roll-up ierarhic Roll-up dupa ierarhia din dimensiunea Timp(TimpId luna ) vanzarile dupa luna, produs, magazin SELECT luna, magid, Prodid, SUM(cantitate ) AS luna_total From Vvanzari V, Vtimp T Where V.Timpid = T.Timpid GROUP BY luna, prodid, magid order by luna, magid ; SELECT luna, SUM(cantitate ) AS luna_total From Vvanzari V, Vtimp T Where V.Timpid = T.Timpid GROUP BY luna order by luna; Mihaela Muntean

Roll-up ierarhic Roll-up ierarhic dupa doua dimensiuni ( doua ierarhii )- vanzarile dupa oras, categorie si zi SELECT categorie, oras, TimpId, SUM(cantitate ) AS Tip_oras_Total FROM Vvanzari v, VProdus p, VLocatie l WHERE v.magid = l.magid AND v.prodid = p.prodid GROUP BY categorie, oras, TimpId order by categorie, oras, timpid; Roll-up dupa trei dimensiuni -vanzarile dupa categorie, oras si luna. SELECT categorie, oras, luna, SUM(cantitate ) AS Tip_oras_luna_Tot FROM Vvanzari v, VProdus p, VLocatie l, VTimp t WHERE v.magid = l.magid AND v.prodid = p.prodid AND v.timpid = t.timpid GROUP BY categorie, oras, luna order by categorie, oras, luna; Mihaela Muntean

Slice= Selectia unei sg valori dintr-o dimensiune Wellington Nelson Auckland January February March Eraser 123 99 183 Linear 23 1 13 Pencil 1230 1111 2303 Wellington Se considera tabela de fapte Vanzari cu dimensiunile Produs, Oras si Timp : Vanzari (ProdId, orasid, lunaid, cantitate ) Auckland Nelson January SELECT ProdId, orasid, cantitate FROM vanzari WHERE lunaid = January ; ProdId, orasid, cantitate ( lunaid = January (Vanzari)) Eraser Linear 123 23 Pencil 1230 Mihaela Muntean

Dice=Selectii in doua sau mm dimensiuni- subcub SELECT orasid, cantitate FROM vanzari WHERE (lunaid = January or lunaid= February )AND (ProdId = Pencil or prodid= Eraser ) Nu implica reducerea nr de dimensiuni ale cubului Wellington Nelson Auckland January February March Eraser 123 99 183 Linear 23 1 13 Pencil 1230 1111 2303 Mihaela Muntean

Operatorul ROLLUP (SQL -2003)- (SQL 2008) SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid GROUP BY ROLLUP (denumire, zi); va calcula sum(cantitate) dupa {denumire, zi}, {denumire}, {} Dacă în ROLLUP sunt specificate N coloane, atunci se produc N+1 tipuri de subtotal Rollup(x,y) =((), (x), (x,y)) MySQL, SQLServer, -clauza WITH ROLLUP SELECT GROUP BY denumire, zi WITH ROLLUP Oracle: GROUP BY ROLLUP(denumire,zi) Mihaela Muntean

GROUP BY ROLLUP (denumire, zi); SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t Where V.Orasid = L.Orasid And V.Timpid = T.Timpid Group By Denumire, Zi Union SELECT denumire,null, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t Where V.Orasid = L.Orasid And V.Timpid = T.Timpid Group By Denumire, null Union SELECT null, null, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t Where V.Orasid = L.Orasid And V.Timpid = T.Timpid ; Mihaela Muntean

Rollup parţial SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid GROUP BY denumire, ROLLUP (zi) order by l.denumire; Group by rollup(x) : {( ), (x)} Group by denumire, rollup(zi) Group by zi, rollup(denumire)) SELECT zi, denumire, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t Where V.Orasid = L.Orasid And V.Timpid = T.Timpid GROUP BY zi, ROLLUP (denumire) order by zi; Mihaela Muntean

GROUP BY denumire, ROLLUP (zi) SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t Where V.Orasid = L.Orasid And V.Timpid = T.Timpid Group By Denumire, Zi Union SELECT denumire, null, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t Where V.Orasid = L.Orasid And V.Timpid = T.Timpid Group By Denumire, null Order By 1; Mihaela Muntean

Operatorul CUBE Operatorul CUBE realizează toate tipurilor posibile de agregare. Cubul poate fi un cub complet sau un cub parţial. Cube(x,y) ={( ), (x), (x,y), (y)} Cube(x1,x2,.xn)= 2 n grouping sets ((), (x1), (x1, x2), (x1,x2,x3),..(x1,x2,..xn), (x2), (x2,x3), (x2,x3,x4), (xn)) Mihaela Muntean

Operatorul CUBE SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid GROUP BY CUBE (denumire, zi); Va produce acelasi rezultat ca si 4 comenzi SELECT SUM GROUP BY (dupa toate subseturile lui {denumire, zi} ca atribute de grupare ): (denumire, zi), (denumire), (zi), {}

SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid Group By Denumire, Zi Union SELECT denumire, null, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t Where V.Orasid = L.Orasid And V.Timpid = T.Timpid Group By Denumire, null Union SELECT null, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t Where V.Orasid = L.Orasid And V.Timpid = T.Timpid Group By null, Zi Union SELECT null, null, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t Where V.Orasid = L.Orasid And V.Timpid = T.Timpid order by 1; GROUP BY CUBE (denumire, zi);

SELECT nume, denumire, zi, SUM(cantitate) FROM vanzari v, Timp t, Locatie l, agenti a WHERE v.timpid = t.timpid AND v.orasid = l.orasid AND v.agentid = a.agentid GROUP BY CUBE (nume, denumire, zi); Nume, denumire, zi Nume, denumire Nume, zi Denumire, zi nume denumire zi { }

Grouping SETS Criterii de grupare mai selective decat la CUBE SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid GROUP BY denumire, zi; SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid GROUP BY grouping sets (denumire, zi); identic cu group by denumire union all group by zi

SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid GROUP BY grouping sets ((denumire, zi), (denumire)); Identic cu: Group by denumire, zi Union all Group by denumire

SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid GROUP BY grouping sets ((denumire, zi), (denumire), ()); ROLLUP(denumire, zi)!!!!!!

Select Null, Null, sum(cantitate) as vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid Union All SELECT denumire, zi, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid GROUP BY denumire, zi Union all SELECT denumire, null, SUM(cantitate) AS vanzari FROM vanzari v, Locatie l, Timp t WHERE v.orasid = l.orasid AND v.timpid = t.timpid GROUP BY denumire;

Operatia de pivotare SELECT * FROM <table-expr> PIVOT (aggregate-function(<column>) FOR <pivot-column> IN (<value1>, <value2>,..., <valuen>) ) AS <alias> WHERE...!!!Operatia de pivotare executa un GROUP BY implicit utilizand orice coloana din tabela!!!!! Cererile pivot se vor executa pe un subset de coloane utilizand subcereri, viziuni/view

Operatia de pivotare With Pivot_Data As (Select Timpid, Magid, Cantitate From Vvanzari) select * from Pivot_Data Pivot (SUM(cantitate) FOR magid IN (1,2)) ;

Rank() Returneaza pozitia unui tuplu dintr-o partitie Tuplurile sunt ordonate in partitie dupa un criteriu de ordonare Toate tuplurile cu aceeasi valoare pentru criteriu de de ordonare sunt considerate avand acelasi rang Daca n (> 1 ) tupluri au rangul r, atunci urmatorul tuplu are rangul r + n + 1 RANK ( ) OVER ( [query_partition_clause] order_by_clause ) DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause ) Ranking este realizat in conjunctie cu clauza ORDER BY Select agentid, sum(cantitate) cantitate, rank() over (order by sum(cantitate) desc ) as a_rank From vanzari group by agentid order by a_rank;

Rank 2??

Dense_rank() elimina aceasta problema!

Ranking pe multiple expresii Select oras, Denumire_Prod, Sum(Cantitate) Cantitate, Sum(Volumvanz), Dense_Rank() Over (Order By Sum(Cantitate ) Desc, Sum(Volumvanz) Desc) As A_Rank From Vvanzari, Vprodus, Vlocatie Where Vvanzari.Prodid=Vprodus.Prodid And Vvanzari.Magid=Vlocatie.Magid And Oras in ('Iasi', 'Hunedoara') Group By Oras, Denumire_Prod;

Pt valori identice ale cantitatii se face rank() dupa volumul va

Rank() cu clauza PARTITION BY PARTITION BY imparte setul de date in partitii pe care opereaza RANK () Select Oras, Denumire_Prod, Sum(Cantitate) Cantitate, Dense_Rank() Over (Partition By oras Order By Sum(Cantitate ) Desc) As A_Rank From Vvanzari, Vlocatie, Vprodus Where Vvanzari.Magid=Vlocatie.Magid and Vvanzari.Prodid=Vprodus.Prodid Group By oras, Denumire_Prod;

Pt fiecare oras se face o ierarhi cantitate