{"id":1041,"date":"2024-06-18T15:34:49","date_gmt":"2024-06-18T15:34:49","guid":{"rendered":"https:\/\/javierladino.com\/fr\/?post_type=rara-portfolio&#038;p=1041"},"modified":"2024-06-18T21:48:14","modified_gmt":"2024-06-18T21:48:14","slug":"transformer-les-donnees-en-connaissances-analyse-dun-restaurant-avec-sql-et-power-bi","status":"publish","type":"rara-portfolio","link":"https:\/\/javierladino.com\/fr\/portfolio\/transformer-les-donnees-en-connaissances-analyse-dun-restaurant-avec-sql-et-power-bi\/","title":{"rendered":"Transformer les donn\u00e9es en connaissances : analyse d&rsquo;un restaurant avec SQL et Power BI"},"content":{"rendered":"\n<p>R\u00e9cemment, j&rsquo;ai particip\u00e9 \u00e0 un entretien d&#8217;embauche pour rejoindre l&rsquo;\u00e9quipe Dataviz &#8211; BI d&rsquo;une grande entreprise. Au cours de la conversation, on m&rsquo;a pr\u00e9sent\u00e9 le cas d&rsquo;utilisation des donn\u00e9es op\u00e9rationnelles d&rsquo;un restaurant, comment les structurer, les analyser et les visualiser. Je pense que ma solution \u00e9tait trop pratique et pas assez technique, heureusement mon interlocuteur m&rsquo;a guid\u00e9 pour que l&rsquo;explication s&rsquo;oriente vers une solution qui contribuerait \u00e0 l&rsquo;activit\u00e9 de l&rsquo;entreprise. J&rsquo;ai donc d\u00e9cid\u00e9 de cr\u00e9er un projet qui implique la cr\u00e9ation d&rsquo;un <strong>Data Warehouse<\/strong> en utilisant le mod\u00e8le de sch\u00e9ma en \u00e9toile et l&rsquo;analyse des donn\u00e9es en utilisant <strong>SQL<\/strong> et <strong>Power BI<\/strong>. Je vous raconte ici les \u00e9tapes que j&rsquo;ai suivies pour mener \u00e0 bien ce projet, de la conception du sch\u00e9ma en \u00e9toile \u00e0 la cr\u00e9ation d&rsquo;un tableau de bord interactif dans Power BI.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03.jpeg\" alt=\"Dashboard restaurant\" class=\"wp-image-1202\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Introduction<\/strong><\/h3>\n\n\n\n<p>Le projet vise \u00e0 concevoir un entrep\u00f4t de donn\u00e9es pour un restaurant en utilisant <strong>le sch\u00e9ma en \u00e9toile de la mod\u00e9lisation dimensionnelle<\/strong>. Ce sch\u00e9ma facilitera la manipulation et l&rsquo;analyse des donn\u00e9es op\u00e9rationnelles du restaurant, permettant la g\u00e9n\u00e9ration de rapports et l&rsquo;analyse des performances \u00e0 l&rsquo;aide de requ\u00eates <strong>SQL<\/strong> dans un premier temps. Nous int\u00e9grerons ensuite les donn\u00e9es dans <strong>Power BI<\/strong> afin de cr\u00e9er un tableau de bord pour l&rsquo;analyse et la distribution \u00e0 d&rsquo;autres parties prenantes.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Objectifs du projet<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Concevoir un sch\u00e9ma en \u00e9toile pour l&rsquo;entrep\u00f4t de donn\u00e9es du restaurant.<\/li>\n\n\n\n<li>Impl\u00e9menter les tables n\u00e9cessaires dans une base de donn\u00e9es SQL.<\/li>\n\n\n\n<li>Remplir les tables avec des donn\u00e9es simul\u00e9es.<\/li>\n\n\n\n<li>Effectuer des requ\u00eates SQL pour analyser divers aspects de l&rsquo;entreprise.<\/li>\n\n\n\n<li>Exporter la base de donn\u00e9es au format .csv pour l&rsquo;importer dans Power BI.<\/li>\n\n\n\n<li>Cr\u00e9er un tableau de bord dans Power BI pour l&rsquo;analyse.<\/li>\n\n\n\n<li>Conclusions.<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Conception d&rsquo;un sch\u00e9ma en \u00e9toile<\/mark><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/Untitled-drawing-3-2.png\" alt=\"\" class=\"wp-image-1203\"\/><\/figure>\n\n\n\n<p>Le <strong>sch\u00e9ma en \u00e9toile<\/strong> est une technique de mod\u00e9lisation dimensionnelle utilis\u00e9e dans la construction d&rsquo;entrep\u00f4ts de donn\u00e9es. C&rsquo;est l&rsquo;une des m\u00e9thodes les plus populaires en raison de sa simplicit\u00e9 et de son efficacit\u00e9 dans l&rsquo;organisation des donn\u00e9es pour l&rsquo;analyse et les requ\u00eates.<\/p>\n\n\n\n<p>La premi\u00e8re \u00e9tape du projet a consist\u00e9 \u00e0 concevoir un sch\u00e9ma en \u00e9toile pour l&rsquo;entrep\u00f4t de donn\u00e9es du restaurant. Un sch\u00e9ma en \u00e9toile se caract\u00e9rise par la pr\u00e9sence d&rsquo;une table centrale appel\u00e9e \u00ab\u00a0<strong>table des faits<\/strong>\u00ab\u00a0, qui contient les donn\u00e9es transactionnelles, et de plusieurs \u00ab\u00a0<strong>tables de dimensions<\/strong>\u00ab\u00a0, qui contiennent les attributs descriptifs connexes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/relations_sql_01.png\" alt=\"\" class=\"wp-image-1204\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Pour ce projet, j&rsquo;ai con\u00e7u le syst\u00e8me suivant :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Table des faits : Sales_Fact<\/strong>\n<ul class=\"wp-block-list\">\n<li>Sales_ID (cl\u00e9 primaire)<\/li>\n\n\n\n<li>Customer_ID (cl\u00e9 \u00e9trang\u00e8re)<\/li>\n\n\n\n<li>Product_ID (cl\u00e9 \u00e9trang\u00e8re)<\/li>\n\n\n\n<li>Location_ID (cl\u00e9 \u00e9trang\u00e8re)<\/li>\n\n\n\n<li>Date_ID (cl\u00e9 \u00e9trang\u00e8re)<\/li>\n\n\n\n<li>Quantity_Sold<\/li>\n\n\n\n<li>Total_Amount<\/li>\n\n\n\n<li>Cost<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Tableaux de dimensions :<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>Customer_Dim<\/strong>\n<ul class=\"wp-block-list\">\n<li>Customer_ID (cl\u00e9 primaire)<\/li>\n\n\n\n<li>Customer_Name<\/li>\n\n\n\n<li>Customer_Email<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Product_Dim<\/strong>\n<ul class=\"wp-block-list\">\n<li>Product_ID (cl\u00e9 primaire)<\/li>\n\n\n\n<li>Product_Name<\/li>\n\n\n\n<li>Product_Category<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Location_Dim<\/strong>\n<ul class=\"wp-block-list\">\n<li>Location_ID (cl\u00e9 primaire)<\/li>\n\n\n\n<li>Location_Name<\/li>\n\n\n\n<li>Location_City<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Date_Dim<\/strong> (cl\u00e9 primaire)\n<ul class=\"wp-block-list\">\n<li>Date_ID (cl\u00e9 primaire)<\/li>\n\n\n\n<li>Date<\/li>\n\n\n\n<li>Day<\/li>\n\n\n\n<li>Month<\/li>\n\n\n\n<li>Year<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Avantages du syst\u00e8me de l&rsquo;\u00e9toile<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Simplicit\u00e9<\/strong> : la structure est facile \u00e0 comprendre et \u00e0 parcourir, tant pour les d\u00e9veloppeurs que pour les utilisateurs finaux.<\/li>\n\n\n\n<li><strong>Performance des requ\u00eates <\/strong>: les requ\u00eates dans un sch\u00e9ma en \u00e9toile sont souvent rapides car les relations entre la table des faits et les tables des dimensions sont simplifi\u00e9es.<\/li>\n\n\n\n<li><strong>\u00c9volutivit\u00e9<\/strong> : il est facile de se d\u00e9velopper en ajoutant des dimensions ou des faits suppl\u00e9mentaires sans r\u00e9organiser l&rsquo;ensemble de la structure.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Inconv\u00e9nients du syst\u00e8me Star<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Redondance des donn\u00e9es<\/strong> : Les tables dimensionnelles peuvent contenir des donn\u00e9es redondantes, ce qui peut augmenter l&rsquo;espace de stockage.<\/li>\n\n\n\n<li><strong>Maintenance<\/strong> : la redondance et la duplication des donn\u00e9es peuvent compliquer la maintenance.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Mise en \u0153uvre des tables SQL<\/mark><\/h2>\n\n\n\n<p>Apr\u00e8s avoir con\u00e7u le sch\u00e9ma en \u00e9toile, j&rsquo;ai proc\u00e9d\u00e9 \u00e0 l&rsquo;impl\u00e9mentation des tables dans une base de donn\u00e9es SQL. J&rsquo;ai utilis\u00e9 <strong>PostgreSQL<\/strong> \u00e0 cette fin. Voici le code <strong>SQL<\/strong> pour cr\u00e9er les tables :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>-- Cr\u00e9er une table de faits\n<\/strong>CREATE TABLE Sales_Fact (\n    Sales_ID SERIAL PRIMARY KEY,\n    Customer_ID INT,\n    Product_ID INT,\n    Location_ID INT,\n    Date_ID INT,\n    Quantity_Sold INT,\n    Total_Amount DECIMAL(10, 2),\n    Cost DECIMAL(10, 2)\n);\n\n<strong>-- Cr\u00e9er des tableaux de dimensions\n<\/strong>CREATE TABLE Customer_Dim (\n    Customer_ID SERIAL PRIMARY KEY,\n    Customer_Name VARCHAR(100),\n    Customer_Email VARCHAR(100)\n);\n\nCREATE TABLE Product_Dim (\n    Product_ID SERIAL PRIMARY KEY,\n    Product_Name VARCHAR(100),\n    Product_Category VARCHAR(100)\n);\n\nCREATE TABLE Location_Dim (\n    Location_ID SERIAL PRIMARY KEY,\n    Location_Name VARCHAR(100),\n    Location_City VARCHAR(100)\n);\n\nCREATE TABLE Date_Dim (\n    Date_ID SERIAL PRIMARY KEY,\n    Date DATE,\n    Day INT,\n    Month INT,\n    Year INT\n);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Remplir les tableaux avec des donn\u00e9es simul\u00e9es<\/mark><\/h2>\n\n\n\n<p>Pour simuler des donn\u00e9es dans les tables, j&rsquo;ai utilis\u00e9 la <strong>fonction RANDOM() de PostgreSQL<\/strong>. Vous trouverez ci-dessous un exemple de la mani\u00e8re dont j&rsquo;ai ins\u00e9r\u00e9 les donn\u00e9es simul\u00e9es dans la table des faits :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>-- Ins\u00e9rer des donn\u00e9es dans Date_Dim\n<\/strong>INSERT INTO Date_Dim (Date_ID, Date, Day, Month, Quarter, Year) VALUES\n(1, '2023-01-01', 1, 1, 1, 2023),\n(2, '2023-01-02', 2, 1, 1, 2023);\n\n<strong>-- <strong>Ins\u00e9rer des donn\u00e9es dans<\/strong> Product_Dim\n<\/strong>INSERT INTO Product_Dim (Product_ID, Product_Name, Category, Price) VALUES\n(1, 'Burger', 'Food', 5.99),\n(2, 'Fries', 'Food', 2.99);\n\n<strong>-- <strong>Ins\u00e9rer des donn\u00e9es dans<\/strong> Customer_Dim\n<\/strong>INSERT INTO Customer_Dim (Customer_ID, Customer_Name, Gender, Age, City, Country) VALUES\n(1, 'John Doe', 'M', 30, 'New York', 'USA'),\n(2, 'Jane Smith', 'F', 25, 'Los Angeles', 'USA');\n\n<strong>-- <strong>Ins\u00e9rer des donn\u00e9es dans<\/strong> Location_Dim\n<\/strong>INSERT INTO Location_Dim (Location_ID, Store_Name, City, Region, Country) VALUES\n(1, 'Main Street', 'New York', 'Northeast', 'USA'),\n(2, 'Second Avenue', 'Los Angeles', 'West', 'USA');\n\n<strong>-- <strong>Ins\u00e9rer des donn\u00e9es dans<\/strong> Sales_Fact\n<\/strong>INSERT INTO Sales_Fact (Sale_ID, Date_ID, Product_ID, Customer_ID, Location_ID, Quantity_Sold, Total_Amount) VALUES\n(1, 1, 1, 1, 1, 2, 11.98),\n(2, 2, 2, 2, 2, 3, 8.97);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Effectuer des requ\u00eates SQL pour l&rsquo;analyse<\/mark><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/query_sql_01.png\" alt=\"\" class=\"wp-image-1205\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Une fois les tableaux remplis, j&rsquo;ai ex\u00e9cut\u00e9 plusieurs requ\u00eates SQL pour analyser diff\u00e9rents aspects de l&rsquo;entreprise. Par exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>-- Analyse des ventes par client\n<\/strong>SELECT C.Customer_Name, SUM(S.Total_Amount) AS Total_Spent\nFROM Sales_Fact S\nJOIN Customer_Dim C ON S.Customer_ID = C.Customer_ID\nGROUP BY C.Customer_Name\nORDER BY Total_Spent DESC;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>-- Ventes totales par produit\n<\/strong>SELECT P.Product_Name, SUM(S.Quantity_Sold) AS Total_Quantity, SUM(S.Total_Amount) AS Total_Sales FROM Sales_Fact S JOIN Product_Dim P ON S.Product_ID = P.Product_ID GROUP BY P.Product_Name;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>-- Ventes totales par mois\n<\/strong>SELECT D.Month, D.Year, SUM(S.Total_Amount) AS Total_Sales\nFROM Sales_Fact S\nJOIN Date_Dim D ON S.Date_ID = D.Date_ID\nGROUP BY D.Month, D.Year\nORDER BY D.Year, D.Month;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>-- Ventes par lieu\n<\/strong>SELECT L.Store_Name, L.City, SUM(S.Total_Amount) AS Total_Sales\nFROM Sales_Fact S\nJOIN Location_Dim L ON S.Location_ID = L.Location_ID\nGROUP BY L.Store_Name, L.City;<\/code><\/pre>\n\n\n\n<p>L&rsquo;utilisation du <strong>sch\u00e9ma en \u00e9toile<\/strong> facilite l&rsquo;organisation et l&rsquo;analyse des donn\u00e9es dans un entrep\u00f4t de donn\u00e9es, ce qui permet de g\u00e9n\u00e9rer des <strong>requ\u00eates SQL efficaces<\/strong>. Cela montre comment les donn\u00e9es d&rsquo;un restaurant peuvent \u00eatre structur\u00e9es et manipul\u00e9es pour obtenir des informations utiles \u00e0 la prise de d\u00e9cision et \u00e0 l&rsquo;am\u00e9lioration des performances de l&rsquo;entreprise.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Exporter la base de donn\u00e9es au format .csv<\/mark><\/h2>\n\n\n\n<p>Pour importer les donn\u00e9es dans Power BI, j&rsquo;ai d&rsquo;abord export\u00e9 les tables de la base de donn\u00e9es vers des fichiers .csv. J&rsquo;ai utilis\u00e9 les instructions suivantes dans <strong>PostgreSQL<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>COPY Sales_Fact TO '\/path\/to\/sales_fact.csv' DELIMITER ',' CSV HEADER;\nCOPY Customer_Dim TO '\/path\/to\/customer_dim.csv' DELIMITER ',' CSV HEADER;\nCOPY Product_Dim TO '\/path\/to\/product_dim.csv' DELIMITER ',' CSV HEADER;\nCOPY Location_Dim TO '\/path\/to\/location_dim.csv' DELIMITER ',' CSV HEADER;\nCOPY Date_Dim TO '\/path\/to\/date_dim.csv' DELIMITER ',' CSV HEADER;\n<\/code><\/pre>\n\n\n\n<p>Si votre <strong>PostgreSQL<\/strong> a des probl\u00e8mes de version ou de permissions, une solution est de le faire par <strong>Console<\/strong>. Pour cela, vous devez installer <strong>PSQL<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u279c psql -h localhost -d restaurants -U postgres<\/code><\/pre>\n\n\n\n<p>Saisissez votre nom d&rsquo;utilisateur et votre mot de passe et, une fois dans la base de donn\u00e9es \u00ab\u00a0Restaurants\u00a0\u00bb, effectuez la requ\u00eate pour chaque table en SQL :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>restaurants=# \\copy customer_dim TO '\/Users\/javierladino\/Documents\/Javier\/sql\/customer_dim.csv' DELIMITER ',' CSV HEADER;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Cr\u00e9ation de tableaux de bord dans Power BI<\/mark><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_05.jpeg\" alt=\"\" class=\"wp-image-1207\"\/><figcaption class=\"wp-element-caption\">Dashboard Power BI<\/figcaption><\/figure>\n\n\n\n<p>Pour un restaurant, l&rsquo;objectif du tableau de bord est de fournir des informations essentielles pour aider \u00e0 prendre des d\u00e9cisions strat\u00e9giques, optimiser les op\u00e9rations et am\u00e9liorer la satisfaction des clients. Sur la base du <strong>mod\u00e8le en \u00e9toile<\/strong> et des donn\u00e9es simul\u00e9es, nous avons d\u00e9fini les mesures et les visualisations qu&rsquo;il serait le plus important d&rsquo;inclure dans un tableau de bord Power BI.<\/p>\n\n\n\n<p>Nous avons import\u00e9 les fichiers <strong>.csv<\/strong> et configur\u00e9 les relations entre les tables selon le sch\u00e9ma en \u00e9toile. Ensuite, nous avons cr\u00e9\u00e9 plusieurs visualisations pour v\u00e9rifier l&rsquo;utilisation des donn\u00e9es, telles que :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ventes totales par client <\/strong>: Un diagramme \u00e0 barres montrant les ventes totales par client.<\/li>\n\n\n\n<li><strong>Ventes par cat\u00e9gorie de produits <\/strong>: diagramme circulaire montrant la r\u00e9partition des ventes par cat\u00e9gorie de produits.<\/li>\n\n\n\n<li><strong>Ventes par emplacement<\/strong> : une carte montrant les ventes dans les diff\u00e9rents emplacements.<\/li>\n\n\n\n<li><strong>Tendances des ventes par mois<\/strong> : un graphique lin\u00e9aire montrant la tendance des ventes au fil du temps.<\/li>\n<\/ul>\n\n\n\n<p><br><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Mais quelles questions le g\u00e9rant du restaurant pourrait-il poser \u00e0 l&rsquo;analyste de donn\u00e9es pour conna\u00eetre les principales mesures de son activit\u00e9 ? (Ce point est peut-\u00eatre au d\u00e9but, mais c&rsquo;est l\u00e0 que je pense qu&rsquo;il devient valable).<\/mark><\/strong><\/p>\n\n\n\n<p>Le g\u00e9rant du restaurant peut poser une s\u00e9rie de questions pour mieux comprendre les mesures cl\u00e9s de son entreprise et prendre des d\u00e9cisions \u00e9clair\u00e9es. Quelques questions cl\u00e9s que le propri\u00e9taire pourrait poser, suivies de la requ\u00eate en <strong>DAX (Power BI Data Analysis Expressions)<\/strong> pour cr\u00e9er les mesures ou les colonnes respectivement :<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Questions sur les ventes et les performances<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_04.jpeg\" alt=\"\" class=\"wp-image-1208\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Quelles sont les ventes totales du restaurant au cours d&rsquo;une p\u00e9riode donn\u00e9e (mois, trimestre, ann\u00e9e) ?<\/strong><br>Mesure : Ventes totales (SUM(Sales_Fact[Total_Amount]))<\/li>\n\n\n\n<li><strong>Quel est le b\u00e9n\u00e9fice net du restaurant apr\u00e8s soustraction des co\u00fbts ?<\/strong><br>Mesure : b\u00e9n\u00e9fice (SUM(Sales_Fact[Total_Amount]) &#8211; SUM(Sales_Fact[Cost]))<\/li>\n\n\n\n<li><strong>Comment les ventes varient-elles dans le temps (jour, semaine, mois) ?<\/strong><br>Visualisation : Graphique lin\u00e9aire des ventes totales par mois<\/li>\n\n\n\n<li><strong>Quelle est la marge b\u00e9n\u00e9ficiaire du restaurant ?<\/strong><br>Mesure : Marge b\u00e9n\u00e9ficiaire (DIVIDE([Profit], [Total_Sales], 0))<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Questions sur les produits et les cat\u00e9gories<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03-1.jpeg\" alt=\"\" class=\"wp-image-1210\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Quels sont les produits les plus vendus ?<\/strong><br>M\u00e9trique : Ventes par produit (SUM(Sales_Fact[Total_Amount]) group\u00e9 par Product_Dim[Product_Name])<\/li>\n\n\n\n<li><strong>Quelles sont les cat\u00e9gories de produits qui g\u00e9n\u00e8rent le plus de revenus ?<\/strong><br>M\u00e9trique : Ventes par cat\u00e9gorie (SUM(Sales_Fact[Total_Amount]) group\u00e9 par Product_Dim[Category])<\/li>\n\n\n\n<li><strong>Combien de produits sont vendus en moyenne par client ?<\/strong><br>M\u00e9trique : Nombre moyen de produits vendus par client (MOYENNE(Fait_Vente[Quantit\u00e9_Vendue]))<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Questions sur les clients<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_02.jpeg\" alt=\"\" class=\"wp-image-1209\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Quelle est la consommation totale de chaque client ?<\/strong><br>M\u00e9trique\/colonne : Consommation totale par client (SUM(Sales_Fact[Total_Amount]) filtr\u00e9 par Customer_ID)<\/li>\n\n\n\n<li><strong>Quel est le ticket moyen par client ?<\/strong><br>M\u00e9trique : Ventes moyennes par client (AVERAGE(Sales_Fact[Total_Amount]))<\/li>\n\n\n\n<li><strong>Quels sont les clients qui d\u00e9pensent le plus ?<\/strong><br>Visualisation : Tableau ou diagramme \u00e0 barres avec Nom_du_client et D\u00e9penses_totales_par_client<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Questions sur les op\u00e9rations et l&rsquo;efficacit\u00e9<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_01.jpeg\" alt=\"\" class=\"wp-image-1206\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Quelles sont les heures de la journ\u00e9e o\u00f9 les ventes sont les plus importantes ?<\/strong><br>Mesure : ventes par heure (SUM(Sales_Fact[Total_Amount]) group\u00e9 par Date_Dim[Hour])<\/li>\n\n\n\n<li><strong>Quelle est la performance des ventes par emplacement de restaurant (s&rsquo;il y a plusieurs emplacements) ?<\/strong><br>M\u00e9trique : Ventes par emplacement (SUM(Sales_Fact[Total_Amount]) group\u00e9 par Location_Dim[Location_Name])<\/li>\n\n\n\n<li><strong>Quels sont les jours de la semaine o\u00f9 les ventes sont les plus importantes ?<\/strong><br>M\u00e9trique : Ventes par jour de la semaine (SUM(Sales_Fact[Total_Amount]) group\u00e9 par Date_Dim[DayOfWeek])<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Questions sur les promotions et les r\u00e9ductions<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Comment les promotions affectent-elles les ventes ?<\/strong><br>Mesure : Comparez les ventes pendant les p\u00e9riodes promotionnelles et les p\u00e9riodes non promotionnelles.<\/li>\n\n\n\n<li><strong>Quelles remises g\u00e9n\u00e8rent le plus de ventes ?<\/strong><br>Mesure : Ventes par type de remise (SUM(Sales_Fact[Total_Amount]) group\u00e9 par Promotion_Dim[Promotion_Type])<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">Exemples de questions d\u00e9taill\u00e9es<\/mark><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u00ab\u00a0Quel a \u00e9t\u00e9 le produit le plus vendu au cours du dernier trimestre et quel a \u00e9t\u00e9 son chiffre d&rsquo;affaires ?<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00a0Quelle est la marge b\u00e9n\u00e9ficiaire moyenne de nos plats principaux ?<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00a0Qui sont nos clients les plus pr\u00e9cieux et combien ont-ils d\u00e9pens\u00e9 au total ?<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00a0Quels jours de la semaine devrions-nous mettre l&rsquo;accent sur les promotions pour augmenter les ventes ?<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00a0Comment nos ventes ont-elles vari\u00e9 au cours des diff\u00e9rentes saisons de l&rsquo;ann\u00e9e ?<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00a0Quel restaurant (s&rsquo;il y en a plusieurs) a les revenus les plus \u00e9lev\u00e9s et quel restaurant a les revenus les plus bas ?<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00a0Quel est l&rsquo;impact de nos promotions sur les ventes totales et la marge b\u00e9n\u00e9ficiaire ?<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00a0Quelles sont les heures de pointe des ventes au cours de la journ\u00e9e ?<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00a0Quel pourcentage de nos ventes totales provient de nos produits les plus vendus ?<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00a0Quelles sont les d\u00e9penses moyennes par client et comment varient-elles entre les clients r\u00e9guliers et les nouveaux clients ?<\/strong><\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<p>En incluant ces mesures et ces visualisations dans votre tableau de bord Power BI, vous obtiendrez une vue d&rsquo;ensemble des performances de votre restaurant, couvrant des aspects tels que les ventes, les b\u00e9n\u00e9fices, les marges b\u00e9n\u00e9ficiaires et les tendances au fil du temps. Ils vous permettront d&rsquo;identifier les possibilit\u00e9s d&rsquo;am\u00e9lioration, de suivre les performances et de prendre des d\u00e9cisions \u00e9clair\u00e9es pour d\u00e9velopper l&rsquo;activit\u00e9.<\/p>\n\n\n\n<p>J&rsquo;ai cr\u00e9\u00e9 un <strong>tableau de bord compos\u00e9 de cinq sections : Accueil (tableau de bord), Ventes, Produits, Clients et Op\u00e9rations.<\/strong> Certaines mesures ou valeurs sont r\u00e9p\u00e9t\u00e9es, mais je l&rsquo;ai fait intentionnellement pour am\u00e9liorer l&rsquo;exp\u00e9rience de l&rsquo;utilisateur en filtrant les \u00e9l\u00e9ments dans Power BI.<\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/restaurants.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Contenu embarqu\u00e9 restaurants.\"><\/object><a id=\"wp-block-file--media-e198eb7e-e81c-44aa-b0f5-299400192115\" href=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/restaurants.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">restaurants<\/a><a href=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/restaurants.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-e198eb7e-e81c-44aa-b0f5-299400192115\">Telecharger<\/a><\/div>\n\n\n\n<p>Vous pourrez interagir avec le tableau de bord en vous connectant \u00e0 votre compte Power BI :<\/p>\n\n\n\n<iframe loading=\"lazy\" title=\"restaurants\" width=\"1140\" height=\"541.25\" src=\"https:\/\/app.powerbi.com\/reportEmbed?reportId=9678421a-222c-419a-8dec-698d45dd1ece&#038;autoAuth=true&#038;ctid=a38478a7-1a82-45cc-8646-b1a51da77182\" frameborder=\"0\" allowFullScreen=\"true\"><\/iframe>\n\n\n<p><!-- wp:embed \n<iframe loading=\"lazy\" title=\"restaurants\" width=\"1140\" height=\"541.25\" src=\"https:\/\/app.powerbi.com\/reportEmbed?reportId=9678421a-222c-419a-8dec-698d45dd1ece&autoAuth=true&ctid=a38478a7-1a82-45cc-8646-b1a51da77182\" frameborder=\"0\" allowFullScreen=\"true\"><\/iframe>\n<!-- \/wp:post-content --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<h2><span style=\"color: #00ccff;\">Conclusions<\/span><\/h2>\n<p>Les r\u00e9ponses \u00e0 ces questions permettront au propri\u00e9taire d&rsquo;avoir une vision claire des domaines cl\u00e9s de l&rsquo;entreprise, ce qui l&rsquo;aidera \u00e0 prendre des d\u00e9cisions strat\u00e9giques pour am\u00e9liorer les op\u00e9rations, optimiser le menu, cibler les promotions et augmenter la rentabilit\u00e9. Ces questions permettent \u00e9galement d&rsquo;identifier les tendances et les mod\u00e8les de comportement des clients et de performance du restaurant.<\/p>\n<p>Personnellement, ce projet m&rsquo;a permis de d\u00e9montrer mes comp\u00e9tences en mati\u00e8re de conception et d&rsquo;impl\u00e9mentation d&rsquo;un sch\u00e9ma en \u00e9toile, d&rsquo;utilisation de <strong>SQL<\/strong> pour manipuler et analyser les donn\u00e9es, et de cr\u00e9ation de visualisations efficaces dans <strong>Power BI<\/strong>. Les principales conclusions sont, par exemple, les suivantes:<\/p>\n<ul>\n<li><strong style=\"font-size: revert; color: initial; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\">Identification des clients cl\u00e9s<\/strong><span style=\"font-size: revert; color: initial; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\"> : les donn\u00e9es ont montr\u00e9 quels clients contribuent le plus aux ventes totales.<\/span><\/li>\n<li><strong>Produits les plus vendus<\/strong> : l&rsquo;identification des cat\u00e9gories de produits les plus populaires a permis de prendre des d\u00e9cisions \u00e9clair\u00e9es en mati\u00e8re de stocks.<\/li>\n<li><strong>Performances par site<\/strong> : l&rsquo;analyse des ventes par site a r\u00e9v\u00e9l\u00e9 les zones les plus performantes.<\/li>\n<\/ul>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- \/wp:list --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>En bref, ce projet n&rsquo;a pas seulement d\u00e9montr\u00e9 mes capacit\u00e9s techniques, mais a \u00e9galement fourni des informations pr\u00e9cieuses \u00e0 la direction du restaurant. R\u00e9aliser ce type de projet en m\u00e9langeant plusieurs outils, en faisant des erreurs, en faisant des recherches et en s&rsquo;appuyant sur toutes les ressources est la base pour continuer \u00e0 aller de l&rsquo;avant.<\/p>\n<p>J&rsquo;esp\u00e8re que ce projet vous plaira et que vous pourrez le reproduire pour la pratique, et n&rsquo;h\u00e9sitez pas \u00e0 me faire savoir ce que vous en pensez, s&rsquo;il y a des erreurs ou si vous d\u00e9couvrez de nouvelles fa\u00e7ons d&rsquo;analyser et de visualiser les donn\u00e9es. Bonjour \u00e0 tous !<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading --><\/p>\n<h2 class=\"wp-block-heading\"><mark class=\"has-inline-color has-vivid-cyan-blue-color\" style=\"background-color: rgba(0, 0, 0, 0);\">Sources:<\/mark><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p><a href=\"https:\/\/learn.microsoft.com\/es-es\/power-bi\/guidance\">https:\/\/learn.microsoft.com\/es-es\/power-bi\/guidance<\/a><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p><a href=\"https:\/\/www.youtube.com\/@GuyInACube\">https:\/\/www.youtube.com\/@GuyInACube<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>R\u00e9cemment, j&rsquo;ai particip\u00e9 \u00e0 un entretien d&#8217;embauche pour rejoindre l&rsquo;\u00e9quipe Dataviz &#8211; BI d&rsquo;une grande entreprise. Au cours de la conversation, on m&rsquo;a pr\u00e9sent\u00e9 le cas d&rsquo;utilisation des donn\u00e9es op\u00e9rationnelles d&rsquo;un restaurant, comment les structurer, les analyser et les visualiser. Je pense que ma solution \u00e9tait trop pratique et pas assez technique, heureusement mon interlocuteur &hellip; <\/p>\n","protected":false},"author":1,"featured_media":1042,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0},"rara_portfolio_categories":[27],"class_list":["post-1041","rara-portfolio","type-rara-portfolio","status-publish","has-post-thumbnail","hentry","rara_portfolio_categories-dataviz"],"_links":{"self":[{"href":"https:\/\/javierladino.com\/fr\/wp-json\/wp\/v2\/rara-portfolio\/1041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/javierladino.com\/fr\/wp-json\/wp\/v2\/rara-portfolio"}],"about":[{"href":"https:\/\/javierladino.com\/fr\/wp-json\/wp\/v2\/types\/rara-portfolio"}],"author":[{"embeddable":true,"href":"https:\/\/javierladino.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/javierladino.com\/fr\/wp-json\/wp\/v2\/comments?post=1041"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/javierladino.com\/fr\/wp-json\/wp\/v2\/media\/1042"}],"wp:attachment":[{"href":"https:\/\/javierladino.com\/fr\/wp-json\/wp\/v2\/media?parent=1041"}],"wp:term":[{"taxonomy":"rara_portfolio_categories","embeddable":true,"href":"https:\/\/javierladino.com\/fr\/wp-json\/wp\/v2\/rara_portfolio_categories?post=1041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}