Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Modélisation décisionnelle
  3. Charger les données
Extrait - Modélisation décisionnelle Concevoir la base de données pour les traitements OLAP
Extraits du livre
Modélisation décisionnelle Concevoir la base de données pour les traitements OLAP Revenir à la page d'achat du livre

Charger les données

Le choix de la solution d’intégration

1. SQL versus ETL

Utiliser une solution d’intégration spécifique de type ETL (pour Extract-Transform-Load) plutôt qu’utiliser des requêtes SQL est un véritable point d’attention car, bien souvent, le coût d’une licence est élevé et nécessite des profils expérimentés sur ce genre d’outil : il faut donc justifier cet investissement.

L’ETL présente deux avantages par rapport à une solution SQL :

  • Performances techniques : meilleures capacités de traitement pour de gros volumes par rapport à un moteur de base de données.

  • Modélisation explicite : en utilisant des étapes et des liens, le traitement de la donnée est explicite et facilite donc sa compréhension et sa maintenance (notamment en cas de passage de compétences).

2. Choix techniques

a. Performances

Si les moteurs des systèmes de bases de données sont assurément performants car ils ont été pensés et optimisés pour répondre rapidement à des requêtes, ils présentent tout de même des limites dès lors que l’on manipule plusieurs tables très volumineuses, d’autant plus lorsqu’on croise ces données les unes avec les autres.

Or, les sources d’un système décisionnel...

Chargement des éléments du modèle

1. Les différents types de chargements utilisables dans un SID

a. Annule et Remplace

Le chargement dit en "Annule et Remplace" consiste à supprimer les données sur une partie des données (identifiée par une plage de valeurs sur un des axes) appelée "partition". Il s’agit généralement de la dimension temps. Dans tous les cas, l’annulation ne doit pas se faire sur l’identification d’une ou plusieurs transactions en particulier (en utilisant leurs clés). La partition vidée, on charge les nouvelles données exactement sur la même plage de valeur.

Même si on utilise des partitions sur la dimension [TEMPS], il n’est pas forcément nécessaire que la partition annulée et remplacée corresponde aux données les plus récentes.

Concrètement, cela revient donc à supprimer un mois dans la base de données, et recharger toutes les données sur ce mois.

images/7-2.png

L’Annule et Remplace ne permet donc pas de supprimer et recharger seulement une partie des données sur la partition. Ce mode de fonctionnement implique donc que la source de données fournisse intégralement les données sur cette partition ! Par exemple, si l’on dispose de fichiers plats comme source de données et que ceux-ci ne comportent qu’une partie des données sur la partition retenue, ces fichiers ne peuvent être chargés avec ce mode d’alimentation. Ils ne sont donc pas compatible avec une interface en mode "DELTA" qui envoie uniquement les modifications et non pas un bloc de données, quel que soit l’état de modification des lignes de ce bloc.

b. Insertion ou Mise à jour (alias UPSERT)

Le chargement en "Insertion ou Mise à jour" - que l’on retrouve aussi sous le nom anglais de "Merge" ou "Update or Insert" voire même sa contraction "Upsert" - consiste à mettre à jour un enregistrement si la clé existe déjà, sinon l’insérer comme nouvel élément.

Dans ce mode de chargement, il n’y a donc jamais de suppression de ligne, mais uniquement des mises à jour et des ajouts.

Compte tenu de sa fonctionnalité de mise...

Ordonnancement des éléments

1. Dépendances des objets

Le modèle de données crée des dépendances entre les éléments :

  • Intégrité référentielle des objets métier : les faits doivent pouvoir être ventilés sur les dimensions, ces dernières doivent donc être chargées en priorité.

  • Composition des dimensions : les dimensions sont composées de différents référentiels. Ceux-ci doivent tous être chargés avant la construction de la dimension. 

  • Intégrité interréférentiels : dans un modèle en étoile, les référentiels sont dépendants des référentiels représentant les niveaux d’agrégation supérieurs, ces derniers doivent être chargés en priorité.

Dans un modèle en étoile, on charge donc tout ce qui a trait aux dimensions, puis à la table de faits :

images/7-12.png

Ainsi dans un modèle en flocon, les référentiels représentant les niveaux les plus agrégés doivent être chargés en premier, puis redescendre petit à petit dans la granularité. À la fin, les transactions peuvent être chargées.

images/7-11.png

Le schéma ci-dessus représente un modèle possédant une seule table de faits. Dans...

En dehors des phases d’exploitation

1. Chargement initial

En suivant les modalités précédentes, le chargement initial ne demande pas d’adaptation particulière. Devront tout de même être pris en compte, potentiellement :

  • Un nombre plus important de fichiers en entrée : prévoir une boucle pour sélectionner l’ensemble, et pour chaque flux, bien les charger dans l’ordre chronologique croissant.

  • Un chargement plus long compte tenu de la plus grande volumétrie à charger : prévoir de désactiver les sécurités, le cas échéant, limitant l’exécution du chargement à une certaine durée.

Dans le cas d’un système historisé où l’historisation des modifications est totalement prise en charge par le SID s’appuyant sur des données opérationnelles historiques mais non historisées, ces données seront donc historisées uniquement à partir du démarrage du système décisionnel. Pour la gestion des données antérieures au lancement, il est possible au choix de :

  • Récupérer les données dans les sauvegardes du système opérationnel source.

  • Positionner toutes les données antérieures sur des valeurs par défaut.

  • Déduire les valeurs de règles métier ou techniques....