Académique Documents
Professionnel Documents
Culture Documents
Dcisions
Witold Litwin
1
Besoin
Utilisation massive de fonctions agrgats
celles de SQL
autres
dans le langage hte
Exemples
La moyenne de ventes
Le commercial du jour
La corrlation entre certaines attributs
2
Problmes nouveaux
Parcours frquent de tous les tuples
d'une grande table
d'une collection de tables joindre
L'opration peut prendre beaucoup de temps
quel que soit l'optimisation de chemins d'accs
Des requtes peuvent tre impossible formuler
en SQL seul
Classement par rang selon les valeurs de T.a
Corrlation entre T.a et T.b ?
Les attributs les plus corrls ?
3
Solutions
Nouvelles fonctions de SQL
Fonctions agrgats
Rank, Rollup, Cube, Covariance, Correlation
Fonctions scalaires
Nouveaux concepts
Donne multidimensionnelle
Espaces des agrgations
Espace des influences
Espace des variations
4
Solutions
Nouvelles techniques d'implmentation
Calcul parallle et scalable
Pr-calcul partiel ou total de requtes
chantillonnage
Sparation de calculs en plusieurs bases et
systmes
5
Solutions
Nouveau types de SGBD
Entrepts de Donnes
Data Warehousing
Fouille de Donnes
Data Mining (DM)
Analyse en ligne
Online Analytical Processing (OLAP)
Les SGBD "traditionnels" sont ds lors souvent appels
Online Transaction Processing (OTPS) Systems
Les nouveaux constituent les
Systmes de Support de Dcisions
6 Decision Support Systems
Principaux produits
Informix
Bas sur l'achat de Red Brick
DB2
SGBD
Data Warehouse Center
SQL Server
SGBD
Data Analysis Services
OLAP Services renomms pour SQL Server 2000
Oracle Express
7
OLAP traditionnel
Espace
des Donnes
Support
de Decisions
8
OLAP traditionnel
Support
de Decisions
9
OLAP traditionnel
10
OLAP traditionnel
Espace Changement
des Variations de ventes
depuis 3 mois
11
Espaces de Donnes Concepts
Relations Ensembles
Agrgations Arithmtique
Influences Logique et Stats.
Variations Calcul diffrentiel
12
Technologie
BDs parallles, distribues, scalables
Jointures pr-calcules
intgrit rfrentielle
Vues matrialises
Algorithmes statistiques
Algorithmes dcisionnels
revus pour l'application aux BDs
Systmes multibases
Entrepts de donnes
Data warehousing
13
Vue matrialise T
sum prod
30 p1
50 p2
create materialized view T 27 p3
(sum, prod) as
select sum(montant) prod from Ventes
groupby produit ;
14
Vue matrialise T
sum prod
30 p1
50 p2
27 p3
Problme gnral
Cohrence entre la vue et ses tables de
base
Algorithme de MAJ
pour toute nouvelle vente de Produit p
add le montant T.sum
where prod = p ;
15
Vue matrialise
La cohrence peut tre implante par
des dclencheurs
des procdures stockes (stored procedures)
Exercise
Que faire pour la requte
select avg (montant) prod from Ventes
groupby produit
17
Axes de solutions
Systmes multiordinateurs
Cohrence souple (ang. loose) entre les
tables de bases et les vues matrialises
la somme de ventes peut tre 0.05 % inexacte
pendant 10 sec., de temps en temps, sans que le
DBA se fasse gronder
ncessit dans les systmes mobiles
Les MAJ sont propages en asynchrone
18 aprs le Commit
Les statistiques
Correlations
DFs notamment (correlation = 1)
Regressions
Nues Dynamiques
Diday
Analyse factorielle & multi-dimensionnelle en
gnral
Benzecri
Aide au diagnostic
19 Bayes
OLAP / Data Mining
OLAP
Les agrgations demandes sont connues
On peut formuler les requtes SQL
ou SQL imbriqu
Data Mining
on ne sais pas a priori quoi demander
quelles sont les corrlations parmi les attributs de
Ventes ?
Cette dichotomie est floue
20
Data Mining dans un espace des
influences
Le rsultat peut tre attendu sous forme
d'un graphique (business graphics)
21
Data Mining dans un espace des
influences
Le rsultat peut tre attendu sous forme
d'un graphique (business graphics) 2-D
90
80
70
60
East
50
West
40
North
30
20
10
0
1st 2nd 3rd 4th
22 Qtr Qtr Qtr Qtr
Data Mining dans un espace des
influences
Le rsultat peut tre attendu sous forme
d'un graphique (business graphics) 3-D
100
80 East
60 West
40 North
West North
20
East
0
1st 2nd 3rd 4th
Qtr Qtr Qtr Qtr
23
Data Mining dans un espace des
influences
Le rsultat peut tre attendu sous forme
d'une rgle logique
if
customer.age < 25 and power > '9 CH'
and status = 'bachelor'
then
prob (accid.# / year > 1) = 0.99 ;
24
Data Mining dans un espace des
influences
25
Mesures dans un espace des
variations
On observe les variations selon des dimensions
variation de cours de bourse
depuis une semaine, une anne, 1 Janv. 1996...
variation de ventes (ang. lift)
selon la campagne de promotion
selon la saison
etc
Prcalcul de variations est encore plus couteux que
celui de facteurs statiques
surtout de variations temporelles
26
Mesures dans un espace des
variations
100 East
North
West
50 West
North
East
0
1st 2nd 3rd 4th
Qtr Qtr Qtr Qtr
27
Data Mining dans un espace des
influences
On attend deux types de rsultats distincts
l'tat de l'existant
dcouverte, explication, confirmation
l'analyse de la tendance
prdictions
Lex deux aspects sont encore en tat de
recherche ou, au mieux, en dveloppent
avanc
28
Schma en
toile
Table de faits
En gnral trs
grande
Tables de
dimensions
En gnral trs
petites
Liens cl primaire /
cl trangre
29
Architecture d'entrept de donnes IBM
30
Fonctions Agrgat pour OLAP
DB2
CountBig
Pour le nombre de tuples > 2**31
Covariance
entre des attributs ou des expressions de valeur
Correlation
entre des attributs ou des expressions de valeur
Regression functions
10 fonctions
Les paramtres de la droite de rgression entre des attributs ou des
expressions de valeur
Rank, Dense_Rank
Rank en prsence de duplicata : 1,2,2,4,4,6
Dense_Rank en prsence de duplicata : 1,2,2,3,3,4
31
Covariance
Soit avgexp1 le rsultat de AVG(expression1) et soit
avgexp2 le rsultat de AVG(expression2),
Alors COVARIANCE(expression1, expression2) est:
AVG( (expression1 - avgexp1) * (expression2 - avgexp2 )
32
Correlation
Dfinition :
COVARIANCE(expression1,expression2)/
(STDDEV(expression1)*STDDEV(expression2))
SELECT CORRELATION(SALARY,
BONUS)
FROM EMPLOYEE
WHERE WORKDEPT = 'A00'
33
Fonctions Agrgat pour OLAP
DB2
Fonctions spcifiques DB2 Data Warehouse
Center:
Analyse de la variance (ANOVA)
Distributions de Fisher-F
Valeur P
Sous-totaux par priode de temps
Test de Chi-carr
Statistique T pour n paires de valeurs et partir du
coeff. de corrlation r
T = r * ((n 2 ) / (1 - r 2 ))0.5
T 0 indique une corrlation entre les attributs
34
Fonctions Agrgat pour OLAP
Teradata
RANK
CSUM (Cumulative (Running) Sums)
MAVG and MSUM
MDIFF (Moving Difference)
QUANTILE
QUALIFY
SAMPLE
35
SELECT EmployeeName, (HireDate - DATE) AS ServiceDays,
RANK ( ServiceDays ) as Seniority FROM Employee
ORDER BY EmployeeName;
36
SELECT Item, SalesDate, CSUM(Revenue,Item,SalesDate) as
CumulativeSales FROM
(SELECT Item, SalesDate, Sum( Sales ) as Revenue FROM DailySales
WHERE StoreId=5 AND SalesDate Between 1/1/1999 and 1/31/1999
GROUP BY Item, SalesDate) AS ItemSales
ORDER BY SalesDate ;
37
SELECT MarketDay,ClosingPrice, MAVG(ClosingPrice,50,MarketDay)
as XYZAverage
FROM MarketDailyClosing
WHERE Ticker = XYZ
ORDERBY MarketDay;
41
SELECT customer_id, age, income, marital_status, , SAMPLEID
FROM customer_table
SAMPLE 0.6, 0.25, 0.15
46
WEEK DAY_WEEK SALES_PERSON UNITS_SOLD
----------- ----------- --------------- -----------
13 6 GOUNOT 11
13 6 LEE 12
13 6 LUCCHESSI 4
13 6 - 27
13 7 GOUNOT 21
13 7 LEE 21
13 7 LUCCHESSI 4
13 7 - 46
13 - GOUNOT 32
13 - LEE 33
13 - LUCCHESSI 8
13 - - 73
- 6 GOUNOT 11
- 6 LEE 12
- 6 LUCCHESSI 4
- 6 - 27
- 7 GOUNOT 21
- 7 LEE 21
- 7 LUCCHESSI 4
- 7 - 46
- - GOUNOT 32
- - LEE 33
- - LUCCHESSI 8
47 - - - 73
GROUPING SETS
On indique explicitement les groupes
entre (..)
le groupe () est constitu de toute la table
SELECT p#, sum (qty) as tot-qty from S,SP, P
WHERE SP. P# = P.P# AND SP. S# = S.S#
GROUP BY GROUPING SETS ((P#, S.CITY, COLOR), (P#, COLOR),
())
HAVING tot-qty > 100 ;
48
GROUPING SETS
SELECT SALES_PERSON,
MONTH(SALES_DATE) AS MONTH,
SUM(SALES) AS UNITS_SOLD
FROM SALES
GROUP BY GROUPING SETS ( (SALES_PERSON,
MONTH(SALES_DATE)),
()
)
ORDER BY SALES_PERSON, MONTH
49
GROUPING SETS
SALES_PERSON MONTH UNITS_SOLD
--------------- ----------- -----------
GOUNOT 3 35
GOUNOT 4 14
GOUNOT 12 1
LEE 3 60
LEE 4 25
LEE 12 6
LUCCHESSI 3 9
LUCCHESSI 4 4
LUCCHESSI 12 1
- - 155
50
GROUPING SETS & ROLLUP
SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
MONTH(SALES_DATE) AS MONTH,
REGION,
SUM(SALES) AS UNITS_SOLD
FROM SALES
GROUP BY GROUPING SETS ( ROLLUP( WEEK(SALES_DATE),
DAYOFWEEK(SALES_DATE) ),
ROLLUP( MONTH(SALES_DATE), REGION ) )
ORDER BY WEEK, DAY_WEEK, MONTH, REGION
51
WEEK DAY_WEEK MONTH REGION UNITS_SOLD
----------- ----------- ----------- --------------- -----------
13 6 - - 27
13 7 - - 46
13 - - - 73
14 1 - - 31
14 2 - - 43
14 - - - 74
53 1 - - 8
53 - - - 8
- - 3 Manitoba 22
- - 3 Ontario-North 8
- - 3 Ontario-South 34
- - 3 Quebec 40
- - 3 - 104
- - 4 Manitoba 17
- - 4 Ontario-North 1
- - 4 Ontario-South 14
- - 4 Quebec 11
- - 4 - 43
- - 12 Manitoba 2
- - 12 Ontario-South 4
- - 12 Quebec 2
- - 12 - 8
- - - - 155
- - - - 155
52
Rollup, Cube, Grouping Sets
sous MsAccess
Il y en a pas
On peut simuler ces manipulations en
utilisant
GROUP BY
UNION ALL
ORDER BY
Peut tre laborieux pour le CUBE
53
ROLLUP
54
ROLLUP
55
ROLLUP
56
Et le CUBE ?
Fonctions scalaires
S appliquent aux valeurs individuelles
d attributs
d agrgations SQL
Il y a plusieurs catgories
mathmatiques
financires
chanes de caractres
.
Varient entre les dialectes
MsAccess possde UCASE, pas DB2
DB2 possde LOG10, pas MsAccess
57
Fonctions scalaires
Peuvent simbriquer
contrairement aux agrgats SQL
exemple
5.70875764008279
5.99146454710798
58
Tabulations Croises
(Crosstab queries)
Prsentent les rsultat sous forme habituelle de
feuilles de calculs
Les agrgats SUM, AVG.. de GROUP BY et les
valeurs individuelles en mme temps
Impossible avec SQL standard
Transforment les valeurs d'attributs en attributs
Par exemple
les valeurs de P# trouvs pour un mme S#
deviennent les attributs P1, P2,...
les valeurs de P1, P2.. sont les QTY (par ex.)
correspondants
59
Tabulations Croises
TRANSFORM Sum(SP.Qty)
SELECT SP.[S#], Sum(SP.Qty) AS [Row
Summary]
FROM SP
GROUP BY SP.[S#]
PIVOT SP.[p#];
Nouvelles
colonnes
60
Tabulations Croises
S# Total Qty p1 p2 p3 p4 p5 p6
61
Tabulations Croises
64
Compute
select title, type, price, advance
from titles where ytd_sales is not null
order by type desc
compute AVG(price), SUM(advance) by type
compute SUM(price), SUM(advance)
go
title type price advance
fifty years... trad_cook 11.95 4000
Onions.. trad_cook 20.95 7000
Sushi... trad_cook 14.99 8000
avg
15.96 sum
19000
title type price advance
Computer... psychology 21.95 7000
... psychology .... ....
avg
15.96 sum
19000
sum sum
65 236.00 88400
Fermeture transitive (DB2)
Considre la table COURS (CNOM, PNOM, NMIN)
contenant les cours et leur pr-requis avec les notes
minimales pour l admission en cours
ex. (BDs, Str-Ph, 15)
Tout PNOM est une cl trangre avec CNOM comme cl
primaire ailleurs dans COURS
Un cours peut avoir plusieurs pr-requis
Trouver les noms de tous les pr-requis de cours CNAME =
BDs
y compris les pr-requis de pr-requis etc.
C est le calcul de la fermeture transitive
Impossible encore sous MsAccess, SQL Server =< 6.5,
Oracle, Informix
Possible sous DB2, partir de V 5.0
66
Fermeture transitive (DB2)
WITH PRQ (CNOM, PNOM) AS
((SELECT CNOM, PNOM
FROM COURS Requte
WHERE CNOM = BDs ) initiale
UNION ALL
(SELECT C.CNOM, C.PNOM Requte
FROM PRQ AS P, COURS AS C rcursive
WHERE C.CNOM = P.PNOM))
SELECT DISTINCT PNOM FROM PRQ Requte finale
69
Fermeture transitive (DB2)
70
Fermeture transitive (DB2)
InfG Math
InfG Math
71
Fermeture transitive (DB2)
CNOM PNOM NMIN
CNOM PNOM
BDs StPh 15
BDs StPh
BDs LPrg 12
Bds Lprg StPh InfG 13
StPh InfG InfG Math 11
Lprg InfG 12
Lprg InfG
InfG Math
InfG Math
PNOM
StPh
InfG
Math
72
Fermeture Transitive Oracle
Clause
Connect By
73
Fermeture Transitive Oracle
Clause
Connect By
74
75
Fermeture transitive
? Trouver aussi les notes minimales ncessaires
Autres applications
Tous les subordonnes d un chef
EMPL (E#, ENOM, CHEF)
Toutes les composantes PMIN de pices composes
COMP (PMAJ#, PMIN#)
Tous les descendants / ascendants d une personne
Toutes les participations d une entreprise
Limite dapplication
Pas de cycles entre les attributs slectionnes
pour que l on a la fermeture transitive (point fixe)
ex. pas de participations rciproques
76
Fermeture transitive
MsAccess
Il faut simuler
par CREATE TABLE PRQ
avec la cration de cl primaire
Insert into PRQ .. select from COURS...
Insert into PRQ .. select from PRQ, COURS
excut interactivement ou par programme jusqu' ce
que le point fixe est atteint
Select FROM PRQ
A complter par vos soins
77
Conclusion
Un champs nouveau
encore grandement ouvert la recherche
La connexion logique avec le domaine des SGBD
n'est pas toujours claire
Un point de vue sur cette connexion
On prend un champs classique d'analyse de donns et on
s'intresse
aux performances pour une grande quantit de donnes
Aux extensions correspondantes de SQL
78
FIN
79