00:00:00
pour concevoir votre modèle dimensionnel
00:00:02
il va falloir vous intéresser d'abord
00:00:04
aux données on va les prendre
00:00:06
opérationnels on va les orienter de
00:00:08
façon à ce qu'elle permette de piloter
00:00:10
l'activité ça c'est le premier objectif
00:00:12
de ce chapitre et puis pour permettre
00:00:14
cette orientation il va falloir créer
00:00:16
des architectures
00:00:18
décisionnelles optimiser pour le
00:00:20
décisionnel et on va voir comment
00:00:23
organiser justement nos données en fait
00:00:25
et en dimension qui est la première
00:00:27
structure décisionnelle la plus
00:00:29
classique alors pourquoi avoir une
00:00:31
architecture spécifique pour le
00:00:33
décisionnel bah la problématique c'est
00:00:35
que si vous faites votre analyse
00:00:36
décisionnelle directement sur de l'oltp
00:00:38
TP étant pour traitement transactionnel
00:00:41
et ben vous allez perturber
00:00:42
l'opérationnel perturber toutes les
00:00:44
tâches que les gens font sur l'ajou la
00:00:47
suppression des produits l'ajout
00:00:49
suppression des ventes et cetera vous
00:00:51
aurez en plus de très FAI performan sur
00:00:54
votre analyse puisque il va falloir
00:00:56
agréger un très grand nombre de données
00:00:58
au sein de ces tables et de surcrois
00:01:01
vous aurez du mal à faire le croisement
00:01:03
entre différentes bases de données
00:01:05
puisque toutes vos données ne se situent
00:01:07
pas toujours dans la même base de
00:01:08
données et vous voudriez éventuellement
00:01:10
croiser des données qui viennent de
00:01:12
plusieurs silos applicatifs ce qui sera
00:01:14
très compliqué en terme
00:01:16
d'interopérabilité c'est pour ça
00:01:17
qu'Edgar code dans les années 90 a
00:01:20
proposé un autre modèle le modèle OLAP
00:01:23
c'est-à-dire un modèle de traitement
00:01:25
analytique qui va consister à collecter
00:01:27
les informations opérationnelles dans
00:01:30
les bases relationnelles et les amener
00:01:33
dans une base bien spécifique où on va
00:01:35
consolider les données les historiser
00:01:38
puisque quand je change l'état d'une
00:01:40
commande pour dire qu'elle est annulée
00:01:43
je ne sais pas combien de temps s'est
00:01:44
écoulé entre le moment où elle était
00:01:46
dans l'état en attente et l'État annulé
00:01:48
et donc ces bases de données
00:01:50
dimensionnelles vont me permettre
00:01:52
justement de garder l'historique de
00:01:54
l'état des données et je vais pouvoir
00:01:56
donc aussi parce que les agrégations
00:01:59
sont faites déjà à l'avance selon les
00:02:01
axes qui m'intéressent avoir des
00:02:03
analyses de données à grande échelle
00:02:06
sans pour autant avoir des baisses de
00:02:07
performance les agrégations étant
00:02:10
préparées à l'avance au fur à mesure que
00:02:12
les données arrivent alors voilà à quoi
00:02:14
ressemble un cube c'està-dire qu'une
00:02:16
fois que vous avez stocké dans les
00:02:17
entrepos données vos données sont prêtes
00:02:19
à être interrogées le principe du cube
00:02:22
c'est qu'il est designé pour être le
00:02:24
plus rapide c'est la priorité numéro 1
00:02:27
c'est la rapidité et le principe c'est
00:02:29
que si vous voulez interroger vos
00:02:31
chiffres d'affaires en fonction d'un
00:02:33
trimestre Q1 Q2 Q3 Q4 en fonction d'un
00:02:37
produits des pommes des melons des
00:02:39
cerises ou du raisin et en fonction
00:02:41
d'une ville Dallas ou Denver il vous
00:02:44
suffira d'aller chercher directement le
00:02:46
ou les cubes concernés pour pouvoir
00:02:48
avoir vos données déjà précalculées au
00:02:51
niveau du cube donc forcément pour
00:02:53
concevoir une telle structure de données
00:02:55
bah il y a la notion de dimension hein
00:02:57
c'est nos villes le type de fruit
00:03:00
le trimestre et il y a les faits
00:03:03
c'est-à-dire les données qu'on veut
00:03:04
agréger par avance ici le chiffre
00:03:06
d'affair et donc Merise n'est pas du
00:03:08
tout adapté à ce genre de calcul à
00:03:10
l'avance parce que vous voulez une
00:03:12
compréhension rapide des axes et des
00:03:15
fait et une performance de vos requêtes
00:03:18
donc exit la troisème forme normale qui
00:03:21
va vous imposer d'avoir un minimum de
00:03:23
redondance et surtout ne pas répéter un
00:03:25
champ qui va dépendre d'un autre champ
00:03:27
là on va s'autoriser à à redonder à
00:03:31
avoir beaucoup beaucoup de doublons dans
00:03:34
nos tables tout simplement pour les
00:03:35
interroger rapidement et avoir
00:03:37
rapidement notre information on va
00:03:39
parler de modélisation dimensionnelle
00:03:41
puisque c'est fait en fonction de fait
00:03:42
et de dimension voilà vous avez
00:03:44
maintenant en tête l'architecture
00:03:47
pourquoi l'opérationnel et le
00:03:49
prescriptif ce n'est pas la même chose
00:03:51
maintenant nous allons pouvoir voir
00:03:53
comment concevoir nos modèles de façon à
00:03:55
ce qu'il puissent re interroger
00:03:57
rapidement en fonction de nos besoins
00:03:59
pour concevoir votre modèle dimensionnel
00:04:01
il va falloir vous intéresser d'abord
00:04:03
aux mesures que vous voulez analyser si
00:04:06
par exemple c'est au niveau commercial
00:04:08
bah ce sera sûrement les ventes ou les
00:04:10
contacts clients donc ça c'est des
00:04:13
événements qui peuvent être en millions
00:04:15
voir en milliard d'ù le 10^ 6 à 10^ 9
00:04:19
voilà si c'est en dessous bien sûr vous
00:04:21
pouvez directement travailler sur les
00:04:22
bases de données relationnel puisque
00:04:24
vous pourrez faire des agrégations très
00:04:26
facilement mais par contre il va falloir
00:04:28
structurer en dimensionnel si vous
00:04:30
atteignez des millions voire des
00:04:32
milliards d'informations et pour les
00:04:35
agrégés bah vous aurez envie de faire
00:04:38
des sommes des moyennes si c'est pour
00:04:39
des ventes c'est des montants si c'est
00:04:43
pour des contacts clients bah vous allez
00:04:45
vouloir voir peut-être selon les
00:04:48
vendeurs combien en moyenne ils ont de
00:04:51
contact journaliers ou
00:04:53
mensuel donc ici il va falloir
00:04:56
identifier ce que vous voulez mesurer un
00:04:58
chiffre d'affaires bénéfices des nombres
00:05:01
d'articles des nombres de contacts un
00:05:04
nombre de retour produits le nombre de
00:05:07
nouveaux clients acquis et cetera et
00:05:09
après il va falloir vous demander selon
00:05:11
quelle dimension vous voulez consulter
00:05:14
ces mesures et analyser ces mesure donc
00:05:16
les axes d'analyse donc ça peut être des
00:05:18
axes de temps de lieu la cible pour les
00:05:22
nouveaux clients ou pour les articles
00:05:25
les catégories ou les types d'articles
00:05:28
ou les couleurs
00:05:30
vous pouvez avoir de 8 à 15 dimensions
00:05:33
parfait he c'est en général ce qu'on a
00:05:35
si vous en avez en dessous c'est que
00:05:37
vous n'avez pas assez d'axe d'analyse
00:05:40
hein on a parlé de cube parce que
00:05:42
c'était plus facile mais rarement on se
00:05:44
limite à trois dimensions très souvent
00:05:47
on a beaucoup plus de dimensions et ces
00:05:50
axes d'analyse vont nous servir aussi de
00:05:53
filtrre et on va afficher tous les
00:05:56
libéet qu'on aura sur ces dimensions et
00:05:59
et ils nous permettront de qualifier un
00:06:01
peu mieux le fait et donc résultat on
00:06:03
aura les ventes par trimestre sur la
00:06:08
France et pour une cible par exemple de
00:06:11
Senior mais on pourra y adjoindre des
00:06:14
catégories de produits aussi donc avoir
00:06:16
encore une dimension pour filtrer tout
00:06:18
ça et ainsi de suite alors voilà à quoi
00:06:22
peut ressembler une modélisation
00:06:23
dimensionnelle pour des appels clients
00:06:27
on voit ici ce qui est très intéressant
00:06:30
que des valeurs numériques dans les
00:06:32
données en jaune ce sont les clés des
00:06:35
clés étrangères vers les dimensions j'ai
00:06:38
les appels clients concernant des
00:06:40
produits faits par des équipes selon des
00:06:44
périodes données et ici selon des types
00:06:48
de clients hein puisqueon va voir ici
00:06:51
une dimension principalement
00:06:53
géographique par ville et région alors
00:06:55
on dit c'est une topologie en étoile
00:06:58
tout simplement parce que le fit est au
00:07:00
centre de cette étoile et cette étoile
00:07:03
ces branches sont formées par les
00:07:04
dimensions rattachées au fit vous ne
00:07:07
verrez pas deux faits reliés entre eux
00:07:09
dans une modélisation dimensionnelle
00:07:11
vous avez en permanence des faits au
00:07:14
centre des dimension al on peut parler
00:07:17
de galaxie dans le sens où bien sûr ces
00:07:19
dimensions peuvent servir à d'autres
00:07:21
faits je peux vouloir utiliser cette
00:07:23
dimension temporelle et cette dimension
00:07:25
d'équipe pour avoir non seulement les
00:07:27
customer call mais pourquoi VO pas les
00:07:30
contrats clients et donc là ici j'aurai
00:07:32
les contrats qui seraient dé faits qui
00:07:33
seraient reliés aussi à ces deux
00:07:35
dimensions voire à ces quatre dimensions
00:07:37
et donc là on aurait une galaxie dans le
00:07:40
sens où on a plusieurs étoiles qui sont
00:07:42
relié entre elles alors il y a aussi une
00:07:44
notion de flocon qui permet de détailler
00:07:48
une dimension en sous-dimension si on
00:07:51
regarde bien ici selon les règles
00:07:53
habituel de découpage Merise on aurait
00:07:56
normalement une table région hein
00:07:58
puisque bien sûr plusieurs villes
00:08:01
peuvent appartenir à la même région et
00:08:03
donc dans un modèle en flocon on aurait
00:08:05
une dimension région qui serait relié à
00:08:08
la dimension ville et de la même façon
00:08:10
ici pour un jour donné on aurait une
00:08:13
dimension semaine et une dimension mois
00:08:15
et une dimension trimestre enfin une
00:08:18
dimension année qui serait chacune
00:08:20
reliée à cette dimensionl et donc le
00:08:23
fait qu'on ait une dimension qui puisse
00:08:25
être reliée à une ou plusieurs autres
00:08:27
dimensions donne une forme de flot
00:08:30
hein ou à partir du centre on a à chaque
00:08:32
fois une arborescence qui part et donc
00:08:35
cette forme de flocon qui apparaît au
00:08:36
fur à mesure de la construction du
00:08:38
modèle alors ces modèles en flocon sont
00:08:41
un peu plus complexes ils sont moins
00:08:43
lisibles déjà sur le modèle et en plus
00:08:46
ils font des requêtes plus completes
00:08:48
puisqu'il va falloir faire une requête
00:08:50
avec une jointure entre le fait et la
00:08:52
dimension mais entre le fait et les
00:08:54
dimensions donc desjointure sur toutes
00:08:56
les tables on peut avoir selon les
00:08:59
moteurs de base de données
00:09:01
dimensionnelle parfois une baisse de
00:09:04
performance nous avons maintenant une
00:09:05
vision d'ensemble de la modélisation
00:09:08
dimensionnelle nous allons détailler
00:09:10
comment concevoir chaque partie fait et
00:09:13
dimension pour concevoir un fait il faut
00:09:15
partir du processus métier que l'on veut
00:09:17
étudier dégager les indicateurs de
00:09:20
performance clé les KPI si par exemple
00:09:23
c'est pour la vente vous voudrez
00:09:25
peut-être travailler au niveau de la
00:09:27
commande pour cumuler les chiffres
00:09:29
d'affaires selon différentes dimensions
00:09:31
type de client succursal mois ou
00:09:34
trimestre mais vous pouvez aussi vouloir
00:09:37
analyser selon les types de produits au
00:09:39
quel cas une commande regroupant
00:09:41
plusieurs types de produits il faudra
00:09:42
descendre en granularité et avoir une
00:09:45
granularité plus fine sur la ligne de
00:09:47
commande donc cette granularité doit
00:09:50
être établie avec soin en fonction de ce
00:09:52
que vous voulez analyser dans ces deux
00:09:55
cas on a affaire à un fait de type
00:09:57
transactionnel ce qui est le plus
00:09:58
fréquent un fait correspond à une
00:10:01
transaction au niveau opérationnel on
00:10:03
peut aussi avoir des faits qui sont des
00:10:05
faits de bilan périodique c'est-à-dire
00:10:07
que un fait correspond à une période de
00:10:09
temps par exemple l'heure et là vous
00:10:12
allez avoir l'agrégation de toutes les
00:10:14
commandes effectuées en une heure sur
00:10:16
par exemple une succursale en fonction
00:10:18
des vendeurs éventuellement même en
00:10:20
ayant des dimensions intégrant des
00:10:23
intervales de montant et puis vous
00:10:25
pouvez aussi avoir des faits de bilan
00:10:27
cumulés c'est-à-dire des faits qui vont
00:10:30
vous permettre d'analyser les étapes
00:10:31
d'un processus prenons un devis si votre
00:10:34
devis passe par l'État brouillon
00:10:36
proposer au client accepter ou refuser
00:10:40
bah ces quatre étapes vous allez pouvoir
00:10:43
analyser si vous avez un fait par étape
00:10:46
pour le devis et ainsi identifier si le
00:10:48
processus est efficace ou dans le cas
00:10:51
contraire l'optimiser en fonction des
00:10:53
résultats quoi qu'il en soit un fa sera
00:10:55
toujours composé de clés et de valeurs
00:10:59
les clés étrangères vers les dimensions
00:11:01
et à elle toutes elle constitue sous une
00:11:03
forme composée la clé primaire c'est ce
00:11:05
que l'on a dans l'exemple qu'on avait
00:11:07
pris tout à l'heure où les quatre clés
00:11:09
étrangères des dimensions sont regroupé
00:11:11
pour faire la clé
00:11:13
primaire ce qui vous interdit d'avoir
00:11:16
une valeur nulle sur une des clés
00:11:18
étrangères dans le cas où par exemple
00:11:20
vous auriez fait un appel à un client à
00:11:23
un instant T par une équipe mais ne
00:11:26
concernant aucun produit bah vous serez
00:11:28
obligé d'avoir une entrée aucun produit
00:11:31
ou non défini au niveau de votre
00:11:34
dimension produit pour éviter la valeur
00:11:37
nul et avoir une valeur de clé valide
00:11:40
vous avez aussi des valeurs dans les
00:11:42
faits ces valeurs vont vous permettre de
00:11:45
faire soit des cumules avec des valeurs
00:11:47
additives donc par exemple des cumules
00:11:49
de durée des cumules de quantité pour
00:11:51
savoir combien de produits vous avez
00:11:53
vendu en tout sur toutes les commandes
00:11:55
donc vous pourrez cumuler toutes les
00:11:56
quantités ou cumuler tous les montants
00:11:58
des commandes ou tous les montants des
00:12:00
frais de port sur ces commandes donc ça
00:12:03
c'est très fréquent d'avoir des valeurs
00:12:05
additives vous pouvez aussi avoir des
00:12:08
valeurs non additives des valeurs qui ne
00:12:11
riment à rien si on les additionne si je
00:12:13
prends par exemple les mesures de
00:12:15
température effectué de façon périodique
00:12:18
et donc enregistré sur mes faits et ben
00:12:20
il ne sera pas du tout intéressant d'en
00:12:23
faire le cumul quel que soit l'axe que
00:12:25
je
00:12:26
prendraisin je n'additionne pas les
00:12:29
température au même titre que je vais
00:12:30
pas additionner les prix des produits
00:12:32
par contre ça sera intéressant de faire
00:12:34
des moyennes de température surtous mes
00:12:36
faits donc bien sûr on aura des mines
00:12:38
des max des moyennes mais on ne pourra
00:12:40
pas les additionner et puis on a les
00:12:42
valeurs semi-additives qui ne peuvent
00:12:43
être additionné de façon pertinente que
00:12:46
sur certains axes si je prends les
00:12:48
stocks un instant T je voudrais
00:12:50
peut-être connaître le cumul des stocks
00:12:54
sur une gamme de produits mais par
00:12:56
contre sur un même produit sur la durée
00:13:00
donc en prenant l'axe temporel ça n'a
00:13:02
pas de sens de cumuler les stocks de ce
00:13:05
produit à l'instant T à l'instant t + 1
00:13:08
on en dégage donc un ensemble de bonnes
00:13:10
pratiques d'abord que un fait ne
00:13:13
contient que des clés étrangères et des
00:13:14
champs numérique il est d'usage de faire
00:13:18
un fait transactionnel pour avoir le
00:13:20
détail et si vous avez un très grand
00:13:23
nombre de transactions à la journée il
00:13:26
peut être intéressant de faire un fait
00:13:28
de bilan
00:13:29
pour avoir des résultats très rapides
00:13:31
lors de
00:13:32
l'interrogation sur les workflow long il
00:13:35
sera intéressant de faire un fait de
00:13:37
bilan cumulé sinon vous pourrez vous
00:13:39
contenter d'un fait de bilan périodique
00:13:42
dans le cas où vous n'auriez aucune
00:13:44
valeur dans votre fait et ben il est
00:13:45
d'usage de mettre une valeur qui est à 1
00:13:49
qui permettra de dénombrer lesffet très
00:13:52
facilement en faisant une somme de ce
00:13:54
champ Valeur hein imaginez que par
00:13:56
exemple vous vouliez comptabiliser le
00:13:59
nombre d'appels à des clients et que
00:14:01
vous n'aviez aucune information autre
00:14:03
que le fait que vous avez appelé un
00:14:05
client dans votre fait appel client
00:14:08
cette valeur 1 vous permettra très
00:14:10
facilement de dénombrer selon les
00:14:12
dimensions qui vous intéressent le
00:14:13
nombre d'appels qui ont été fait en
00:14:16
faisant un somme de ce champ à un vous
00:14:18
pouvez aussi quand vous avez plusieurs
00:14:21
sources pour une valeur numérique mettre
00:14:23
toutes les sources dans le fait de façon
00:14:26
à pouvoir cumuler selon la source qui
00:14:28
vous intéresse et voir même comparer les
00:14:30
sources si jamais vous avez des
00:14:32
incohérences ou des divergences entre
00:14:34
les sources n'hésitez pas également à
00:14:37
mettre plusieurs granularités au sein
00:14:40
d'un même fait si je prends pour tout à
00:14:43
l'heure mon fait de ligne par produit
00:14:46
commandé et ben je peux mettre avec ce
00:14:49
fait de ligne par produit commandé le
00:14:52
total de la commande ça sera beaucoup
00:14:55
plus pratique pour faire des moyennes ou
00:14:57
pour faire des pourcentages dans donc
00:14:59
n'hésitez pas à redonder les
00:15:01
informations voilà pareil pour les
00:15:04
niveaux supérieurs total et port qui
00:15:07
pourrait être mis pour la commande
00:15:09
concernant les dimensions n'hésitez pas
00:15:11
à mettre un maximum d'informations
00:15:13
textuelle donc autant on a des valeurs
00:15:15
numériques sur les faits autant on a des
00:15:17
valeurs texte sur les dimensions on veut
00:15:21
savoir pour les dimensions c'est souvent
00:15:23
le qui qui a fait telle action qui a
00:15:26
passé la commande qui a contribué à
00:15:27
faire passer la commande qui a commandé
00:15:30
le quoi qu'est-ce qui a été commandé
00:15:32
quelle catégorie de produit ou quel type
00:15:35
de paiement a été choisi lors du
00:15:38
règlement le où le quand on sont assez
00:15:41
évident hein des dimensions de lieu ou
00:15:44
des dimensions
00:15:45
temporel mais aussi le pourquoi et le
00:15:48
comment vont vous permettre d'analyser
00:15:50
les causes les conséquences des
00:15:52
transaction des actions que vous étudiez
00:15:55
et ça sur les différentes échelles si on
00:15:58
reprend l' encore l'exemple de tout à
00:16:00
l'heure on avait ici différentes
00:16:02
échelles au sein de la même dimension on
00:16:04
avait le jour le jour de la semaine la
00:16:08
semaine elle-même le mois le trimestre
00:16:11
et l'année même chose ici sur un
00:16:14
personnel le lieu le service et le grade
00:16:18
de la personne qui avait appelé le
00:16:20
client et ainsi de
00:16:21
suite rappelez-vous qu'il y a donc de 8
00:16:24
à 15 dimensions par fait si vous en avez
00:16:27
trop peu c'est un indice que vous allez
00:16:30
pas permettre à l'utilisateur d'avoir
00:16:32
une bonne expérience utilisateur la
00:16:34
qualité et le détail de vos dimensions
00:16:37
vont augmenter l'expérience utilisateur
00:16:40
décisionnel bien sûr un bi Business
00:16:43
Intelligence c'est l'autre terme du
00:16:44
décisionnel puisque c'est souvent les
00:16:46
libéés des dimensions qu'il voi
00:16:48
lorsqu'il manipule votre modèle de quoi
00:16:51
est composé une dimension clé primaire
00:16:54
auto-incrémentée suffira largement un
00:16:56
maximum de label comme je l'ai dit tout
00:16:58
à l'heure donc des champs de type texte
00:17:01
et si vous aviez à associer une
00:17:04
dimension plusieurs fois un fait ce qui
00:17:06
arrive de temps en temps par exemple
00:17:08
lieu de départ lieu d'arrivée hein et
00:17:11
ben à ce moment-là n'hésitez pas à faire
00:17:13
une vue pour faciliter la lecture de
00:17:16
votre modèle dimensionnel et donc vous
00:17:19
auriez une vue arrivée qui permettrait
00:17:21
de ne pas confondre le départ et
00:17:23
l'arrivée lors de la lecture des clés
00:17:25
étrangères et la création de vos requêes
00:17:27
sur les dimensions tempores ce qu'on a
00:17:29
vu dans l'exemple il est important de
00:17:31
distinguer les dates et les heures sur
00:17:34
les dates il faudra une clé qui sera
00:17:37
indépendante du jour vraiment l'auto
00:17:39
incrémenté convient très bien en
00:17:41
dimension temporelle et n'hésitez pas à
00:17:43
rajouter des informations qui seront
00:17:45
pertinent dans l'analyse le nombre de
00:17:47
jours du mois en question le jour est-il
00:17:51
férié ou pas est-ce les vacances quelle
00:17:54
est la date fiscale éventuellement
00:17:56
correspondant à ce jour-là et ce et tout
00:17:59
ce qui peut être utile en fonction de
00:18:00
votre activité de la même façon et sur
00:18:03
une dimension distincte vous allez
00:18:05
définir l'heure et si jamais vous devez
00:18:07
manipuler différents fus horaires faites
00:18:10
une dimension par fuseau ou à défaut au
00:18:13
moins deux dimensions une UTC et une
00:18:16
locale voilà vous avez plein d'astuces
00:18:19
pour faire de bonnes modélisation
00:18:20
dimensionnelle dans l'atelier ça ne sera
00:18:23
peut-être pas nécessaire d'aller aussi
00:18:25
loin mais au moins vous allez pouvoir
00:18:28
vous
00:18:29
une première modélisation vous savez
00:18:31
maintenant en tout cas comment orienter
00:18:33
vos données pour avoir un pilotage de
00:18:36
l'activité qui n'est pas opérationnelle
00:18:39
qui est vraiment analytique
00:18:41
l'architecture va consister à avoir un
00:18:44
pipeline dans sa version classique avec
00:18:46
un ETL en amont qui alimente un entrepôt
00:18:49
de données et des magasins de données
00:18:51
qui vont préparer des cubes pour une
00:18:54
interrogation rapide et efficace selon
00:18:57
des faits et des dimensions