Vous êtes sur la page 1sur 70

Entrepts de donnes et analyse en ligne OLAP (On-Line Analytical Processing)

OLAP Queries
Prsente par: Pr H.ZIYATI
Universit Hassan II Ain Chock
Ecole Suprieure de Technologie Casa blanca

Entrept de donnes

Entept de donnes
Caractristiques Dans un entrept, les donnes sont orientes par sujets :
Les donnes organises par sujet (clients, vendeurs, production,etc.) contiennent seulement l'information utile la prise de dcision. Les systmes oprationnels sont plutt orients autour des traitements et des fonctions.

intgres :
Les donnes, provenant de diffrentes sources (systmes lgus) sont souvent structures et codes de faons diffrentes. L'intgration permet d'avoir une reprsentation uniforme, cohrente et transparente. Lorsque les donnes sont agrges, il faut sassurer que lintgration est correcte.

historiques :
Un entrept contient des donnes "anciennes", datant de plusieurs annes, utilises pour des comparaisons, des prvisions, etc.

non volatiles :
Une fois charges dans lentrept, les donnes ne sont plus modifiables. Elles sont uniquement accessibles en lecture (pour l'instant...).

Entrept de donnes

Entrept de donnes
Rapports

Fouille de donnes

Collection of tools
gathering data cleansing, integrating, ... querying, reporting, analysis data mining monitoring, administering warehouse Entrept de donnes

Applications dun ED
Traitement dinformations:
Analyse statistique de base Rapport laide de tableaux croiss, graphes, etc.

Traitement analytique:
Analyse multidimensionnelle des donnes dun ED Analyse en ligne OLAP

Fouille de donnes:
Dcouverte de connaissances

Entrept de donnes

4/24

OLTP vs. OLAP


OLTP: On Line Transaction Processing
Describes processing at operational sites

OLAP: On Line Analytical Processing


Describes processing at warehouse

Entrept de donnes

OLTP vs. OLAP

Entrept de donnes

Modlisation dun DW

Modlisation : dimensions & mesures Schma en toile: la table des faits au centre et les tables de dimensions autour Schma en flocon: normalises Schma en constellation.
Entrept de donnes 7

mme principe que dans le

schma en toile mais certaines dimensions sont

Star
product prodId p1 p2 name price bolt 10 nut 5

store storeId c1 c2 c3

city nyc sfo la

sale oderId date o100 1/7/97 o102 2/7/97 105 3/8/97

custId 53 53 111

prodId p1 p2 p1

storeId c1 c1 c3

qty 1 2 5

am t 12 11 50

Measures
customer custId 53 81 111 name joe fred sally address 10 main 12 main 80 willow city sfo sfo la

Entrept de donnes

Star Schema

product prodId name price

sale orderId date custId prodId storeId qty amt

customer custId name address city

store storeId city

Entrept de donnes

Another Example of Star Schema


time
time_key day day_of_the_week month quarter year item item_key item_name brand type supplier_type

Sales Fact Table time_key item_key branch_key

branch

location
location_key street city state_or_province country

location_key
branch_key branch_name branch_type

units_sold dollars_sold avg_sales

Measures
10 Entrept de donnes

Terms
Fact table Dimension tables Measures

product prodId nam e price

sale orderId date custId prodId storeId qty amt

custom er custId nam e address city

store storeId city

11

Entrept de donnes

Hierarchies des Dimensions


sType store city region
sType tId t1 t2 city cityId sfo la size small large pop 1M 5M location downtown suburbs regId north south

store storeId s5 s7 s9

cityId sfo sfo la

tId t1 t2 t1

mgr joe fred nancy

snowflake schema constellations

region regId nam e north cold region south warm region


Entrept de donnes

12

Schema en flocon de neige


time
time_key day day_of_the_week month quarter year item item_key item_name brand type supplier_key

Sales Fact Table time_key item_key branch_key

supplier supplier_key supplier_type

branch branch_key branch_name branch_type

location
location_key street city_key

location_key units_sold dollars_sold avg_sales Measures

city
city_key city state_or_province country

13

Entrept de donnes

Schema en Constellation
time
time_key day day_of_the_week month quarter year

item
Sales Fact Table time_key item_key branch_key
item_key item_name brand type supplier_type

Shipping Fact Table time_key item_key shipper_key from_location

branch
branch_key branch_name branch_type

location_key units_sold dollars_sold avg_sales Measures

location
location_key street city province_or_state country

to_location dollars_cost units_shipped shipper


shipper_key shipper_name location_key shipper_type

14

Entrept de donnes

Cube de donnes (Data cube)


Un ED est bas sur un modle multidimensionnel o les donnes sont vues comme des cubes de donnes Un cube de donnes, permet de voir les donnes selon plusieurs dimensions Dans notre cas le cube de donnes contient : Trois dimensions : Store, Produit et Temps (jour, mois, anne) Une table de faits qui contient des mesures.
Entrept de donnes 15

Concept de hirarchie
Dimensions: Spatiale, Simulations, Temps

Produit

Industry Region

Year

Category Country Quarter Product City Store


Entrept de donnes

Month Week Day


16

Temps

Cube de donnes
Total des Ventes au premier Semestre Du P1 au magasin S1.

Date
P1 P2 P3 somme Jan
100

Fv
200

Mar
300

somme
600

Store1 Store2 Store3 somme


Total des Ventes du Premier semestre De tous les produits Suivant tous les magasin

Entrept de donnes

Store

17

Les oprations OLAP


Roll up (drill-up): summarize data Passer un niveau suprieur dans la hirarchie dune dimension Drill down (roll down): reverse of roll-up Descendre dans la hirarchie dune dimension Slice and dice: project and select Pivot (rotate): reorient the cube, visualization, 3D to series of 2D planes

18

Entrept de donnes

Oprateur Drill-Down
Date
Jan P1 P2 P3 Somme S1 Fv Mar Somme

S2 S3 Somme

Date
13 P1 P2 P3 Somme 14

15

Somme S1

S2 S3 Somme

Entrept de donnes

19

Store

Drill-Down sur Mois de fvrier

Oprateur Roll-up
Date
Jan P1 P2 P3 Somme S1 Fv Mar Somme

S2 S3 Somme

Roll-up sur la dimension Produit


Date
Jan Game1 Game2 Somme Fv Mar Somme S1

S2 S3 Somme

Entrept de donnes

20

Oprateur Slice
Date
Jan P1 P2 P3 Somme S1 Fv Mar Somme

S2 S3 Somme

Date
Jan P1 P2 P3 Somme F v Mar Somme

Entrept de donnes

21

Store

Slice pour Store sur S1

Oprateur Dice
Date
Jan P1 P2 P3 somme S1 Fv Mar somme

S2 S3 somme

Dice pour Store sur store(2,3) Et sur Date (Fv, Mar )


Date
Fv P1 P2 P3 SUM S2 S3 somme Mar somme

Entrept de donnes

Store

22

Store

Dice (Q1,Q2) (Toronto, Vancouver) Home , Computer)

Roll up(Location)

Drill down (Time)

Slice(Q1)

Pivot

Entrept de donnes

23

Analyse des ventes de divers produits


Exemple de questions associes : Quels sont les produits dont les ventes ont chut lan dernier? Quelles sont les quinze meilleures ventes par magasin et par semaine durant le premier trimestre de lanne 2001? Quelle est la tendance des chiffres daffaire (CA) par magasin depuis 3 ans? Quelles prvisions peut-on faire sur les ventes dune catgorie de produits dans les 6 mois venir ?

Entrept de donnes

24

SQL
(Select : requtes avec comparaison )
L'ordre SELECT sert extraire des donnes de la base de donnes. SELECT what FROM where ; Un ordre SELECT est compos de deux clauses : - La clause SELECT qui spcifie les colonnes slectionner, - La clause FROM qui spcifie la table o sont situes les colonnes slectionnes dans la clause SELECT. L'ordre SELECT possde trois capacits : - Slection : Slection de une ou plusieurs lignes - Projection : Slection de une ou plusieurs colonnes - Jointure : Slection de deux colonnes dans deux tables diffrentes, crant ainsi une relation entre les donnes des deux colonnes.

Entrept de donnes

25

SQL
(Select : requtes avec comparaison )

La clause WHERE peut utiliser les oprateurs : AND, OR, BETWEEN, NOT, IN, =, <>, !=, >, >=, <= Ces oprateurs sappliquent aux valeurs numriques, aux chanes de caractres, et aux dates. Les chanes de caractres et les dates doivent tre encadres par '...' contrairement aux nombres. Les clauses
IN (salaire in (1700,1800) ) LIKE : permet de rechercher des chanes de caractres :
% _ Toute chane de 0 n caractres 1 caractre

Entrept de donnes

26

SQL
(Select : requtes avec comparaison ) La Valeur NULL : La valeur NULL pour un champ signifie non renseign. Il ne faut pas confondre avec zro ou blanc. Ce prdicat est utilisable dans toutes les commandes SQL (insert, select, ...). La clause BETWEEN : La clause Between permet de slectionner des lignes lintrieure de bornes dfinies. La clause DISTINCT ajoute derrire la commande SELECT permet d'liminer les duplications.

Entrept de donnes

27

SQL
(Select : requtes avec comparaison ) La clause ORDER BY : Permet de classer le rsultat dune interrogation, Les critres de classement sont spcifis dans une expression dont la syntaxe est la suivante : ORDER BY {nom_col1 | num_col1 [DESC] [, nom_col2 | num_col2 [DESC],...]} Le classement se fait d'abord selon la premire colonne spcifie dans l'ORDER BY puis les lignes ayant la mme valeur dans la premire colonne sont classes selon la deuxime colonne de l'ORDER BY, etc... Pour chaque colonne, le classement peut tre ascendant (par dfaut) ou descendant (DESC).

Entrept de donnes

28

SQL
(Oprateurs)
Les oprateurs arithmtiques peuvent tre utiliss pour effectuer des oprations sur les dates ou les nombres. Les oprateurs arithmtiques disponibles sous Oracle sont les suivants :

Entrept de donnes

29

SQL
( Fonctions de rapport d'agrgat )

SELECT qui permet aussi d'effectuer des calculs sur l'ensemble des valeurs d'une colonne. Ces calculs sur l'ensemble des valeurs d'une colonne se font au moyen de l'une des fonctions suivantes : AVG([DISTINCT | ALL] expression) : Renvoie la moyenne des valeurs d' expression. COUNT(* | [DISTINCT | ALL] expression) : Renvoie le nombre de lignes du rsultat de la requte. Si expression est prsent, on ne compte que les lignes pour lesquelles cette expression n'est pas NULL. MAX([DISTINCT | ALL] expression : Renvoie la plus petite des valeurs d'expression. MIN([DISTINCT | ALL] expression) : Renvoie la plus grande des valeurs d'expression. STDDEV([DISTINCT | ALL] expression) : Renvoie l'cart-type des valeurs d'expression. SUM([DISTINCT | ALL] expression) : Renvoie la somme des valeurs. VARIANCE([DISTINCT | ALL] expression) : Renvoie la variance des valeurs d'expression.
Entrept de donnes 30

SQL
(fonctions de groupement )
La clause GROUP BY permet de diviser les enregistrements dune table en groupes. Les fonctions de groupe peuvent tre alors utilises pour retourner les informations relatives chaque groupe.

SELECT [column1, ] group_function(column2) FROM table_name [WHERE condition(s)] [GROUP BY column1] [ORDER BY column2] ;

Entrept de donnes

31

SQL
(fonctions de groupement )
Plusieurs colonnes peuvent tre spcifies dans la clause GROUP BY, ce qui permet de rcuprer des informations dun groupe intgr dans un autre groupe. (Organiser les donnes en sous-groupe).

SELECT column1, column2, group_function(column) FROM table WHERE condition(s) GROUP BY column1, column2 ORDER BY column ;

Les donnes seront organises en groupes par rapport la colonne column1. Puis chaque groupe sera nouveau organis en sous-groupes par rapport la colonne column2.

Entrept de donnes

32

SQL
(Les fonctions Arithmtiques)

ABS(nb) : Renvoie la valeur absolue de nb. CEIL(nb) : Renvoie le plus petit entier suprieur ou gal nb. COS(n) : Renvoie le cosinus de n, n tant un angle exprim en radians. COSH(n) : Renvoie le cosinus hyperbolique de n. EXP(n): Renvoie e puissance n. FLOOR(nb) :Renvoie le plus grand entier infrieur ou gal nb. LN(n) : Renvoie le logarithme nprien de n qui doit tre un entier strictement positif. LOG(m,n) : Renvoie le logarithme en base m de n. m doit tre un entier strictement suprieur 1, et n un entier strictement positif.
Entrept de donnes 33

SQL
(Les fonctions sur les chaines de caractres)
SUBSTR (chane, a, b) = retourne une sous chane de a octets depuis la position b LTRIM(chane, car) = supprime les caractres lextrmit gauche de la chane chane tant quils appartiennent lensemble de caractres car. RTRIM(chane, car) = idem que LTRIM mais les caractres sont supprims droite de la chane. TRANSLATE(chane, car1, car2) = car1 et car2 sont des chanes de caractres considres comme des ensembles de caractres. La fonction TRANSLATE remplace chaque caractre de la chane chane prsent dans lensemble de caractres car1 par le caractre correspondant de la mme position de lensemble car2. REPLACE(chane, car [ ,chane]) = permet de remplacer un ensemble de caractres car par ceux de [chane]. Si [chane] est vide, les caractres car sont supprims de chane. UPPER (chane) = converti la chane en majuscules LOWER (chane) = converti la chane en minuscules LENGTH (chane) = renvoie la longueur de la chane TO_NUMBER = converti une chane de caractres en nombre TO_CHAR(nombre, format) = converti un nombre en chane de caractres en fonction du format.
Entrept de donnes 34

SQL
(Les fonctions de Date)
YSDATE = retourne la date et lheure du systme dexploitation NEW_TIME(d,a,b) = transforme la date et lheure d au mridien a en une date et heure au mridien b. ROUND(date[ ,prcision]) = arrondit la date la prcision spcifie. La prcision est spcifie en utilisant un des masques de mise en forme de la date. Par dfaut la prcision est le jour. TRUNC(date [ , prcision]) = Tronque la date la prcision spcifie. TO_DATE (chane, format) = retourne la chane au format date du systme (format identique la fonction to_char ). ADD_MONTHS(date, nombre) = ajoute ou soustrait le nombre de mois la date prcise, le rsultat est une date. MONTHS_BETWEEN(date1, date2) = prend comme valeur la diffrence date1 date2 exprime en nombre de mois. La partie fractionnaire du rsultat est calcule en considrant chaque jour comme gal 1/31 me jour. LAST_DAY(date) = prend comme valeur la date du dernier jour du mois contenu dans (date) NEXT_DAY(date, nom_du_jour) = prend comme valeur la date du prochain jour de la semaine spcifi par nom_du_jour.
Entrept de donnes 35

SQL
(Autres fonctions)
USER = nom de lutilisateur courant NVL (expr1,expr2) = retourne la valeur expr2 si expr1 est null ; sinon retourne expr1 DECODE (expr,val1,result1,(val2,result2,] [default]) = si expr gale une des valeurs, alors le rsultat correspondant est retourn, sinon le rsultat prend la valeur par dfaut ASCII (chaine) = permet dobtenir le code ASCII ou EBCDIC du premier caractre de la chane. CHR(n)= permet dobtenir le caractre dont le code ASCII ou EBCDIC est gal n. COALESCE(expression [, ]) = est une gnralisation de la fonction NVL Retourne la premire expression non NULL de la liste et remplace les valeurs NULL par les valeurs ou le contenu des colonnes cites entre parenthses, dans lordre demand. NVL2(expression1,expression2,expression3) = variante de la fonction NVL Retourne expression2 si expression1 est non NULL et expression3 si expression1 est NULL. Rpad(colonne, n, expression1) = Affiche le contenu de la colonne sur n caratres, et fait suivre le contenu de la colonne par expression1 autant de fois que ncessaire pour remplir la colonne affiche. NULLIF(expression1,expression2) = NULLIF Retourne NULL SI expression1 est gal expression2 OU retourne expression1 SINON
Entrept de donnes 36

SQL
(Autres fonctions )
RANK () : Elle calcule la valeur d'un rang au sein d'un groupe de valeurs. Dans le cas de valeurs galit, la fonction RANK laisse un vide dans la squence de classement. La syntaxe de cette fonction est la suivante : RANK () OVER ([partioning] ordering) Exemple : SELECT emp_lname, salary, state, RANK () OVER (ORDER BY salary DESC) "Rank" FROM employee WHERE state IN ('NY','UT') Dense_RANK () : limine les trous (vides) dans la squence de classement. ROW_NUMBER () : elle attribue un nombre unique (squentielle, partir de 1, dfinit par ORDER BY) pour chaque ligne dans la partition. La syntaxe de cette fonction est la suivante : ROW_NUMBER () OVER ([partioning] ordering) NTILE (N) : La fonction NTILE ordonne les lignes en N paquets, N tant un entier pass en paramtre. La clause ORDER BY est donc obligatoire. NTILE renvoie pour chaque ligne le numro du paquet auquel cette ligne appartient.
Entrept de donnes 37

SQL
(fonctions de groupement ) Quel est le rle de cette requte ?

Entrept de donnes

38

SQL
(Requtes avec regroupement)
Il est possible dutiliser les oprateurs ensemblistes de lalgbre relationnelle. Les mots cls sont UNION, MINUS, INTERSECT.

MINUS : Exprime la diffrence entre deux tables, elle permet dafficher les lignes de la premire requte qui ne sont pas comprises dans la seconde. UNION : Pour obtenir le cumul des lignes rsultats de deux requtes on utilise l'instruction UNION. Loprateur UNION ALL permet dafficher les doublons. INTERSECT : Pour obtenir les lignes rsultats dune premire requte comprises galement dans le rsultat dune seconde requte on pourra utiliser linstruction INTERSECT.

Entrept de donnes

39

SQL
(Jointure)
La syntaxe habituelle dcriture des jointures dans Oracle est :

CROSS JOIN: le rsultat est le mme que celui dune requte sans condition qui affiche pour chaque ligne de la premire table lensemble des lignes de la deuxime table. NATURAL JOIN: la jointure entre les tables est effectue laide des colonnes qui portent le mme nom. JOIN USING: la jointure entre les tables est effectue laide de la ou des colonnes spcifies. JOIN ON: la jointure entre les tables est effectue laide de la condition spcifie. OUTER JOIN: la jointure externe entre les tables est effectue laide de la condition spcifie.
Entrept de donnes 40

Base de donne de test

Entrept de donnes

41

Base de donne de test (contenu)

Entrept de donnes

42

SQL
(Jointure usuelle)
Afficher le nom de dpartement et les infos sur les employs qui sont affects.

Entrept de donnes

43

SQL
(INNER JOIN)

Entrept de donnes

44

SQL
(RIGHT OUTER JOIN)
Jointure externe droite, elle permet dobtenir les lignes de la jointure interne + les lignes orphelines. Ainsi en plus des lignes communes on affiche les dpartements auquel aucun employ nest affect (la table nomme droite des mots cls RIGHT OUTER JOIN).

Entrept de donnes

45

SQL
(RIGHT OUTER JOIN)
Ainsi le rsultat de cette requte est :

Entrept de donnes

46

SQL
(LEFT OUTER JOIN)
Jointure externe gauche, elle permet dobtenir les lignes de la jointure interne + les lignes orphelines. Ainsi en plus des lignes communes on affiche les employs qui ne sont pas affects un dpartement (la table nomme gauche des mots cls RIGHT OUTER JOIN).

Entrept de donnes

47

SQL
(FULL OUTER JOIN)
Jointure externe droite et gauche, elle permet dobtenir les lignes de la jointure interne + les lignes orphelines des 2 tables jointes.

Entrept de donnes

48

SQL
(Jointure)

Entrept de donnes

49

Extension de SQL pour OLAP


L'agrgation est un lment essentiel dans un Datawarehouse. Afin d'amliorer les performances des requtes SQL sur la base de donnes, Oracle fournit les extensions la clause GROUP BY suivante:
ROLLUP et CUBE Trois fonctions de groupe (GROUPING) Expression de type GROUPING SETS

Entrept de donnes

50

ROLLUP
ROLLUP calcule les agrgations de type SUM, COUNT, MAX, MIN et AVG en augmentant le niveau d'agrgation, partir du niveau le plus dtaill jusqu'au grand total.
Rgion Ford 1995 1996 1997
Total

Nord 63 38 75
176

Sud 81 107 35
223

Total 144 145 110

Anne

399

Pour obtenir ce tableau en SQL avec lexpression Group by , il faut 4 requtes:


Group by Couleur, anne Group by Rgion Group by Anne Sommer sur le nombres de pices suivant toutes les annes et toutes les couleurs.
Entrept de donnes 51

SQL
ROLLUP

ROLLUP fonctionne de la manire suivante: il cre des soustotaux qui vont du niveau le plus dtaill jusqu'au grand total, suivant une liste de groupe spcifie dans la clause ROLLUP. ROLLUP cre des sous-totaux n+1 niveaux, ou n est le nombre de colonnes groupes. Par exemple, si dans une requte on spcifie le groupage des colonnes Anne, Rgion (n=2), il y aura trois niveaux d'agrgation. Une expression simple pour obtenir le tableau agrg est :
Group by ROLLUP (Anne, Rgion) Ce qui permet denlever la clause union entre les 4 requtes.

Entrept de donnes

52

SQL
ROLLUP

(A,R,D)

(A,R,-)

(A,-,-)

(-,-,-)
Entrept de donnes 53

SQL
ROLLUP

SELECT a, b, c, SUM(valeur) FROM dw GROUP BY ROLLUP (a, b, c) Groupes par : abc ; ab - ; a- - ; - - Entrept de donnes 54

SQL
ROLLUP partiel Il est galement possible d'avoir seulement les sous-totaux pour certaines colonnes. Par exemple:

Entrept de donnes

55

SQL
Cube

L'extension CUBE cre des sous-totaux pour TOUTES les combinaisons possibles. En terme d'analyse multidimensionnelle, CUBE gnre tout les sous-totaux qui peuvent tre calculs pour les donnes d'un cube avec ces dimensions.

SELECT a, b, c, SUM(valeur) FROM dw GROUP BY CUBE (a,b,c); Groupes par : abc;ab-; a-c ;a-- ; -bc ; -b- ; --c; ---

Entrept de donnes

56

SQL
Cube

SELECT a, b, c, SUM(valeur) FROM dw GROUP BY CUBE (a,b,c); Groupes par : a b c ; a b - ; a - c ; a - - ; - b c ; - b - ;Entrept- de- donnes --c; 57

SQL
Cube partiel CUBE partiel (partial CUBE) ressemble au ROLLUP partiel (partial ROLLUP) dans le sens que l'on peut la limiter certaines dimensions. Les soustotaux de toutes les combinaisons possibles sont limites aux dimensions qui se trouvent entre parenthse.

Entrept de donnes

58

SQL
Cube

Il est possible de calculer les sous-totaux sans l'extension CUBE. Nanmoins ce mcanisme est trs lourd, parce que dans ce cas, pour n dimension du cube, 2 la puissance n SELECT devront tre excuts. Dans un exemple trois dimensions, il faudra 8 SELECT relis par des UNION ALL.

Entrept de donnes

59

Fonctions de groupes (GROUPING Functions)


Il est trs difficile de dterminer au niveau de la prsentation du rsultat quels sont les sous-totaux ou quel est le niveau exact d'agrgation. Il nous faut un moyen pour dterminer quelles sont les lignes qui affichent les sous-totaux. Solution En utilisant un colonne comme argument, GROUPING retourne 1 quand il rencontre une valeur NULL cre par ROLLUP ou CUBE. En effet, si un NULL indique un sous-total, GROUPING retourne un 1. N'importe quelle autre valeur, incluant une valeur stocke NULL, retourne un 0.

Entrept de donnes

60

Exemple fonction de groupes

Entrept de donnes

61

GROUPING SETS
Dans une clause GROUP BY avec l'extension GROUPING SETS, on peut spcifier le jeu de groupes que l'on dsire crer. Ceci permet des spcifications prcises au travers de dimensions multiples sans devoir calculer le CUBE en entier.

Entrept de donnes

62

GROUPING SETS

SELECT a, b, c, SUM (valeur) FROM DW GROUP BY GROUPING SETS ((a, b), (a, c), (b, c), ( )) Groupes par : ab- ; a - c ; - b c ; - - -

Entrept de donnes

63

SQL
Analyse avance

Entrept de donnes

64

SQL
Analyse avance (Window) Rpondre des questions comme : Pour chaque mois, les ventes de chaque magasin en faisant la moyenne entre le mois courant et les deux mois prcdents : faire la moyenne sur les trois derniers mois Comparer les ventes de chaque mois avec la moyenne des ventes de chaque magasin pendant les trois derniers mois. Il sagit de dfinir une fentre glissante du temps et dy deffectuer des cumuls, moyennes, drivations Notion de FENETRE (WINDOW) : Dans une requte, une fentre est une slection de tuples (lignes) qui est utilise pour un certain calcul par rapport la ligne courante La taille de la fentre est un nombre de lignes mais peut tre exprime de diffrentes faons (nombre entier ou par une condition) Une fentre se dclare soit explicitement par une clause WINDOW ou directement dans le SELECT o elle est utilise.
Entrept de donnes 65

SQL
Analyse avance (Window)
{SUM|AVG|MAX|MIN|COUNT|STDDEV|VARIANCE|FIRST_VALUE|LAST_VALUE} ({value expression1 | *}) OVER ([PARTITION BY value expression2[,...]) ORDER BY value expression3 [collate clause>] [ASC| DESC] [NULLS FIRST | NULLS LAST] [,...] { ROWS | RANGE } { BETWEEN { UNBOUNDED PRECEDING | CURRENT ROW | value_expr { PRECEDING | FOLLOWING } } AND { UNBOUNDED FOLLOWING | CURRENT ROW | value_expr { PRECEDING | FOLLOWING } } | { UNBOUNDED PRECEDING | CURRENT ROW | value_expr PRECEDING } }
Entrept de donnes 66

SQL
Analyse avance (Window) Exemple : Implicite : trouver les populations de chaque pays et anne, calculer la moyenne du taux de croissance de la population pour chaque pays et anne, sur la base des annes courante, prcdente et suivante : SELECT country, year, AVG (population) OVER (ORDER BY country, year ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS p_avg FROM population order by country, year, p_avg; explicite : Calculer pour chaque magasin et pour chaque mois du dernier tiers de 2001 le total des ventes, ainsi que la moyenne glissante des quantits vendues avec les deux mois prcdents. Select h.magasin, h.anmois, h.qt_totale, AVG(h.qt_totale) OVER w AS moygliss From Fvm h Where h.anmois BETWEEN 200109 AND 200112 WINDOW w AS (PARTITION BY h.magasin ORDER BY h.anmois ROWS 2 PRECEDING)
Entrept de donnes 67

Problmatique
Rsultats de calculs sont difficiles analyser, interprter et visualiser

Entrept de donnes

68

Objectif principal du (BI)

Entrept de Donnes

SELECT Jours, Age, Type, sum(Montant U), avg(Qauntit) FROM Ventes V, Product P, Temps T, Client T WHERE V.Tid = T.Tid and V.Pid = P.Pid and V.Cid = C.Cid and T.Mois = Mars and T.Anner = 2010 and T.Genre = M and P.Type = A group by Jours, Age, Type

Entrept de donnes

69

Exemple dAnalyse

Entrept de donnes

70