{"id":1200,"date":"2024-06-17T19:14:15","date_gmt":"2024-06-17T19:14:15","guid":{"rendered":"https:\/\/javierladino.com\/es\/?post_type=rara-portfolio&#038;p=1200"},"modified":"2024-06-18T15:49:57","modified_gmt":"2024-06-18T15:49:57","slug":"transformando-datos-en-conocimiento-analisis-de-un-restaurante-con-sql-y-power-bi","status":"publish","type":"rara-portfolio","link":"https:\/\/javierladino.com\/es\/portfolio\/transformando-datos-en-conocimiento-analisis-de-un-restaurante-con-sql-y-power-bi\/","title":{"rendered":"Transformando datos en conocimiento: An\u00e1lisis de un restaurante con SQL y Power BI"},"content":{"rendered":"\n<p>Recientemente, particip\u00e9 en una entrevista de trabajo para integrar el equipo Dataviz &#8211; BI de una gran empresa. Durante la conversaci\u00f3n, me plantearon el caso de uso de c\u00f3mo operar\u00edan los datos del funcionamiento de un restaurante, c\u00f3mo estructurarlos, analizarlos y visualizarlos. Creo que mi soluci\u00f3n fue demasiado pr\u00e1ctica y no t\u00e9cnica, afortunadamente mi entrevistador me gui\u00f3 para encarrilar la explicaci\u00f3n a una soluci\u00f3n que aportara al negocio. Por esto, decid\u00ed crear un proyecto que involucre la creaci\u00f3n de un Data Warehouse utilizando el modelo de esquema en estrella y el an\u00e1lisis de datos mediante <strong>SQL<\/strong> y <strong>Power BI<\/strong>. Aqu\u00ed te cuento los pasos que segu\u00ed para completar este proyecto, desde el dise\u00f1o del esquema en estrella hasta la creaci\u00f3n de un dashboard interactivo en Power BI.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"448\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03.jpeg\" alt=\"Dashboard restaurant\" class=\"wp-image-1202\" srcset=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03.jpeg 800w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03-300x168.jpeg 300w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03-768x430.jpeg 768w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03-107x60.jpeg 107w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Introducci\u00f3n<\/strong><\/h3>\n\n\n\n<p>El proyecto busca dise\u00f1ar un Data Warehouse para un restaurante utilizando el esquema en <strong>estrella de modelado dimensional<\/strong>. Este esquema facilitar\u00e1 la manipulaci\u00f3n y el an\u00e1lisis de datos operacionales del restaurante, permitiendo la generaci\u00f3n de informes y an\u00e1lisis de rendimiento mediante consultas <strong>SQL<\/strong> en un principio. Luego llevaremos los datos a <strong>Power BI<\/strong> para crear un dashboard para su an\u00e1lisis y distribuci\u00f3n a otros interesados.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Objetivos del Proyecto<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Dise\u00f1ar un esquema en estrella para el almac\u00e9n de datos del restaurante.<\/li>\n\n\n\n<li>Implementar las tablas necesarias en una base de datos SQL.<\/li>\n\n\n\n<li>Poblar las tablas con datos simulados.<\/li>\n\n\n\n<li>Realizar consultas SQL para analizar diversos aspectos del negocio.<\/li>\n\n\n\n<li>Exportar la base de datos en formato .csv para ser importada en Power BI.<\/li>\n\n\n\n<li>Crear un dashboard en Power BI para su an\u00e1lisis.<\/li>\n\n\n\n<li>Conclusiones.<\/li>\n<\/ol>\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\">Dise\u00f1o del Esquema en Estrella<\/mark><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"714\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/Untitled-drawing-3-2.png\" alt=\"\" class=\"wp-image-1203\" srcset=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/Untitled-drawing-3-2.png 829w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/Untitled-drawing-3-2-300x258.png 300w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/Untitled-drawing-3-2-768x661.png 768w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/Untitled-drawing-3-2-70x60.png 70w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/figure>\n\n\n\n<p>El <strong>esquema en estrella<\/strong> es una t\u00e9cnica de modelado dimensional utilizada en la construcci\u00f3n de almacenes de datos. Es uno de los m\u00e9todos m\u00e1s populares debido a su simplicidad y eficiencia en la organizaci\u00f3n de datos para an\u00e1lisis y consultas.<\/p>\n\n\n\n<p>El primer paso del proyecto fue dise\u00f1ar un <strong>esquema en estrella<\/strong> para el almac\u00e9n de datos \u00abData Warehouse\u00bb del restaurante. Un esquema en estrella se caracteriza por tener una tabla central llamada \u00ab<strong>tabla de hechos<\/strong>\u00bb que contiene los datos transaccionales, y varias \u00ab<strong>tablas de dimensiones<\/strong>\u00bb que contienen los atributos descriptivos relacionados.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"864\" height=\"632\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/relations_sql_01.png\" alt=\"\" class=\"wp-image-1204\" srcset=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/relations_sql_01.png 864w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/relations_sql_01-300x219.png 300w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/relations_sql_01-768x562.png 768w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/relations_sql_01-82x60.png 82w\" sizes=\"auto, (max-width: 864px) 100vw, 864px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Para este proyecto, dise\u00f1\u00e9 el siguiente esquema:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tabla de Hechos: Sales_Fact<\/strong>\n<ul class=\"wp-block-list\">\n<li>Sales_ID (clave primaria)<\/li>\n\n\n\n<li>Customer_ID (clave for\u00e1nea)<\/li>\n\n\n\n<li>Product_ID (clave for\u00e1nea)<\/li>\n\n\n\n<li>Location_ID (clave for\u00e1nea)<\/li>\n\n\n\n<li>Date_ID (clave for\u00e1nea)<\/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>Tablas de Dimensiones:<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>Customer_Dim<\/strong>\n<ul class=\"wp-block-list\">\n<li>Customer_ID (clave primaria)<\/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 (clave primaria)<\/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 (clave primaria)<\/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> (clave primaria)\n<ul class=\"wp-block-list\">\n<li>Date_ID (clave primaria)<\/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>Ventajas del Esquema en Estrella<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Simplicidad<\/strong>: La estructura es f\u00e1cil de entender y navegar, tanto para desarrolladores como para usuarios finales.<\/li>\n\n\n\n<li><strong>Rendimiento de Consulta<\/strong>: Las consultas en un esquema en estrella suelen ser r\u00e1pidas porque las relaciones entre la tabla de hechos y las tablas de dimensiones est\u00e1n simplificadas.<\/li>\n\n\n\n<li><strong>Escalabilidad<\/strong>: Es f\u00e1cil de expandir agregando m\u00e1s dimensiones o hechos sin reorganizar toda la estructura.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Desventajas del Esquema en Estrella<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Redundancia de Datos<\/strong>: Las tablas de dimensiones pueden contener datos redundantes, lo que puede aumentar el espacio de almacenamiento.<\/li>\n\n\n\n<li><strong>Mantenimiento<\/strong>: La redundancia y la duplicaci\u00f3n de datos pueden hacer que el mantenimiento sea m\u00e1s complicado.<\/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\">Implementaci\u00f3n de las tablas en SQL<\/mark><\/h2>\n\n\n\n<p>Despu\u00e9s de dise\u00f1ar el esquema en estrella, proced\u00ed a implementar las tablas en una base de datos SQL. Utilic\u00e9 <strong>PostgreSQL<\/strong> para este prop\u00f3sito. Aqu\u00ed est\u00e1 el c\u00f3digo SQL para crear las tablas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>-- Crear tabla de hechos\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>-- Crear tablas de dimensiones\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\">Poblar las tablas con datos simulados<\/mark><\/h2>\n\n\n\n<p>Para simular datos en las tablas, utilic\u00e9 la funci\u00f3n <code>RANDOM()<\/code> de <strong>PostgreSQL<\/strong>. A continuaci\u00f3n, se muestra un ejemplo de c\u00f3mo insert\u00e9 los datos simulados en la tabla de hechos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>-- Insertar datos en 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>-- Insertar datos en 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>-- Insertar datos en 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>-- Insertar datos en 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>-- Insertar datos en 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\">Realizar consultas SQL para el an\u00e1lisis<\/mark><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"982\" height=\"733\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/query_sql_01.png\" alt=\"\" class=\"wp-image-1205\" srcset=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/query_sql_01.png 982w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/query_sql_01-300x224.png 300w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/query_sql_01-768x573.png 768w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/query_sql_01-80x60.png 80w\" sizes=\"auto, (max-width: 982px) 100vw, 982px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Una vez que las tablas estaban pobladas, ejecut\u00e9 varias consultas SQL para analizar diferentes aspectos del negocio. Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>-- An\u00e1lisis de Ventas por Cliente\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>-- Total de Ventas por Producto\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>-- Ventas Totales por Mes\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>-- Ventas por Ubicaci\u00f3n\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>El uso del <strong>esquema en estrella<\/strong> facilita la organizaci\u00f3n y an\u00e1lisis de datos en un almac\u00e9n de datos, permitiendo la generaci\u00f3n de <strong>consultas SQL eficientes<\/strong>. Esto demuestra c\u00f3mo se puede estructurar y manipular datos de un restaurante para obtener informaci\u00f3n valiosa que apoye la toma de decisiones y mejore el rendimiento del negocio.<\/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\">Exportar la Base de Datos a .csv<\/mark><\/h2>\n\n\n\n<p>Para importar los datos en Power BI, primero export\u00e9 las tablas de la base de datos a archivos .csv. Utilic\u00e9 las siguientes instrucciones en <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 su <strong>PostgreSQL<\/strong> tiene problemas por versiones o permisos, una soluci\u00f3n es hacerlo por <strong><kbd>Consola<\/kbd><\/strong>. Deber\u00e1s instalar PSQL:<\/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>Ingresar tu User y Password y ya dentro de la Base de datos \u00abRestaurants\u00bb hacer el query por cada tabla 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\">Creaci\u00f3n del Dashboard en Power BI<\/mark><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"448\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_05.jpeg\" alt=\"\" class=\"wp-image-1207\" srcset=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_05.jpeg 800w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_05-300x168.jpeg 300w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_05-768x430.jpeg 768w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_05-107x60.jpeg 107w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption class=\"wp-element-caption\">Dashboard Power BI<\/figcaption><\/figure>\n\n\n\n<p>Para un restaurante, el objetivo del dashboard es proporcionar informaci\u00f3n cr\u00edtica que ayude a tomar decisiones estrat\u00e9gicas, optimizar operaciones y mejorar la satisfacci\u00f3n del cliente. Bas\u00e1ndonos en el <strong>modelo estrella<\/strong> y los datos simulados, definimos las medidas y visualizaciones que ser\u00edan las m\u00e1s importantes para incluir en un dashboard de Power BI.<\/p>\n\n\n\n<p>Importamos los archivos <strong>.csv <\/strong>y configuramos las relaciones entre las tablas seg\u00fan el esquema en estrella. Luego, creamos diversas visualizaciones para comprobar el uso de los datos, tales como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ventas Totales por Cliente:<\/strong> Un gr\u00e1fico de barras que muestra las ventas totales por cada cliente.<\/li>\n\n\n\n<li><strong>Ventas por Categor\u00eda de Producto:<\/strong> Un gr\u00e1fico de pastel que muestra la distribuci\u00f3n de las ventas por categor\u00eda de producto.<\/li>\n\n\n\n<li><strong>Ventas por Ubicaci\u00f3n:<\/strong> Un mapa que muestra las ventas en diferentes ubicaciones.<\/li>\n\n\n\n<li><strong>Tendencias de Ventas por Mes:<\/strong> Un gr\u00e1fico de l\u00edneas que muestra la tendencia de ventas a lo largo del tiempo.<\/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\">Pero, qu\u00e9 preguntas podr\u00eda hacerle el responsable del restaurante al analista de datos para conocer las principales medidas de su negocio ?<\/mark><\/strong> (Este punto podr\u00eda estar al inicio, pero aqu\u00ed es d\u00f3nde creo que toma validez).<\/p>\n\n\n\n<p>El responsable del restaurante puede hacer una serie de preguntas para comprender mejor las principales medidas de su negocio y tomar decisiones informadas. Algunas preguntas clave que el propietario podr\u00eda plantear, seguido del query en <strong>DAX<\/strong> (Expresiones de an\u00e1lisis de datos de Power BI) para crear las medidas o columnas respectivamente:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Preguntas sobre Ventas y Rendimiento<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"447\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_04.jpeg\" alt=\"\" class=\"wp-image-1208\" srcset=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_04.jpeg 800w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_04-300x168.jpeg 300w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_04-768x429.jpeg 768w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_04-107x60.jpeg 107w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u00bfCu\u00e1les son las ventas totales del restaurante en un per\u00edodo espec\u00edfico (mes, trimestre, a\u00f1o)?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: <kbd>Ventas Totales (<code>SUM(Sales_Fact[Total_Amount])<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfCu\u00e1l es la ganancia neta del restaurante despu\u00e9s de restar los costos?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: <kbd>Ganancia (<code>SUM(Sales_Fact[Total_Amount]) - SUM(Sales_Fact[Cost])<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfC\u00f3mo var\u00edan las ventas a lo largo del tiempo (d\u00eda, semana, mes)?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Visualizaci\u00f3n: Gr\u00e1fica de L\u00edneas para Ventas Totales por Mes<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfCu\u00e1l es el margen de ganancia del restaurante?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: <kbd>Margen de Ganancia (<code>DIVIDE([Ganancia], [Ventas_Totales], 0)<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Preguntas sobre Productos y Categor\u00edas<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"448\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03-1.jpeg\" alt=\"\" class=\"wp-image-1210\" srcset=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03-1.jpeg 800w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03-1-300x168.jpeg 300w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03-1-768x430.jpeg 768w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_03-1-107x60.jpeg 107w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u00bfCu\u00e1les son los productos m\u00e1s vendidos?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: <kbd>Ventas por Producto (<code>SUM(Sales_Fact[Total_Amount])<\/code> agrupado por <code>Product_Dim[Product_Name]<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfQu\u00e9 categor\u00edas de productos generan m\u00e1s ingresos?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: <kbd>Ventas por Categor\u00eda (<code>SUM(Sales_Fact[Total_Amount])<\/code> agrupado por <code>Product_Dim[Category]<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfCu\u00e1ntos productos se venden en promedio por cliente?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: <kbd>Promedio de Productos Vendidos por Cliente (<code>AVERAGE(Sales_Fact[Quantity_Sold])<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Preguntas sobre Clientes<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"447\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_02.jpeg\" alt=\"\" class=\"wp-image-1209\" srcset=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_02.jpeg 800w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_02-300x168.jpeg 300w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_02-768x429.jpeg 768w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_02-107x60.jpeg 107w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u00bfCu\u00e1l es el consumo total de cada cliente?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida\/Columna: <kbd>Total de Consumo por Cliente (<code>SUM(Sales_Fact[Total_Amount])<\/code> filtrado por <code>Customer_ID<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfCu\u00e1l es el ticket promedio por cliente?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: <kbd>Promedio de Venta por Cliente (<code>AVERAGE(Sales_Fact[Total_Amount])<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfQu\u00e9 clientes son los que m\u00e1s gastan?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Visualizaci\u00f3n: Tabla o Gr\u00e1fica de Barras con <code>Customer_Name<\/code> y <code>Total_Consumo_Por_Cliente<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Preguntas sobre Operaciones y Eficiencia<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"448\" src=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_01.jpeg\" alt=\"\" class=\"wp-image-1206\" srcset=\"https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_01.jpeg 800w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_01-300x168.jpeg 300w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_01-768x430.jpeg 768w, https:\/\/javierladino.com\/es\/wp-content\/uploads\/2024\/06\/dashboard_rest_01-107x60.jpeg 107w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u00bfEn qu\u00e9 horas del d\u00eda se generan m\u00e1s ventas?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: <kbd>Ventas por Hora (<code>SUM(Sales_Fact[Total_Amount])<\/code> agrupado por <code>Date_Dim[Hour]<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfCu\u00e1l es el desempe\u00f1o de ventas por cada ubicaci\u00f3n del restaurante (si hay varias sucursales)?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: <kbd>Ventas por Ubicaci\u00f3n (<code>SUM(Sales_Fact[Total_Amount])<\/code> agrupado por <code>Location_Dim[Location_Name]<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfQu\u00e9 d\u00edas de la semana tienen m\u00e1s ventas?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: Ventas por D\u00eda de la Semana <kbd>(<code>SUM(Sales_Fact[Total_Amount])<\/code> agrupado por <code>Date_Dim[DayOfWeek]<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Preguntas sobre Promociones y Descuentos<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u00bfC\u00f3mo afectan las promociones a las ventas?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: Comparar Ventas durante periodos de promoci\u00f3n vs periodos sin promoci\u00f3n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u00bfQu\u00e9 descuentos generan m\u00e1s ventas?<\/strong>\n<ul class=\"wp-block-list\">\n<li>Medida: Ventas por Tipo de Descuento <kbd>(<code>SUM(Sales_Fact[Total_Amount])<\/code> agrupado por <code>Promotion_Dim[Promotion_Type]<\/code>)<\/kbd><\/li>\n<\/ul>\n<\/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\">Ejemplos de Preguntas Detalladas<\/mark><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u00ab\u00bfCu\u00e1l ha sido el producto m\u00e1s vendido en el \u00faltimo trimestre y cu\u00e1nto ha generado en ventas?\u00bb<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00bfCu\u00e1l es el margen de ganancia promedio de nuestros platillos principales?\u00bb<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00bfCu\u00e1les son nuestros clientes m\u00e1s valiosos y cu\u00e1nto han gastado en total?\u00bb<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00bfQu\u00e9 d\u00edas de la semana debemos enfocarnos m\u00e1s en promociones para aumentar las ventas?\u00bb<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00bfC\u00f3mo han variado nuestras ventas durante las diferentes estaciones del a\u00f1o?\u00bb<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00bfQu\u00e9 ubicaci\u00f3n del restaurante (si hay m\u00faltiples) tiene el mayor ingreso y cu\u00e1l el menor?\u00bb<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00bfCu\u00e1l es el impacto de nuestras promociones en las ventas totales y en el margen de ganancia?\u00bb<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00bfCu\u00e1les son los tiempos pico de ventas durante el d\u00eda?\u00bb<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00bfQu\u00e9 porcentaje de nuestras ventas totales proviene de nuestros productos m\u00e1s vendidos?\u00bb<\/strong><\/li>\n\n\n\n<li><strong>\u00ab\u00bfCu\u00e1l es el promedio de gasto por cliente y c\u00f3mo var\u00eda entre clientes frecuentes y nuevos?\u00bb<\/strong><\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<p>Al incluir estas medidas y visualizaciones en tu dashboard de Power BI, obtendr\u00e1s una visi\u00f3n integral del rendimiento del restaurante, cubriendo aspectos como ventas, ganancias, m\u00e1rgenes de ganancia, y tendencias a lo largo del tiempo. Te permitir\u00e1n identificar oportunidades de mejora, monitorizar el rendimiento y tomar decisiones informadas para el crecimiento del negocio.<\/p>\n\n\n\n<p>Lo que hice fue crear un <strong>Dashboard en 5 secciones: Home (Dashboard), Sales, Products, Customers y Operations<\/strong>. Algunas m\u00e9tricas o valores se repiten, pero lo hice intencionalmente para mejorar la experiencia del usuario al filtrar los elementos en 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=\"Incrustado de 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\">Descarga<\/a><\/div>\n\n\n\n<p>Podr\u00e1s interactuar con el dashboard iniciando sesi\u00f3n en tu cuenta de 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;\">Conclusiones<\/span><\/h2>\n<p>Las respuestas a estas preguntas proporcionar\u00e1n al propietario una visi\u00f3n clara de las \u00e1reas clave del negocio, ayud\u00e1ndole a tomar decisiones estrat\u00e9gicas para mejorar las operaciones, optimizar el men\u00fa, enfocar las promociones y aumentar la rentabilidad. Estas preguntas tambi\u00e9n ayudan a identificar tendencias y patrones en el comportamiento de los clientes y el rendimiento del restaurante.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>En lo personal, este proyecto me permiti\u00f3 demostrar mis habilidades en el dise\u00f1o e implementaci\u00f3n de un esquema en estrella, el uso de <strong>SQL<\/strong> para manipular y analizar datos, y la creaci\u00f3n de visualizaciones efectivas en <strong>Power BI<\/strong>. Las principales conclusiones incluyen por ejemplo:<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:list --><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul><!-- wp:list-item -->\n<li><strong>Identificaci\u00f3n de Clientes Clave:<\/strong> Los datos mostraron qu\u00e9 clientes son los que m\u00e1s contribuyen a las ventas totales.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><!-- \/wp:list-item --><\/p>\n<p><!-- wp:list-item --><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Productos M\u00e1s Vendidos:<\/strong> Identificar las categor\u00edas de productos m\u00e1s populares ayud\u00f3 a tomar decisiones informadas sobre el inventario.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><!-- \/wp:list-item --><\/p>\n<p><!-- wp:list-item --><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Rendimiento por Ubicaci\u00f3n:<\/strong> Analizar las ventas por ubicaci\u00f3n revel\u00f3 las \u00e1reas con mejor desempe\u00f1o.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><!-- \/wp:list-item --><\/p>\n<p><!-- \/wp:list --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>En resumen, este proyecto no solo mostr\u00f3 mi capacidad t\u00e9cnica, sino que tambi\u00e9n proporcion\u00f3 informaci\u00f3n valiosa para la gesti\u00f3n del restaurante. Hacer este tipo de proyectos mezclando varias herramientas, cometiendo errores, investigando y apoyarse en todo recurso es la base para seguir avanzando.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Espero les guste y puedan replicarlo para practicar, y no duden en comentarme qu\u00e9 les parece, si hay errores o descubren nuevos caminos para el an\u00e1lisis y visualizaci\u00f3n de datos. Saludos!<\/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);\">Fuentes:<\/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>Recientemente, particip\u00e9 en una entrevista de trabajo para integrar el equipo Dataviz &#8211; BI de una gran empresa. Durante la conversaci\u00f3n, me plantearon el caso de uso de c\u00f3mo operar\u00edan los datos del funcionamiento de un restaurante, c\u00f3mo estructurarlos, analizarlos y visualizarlos. Creo que mi soluci\u00f3n fue demasiado pr\u00e1ctica y no t\u00e9cnica, afortunadamente mi entrevistador &hellip; <\/p>\n","protected":false},"author":1,"featured_media":1201,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0},"rara_portfolio_categories":[27],"class_list":["post-1200","rara-portfolio","type-rara-portfolio","status-publish","has-post-thumbnail","hentry","rara_portfolio_categories-dataviz"],"_links":{"self":[{"href":"https:\/\/javierladino.com\/es\/wp-json\/wp\/v2\/rara-portfolio\/1200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/javierladino.com\/es\/wp-json\/wp\/v2\/rara-portfolio"}],"about":[{"href":"https:\/\/javierladino.com\/es\/wp-json\/wp\/v2\/types\/rara-portfolio"}],"author":[{"embeddable":true,"href":"https:\/\/javierladino.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/javierladino.com\/es\/wp-json\/wp\/v2\/comments?post=1200"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/javierladino.com\/es\/wp-json\/wp\/v2\/media\/1201"}],"wp:attachment":[{"href":"https:\/\/javierladino.com\/es\/wp-json\/wp\/v2\/media?parent=1200"}],"wp:term":[{"taxonomy":"rara_portfolio_categories","embeddable":true,"href":"https:\/\/javierladino.com\/es\/wp-json\/wp\/v2\/rara_portfolio_categories?post=1200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}