top of page

Mise en place d'une plateforme de données

Conception d'une plateforme de données pour l'analyse de vente au détail.

Contexte


L'objectif de ce projet est de concevoir une plateforme de données pour l'analyse des données de vente au détail.


J'utilise MySQL comme base de données OLTP et MongoDB comme base de données NoSQL, pour concevoir et mettre en œuvre un entrepôt de données et générer des rapports à partir des données, concevoir un tableau de bord de reporting qui reflète les indicateurs clés de l'entreprise, extraire les données des bases de données OLTP et NoSQL, transformer et charger dans l'entrepôt de données, puis créer un pipeline ETL, et enfin, créer une connexion Spark à l'entrepôt de données, puis déployer un modèle d'apprentissage automatique.


Conception d'une base de données OLTP


La première étape consiste à concevoir la base de données OLTP pour un site Web de commerce électronique, à remplir la base de données OLTP avec les données fournies et à automatiser l'exportation des données incrémentielles quotidiennes vers l'entrepôt de données.


La base de données OLTP est généralement utilisée pour gérer les transactions commerciales quotidiennes d'une organisation comme une banque ou une chaîne de supermarchés. Les bases de données OLTP peuvent être lourdes en écriture ou avoir une charge de lecture/écriture équilibrée.


Il devrait gérer un grand nombre de transactions par seconde. Chaque transaction implique généralement l'accès (lecture/écriture) à une petite partie de la base de données, en d'autres termes la charge utile par transaction est faible.


Le temps nécessaire à l’exécution d’une transaction, généralement appelé latence, doit être très réduit.


Le schéma d'une base de données OLTP est hautement normalisé afin d'obtenir une latence très faible. Pour améliorer encore la latence, une base de données OLTP stocke uniquement les données récentes comme les données de la semaine dernière. Ils fonctionnent généralement sur un stockage très rapide comme le SSD.


Conception d'une base de données NoSQL - MongoDB


Une base de données NoSQL est mise en place pour stocker les données du catalogue du site Web électronique, charger les données du catalogue E-Commerce dans la base de données NoSQL et interroger les données du catalogue E-Commerce dans la base de données NoSQL.


Conception et construction d'un entrepôt de données - PostgreSQL


J'ai conçu le schéma d'un entrepôt de données basé sur le schéma des bases de données OLTP et NoSQL. J'ai ensuite créé le schéma et chargé les données dans les tables de faits et de dimensions, automatisé l'insertion quotidienne des données incrémentielles dans l'entrepôt de données et créé des cubes et des rollups pour faciliter la création de rapports.


La société vend uniquement des articles téléchargés tels que des livres électroniques, des films, des chansons, etc. Elle a une présence internationale et des clients du monde entier et souhaite créer un entrepôt de données afin de pouvoir créer des rapports tels que


  • ventes totales par an et par pays

  • ventes totales par mois par catégorie

  • ventes totales par trimestre par pays

  • ventes totales par catégorie et par pays


J'utilise l'outil de conception ERD de pgAdmin de PostgreSQL.



J'ai ensuite généré le script SQL à partir de l'outil de conception ERD pour obtenir le schéma de l'entrepôt de données.


Après avoir chargé les données dans les différentes tables, j'ai écrit des requêtes d'agrégation et créé des MQT pour faciliter la création de rapports.


  • Le regroupement définit la requête en utilisant les colonnes pays, catégorie, ventes totales, pour obtenir les ventes totales par pays et par catégorie.


  • Requête cumulative utilisant les colonnes année, pays et ventes totales, pour obtenir les ventes totales par an et par pays


  • cube query utilisant les colonnes année, pays et ventes moyennes, pour obtenir les ventes moyennes par an et par pays

SELECT year, country, avg(amount) AS averagesales
FROM factsales
LEFT JOIN dimdate
ON factsales.dateid = dimdate.dateid
LEFT JOIN dimcountry
ON factsales.countryid = dimcountry.countryid
GROUP BY CUBE(year,category)
ORDER BY year, country
  • MQT nommé total_sales_per_country qui contient les colonnes country et total_sales.


CREATE TABLE total_sales_per_country(country, totalsales) AS
		(SELECT country, sum(amount)
FROM factsales
LEFT JOIN dimcountry
ON factsales.countryid = dimcountry.countryid
GROUP BY country)
					DATA INITIALLY DEFERRED
					REFRESH DEFERRED
					MAINTAINED BY SYSTEM;

Conception d'un tableau de bord Business Intelligence - IBM Cognos Analytics


Une source de données Cognos est ensuite créée, pointant vers une table d'entrepôt de données, afin de créer un graphique à barres des ventes trimestrielles de téléphones portables, créer un diagramme circulaire des ventes de produits électroniques par catégorie et créer un graphique linéaire des ventes totales par mois pour une année donnée.






Conception d'un ETL - MySQL/PostgreSQL


En tant qu'ingénieur de données, il est important maintenir les données synchronisées entre différentes bases de données/entrepôts de données dans le cadre de votre routine quotidienne. Une tâche régulièrement effectuée est la synchronisation de l’entrepôt de données de préparation et de l’entrepôt de données de production. L'automatisation de cette synchronisation permet de gagner beaucoup de temps et standardiser ce processus.


Plusieurs scripts Python sont écrits pour effectuer un chargement de données incrémentiel à partir du serveur MySQL et PostgreSQL qui agit comme un entrepôt intermédiaire pour PostgreSQL qui est un entrepôt de données de production. Ces scripts sont programmés pour synchroniser les données entre l'entrepôt de données de préparation et de production.


Le script Python doit :

  • se connecter à l'entrepôt de données PostgreSQL et identifiez la dernière ligne.

  • se connecter à l'entrepôt de données intermédiaire MySQL et recherchez toutes les lignes postérieures à la dernière ligne de l'entrepôt de données.

  • s'insérer les nouvelles données de l'entrepôt de données de préparation MySQL dans l'entrepôt de données de production PostgreSQL.


Conception d'une architecture Big Data - Apache Spark


Enfin, une connexion Spark à l'entrepôt de données est créée puis un modèle de machine learning sur SparkML est déployé afin réaliser des projections de ventes.

  • bluesky_site
  • LinkedIn-Symbole_2
  • Astrolabe Cae_2

Legal Notice

Cookie Management

© 2023 by Pascaline Grondein Data Consultant. Created with Wix.com

bottom of page