Skip to content

Gbarrantes25/CFO-Dashboard-PowerBI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CFO Dashboard

📃 Descripción General

Dashboard ejecutivo para Directores Financieros (CFO) desarrollado en Power BI, diseñado para centralizar y analizar el estado financiero de una cadena de restaurantes en tiempo real. Este proyecto transforma datos contables en información estratégica mediante:

  • 📊 3 Vistas Analíticas: Overview, P&C Deep Dive y P&L (Estado de Resultados).
  • 💰 Estado de Resultados: Ingresos, COGS, gastos operativos, EBIT, EBITDA y utilidad neta.
  • 📈 KPIs Financieros: +30 medidas DAX (márgenes, costos, punto de equilibrio).
  • 🎯 Metas vs Real: Comparativa de márgenes objetivo vs. alcanzados.
  • 📅 Análisis Temporal: Tendencias mensuales y comparativas YoY (Year over Year).

📊 Contenido del proyecto

  • Página "Overview": Contiene una vista general del análisis.
  • Página "P&C Deep Dive": Contiene el análisis por sucursal de la cadena.
  • Página "P&L": Contiene el esdtado de resultados de la empresa.

🛠️ Herramientas y Tecnologías Utilizadas

⚙️ Configuración del Entorno

  • Software Necesario: Power BI Desktop.
  • Instalación:

📂 Estructura del Repositorio

. ├── Data Source # Contiene las tablas en formato .xlsx |── Images # Carpeta donde se alojan los íconos. ├── Chief Financial Officer.pbix # Archivo que será ejecutado con Power BI Desktop. |── UDF.txt # Contiene las funciones definidas por el usuario.
└── README.md # Este archivo.

✅ Características Principales

  • Transformaciones en Power Query: Se realizaron procesos de limpieza y modelado de datos para optimizar el rendimiento.
  • Creación de tabla calendario.
  • Medidas DAX:
    • Abrir MEASURE '_Measures'[#Revenue] = SUMX( Fact_Revenue, Fact_Revenue[Quantity] * RELATED(DimProducts[Price_Unit]) ) MEASURE '_Measures'[#Expenses] = SUMX( Fact_Expenses, Fact_Expenses[Subtotal] ) MEASURE '_Measures'[#Net Income] = [#EBT] - [#Income Tax Expense] MEASURE '_Measures'[#Net Margin on Op.Rev(%)] = FX_OVEROPERATINGREVENUE([#Net Income]) MEASURE '_Measures'[#BEP Sales] = DIVIDE( [#Fixed Cost], 1 - FX_OVEROPERATINGREVENUE([#Variable Cost]), 0 ) MEASURE '_Measures'[#COGS Ratio(%)] = FX_OVEROPERATINGREVENUE(FX_EXPENSECATEGORY({ "Cost of Goods Sold" })) MEASURE '_Measures'[#Gross Profit] = FX_REVENUECATEGORY({ "Revenue" }) - FX_EXPENSECATEGORY({ "Cost of Goods Sold" }) MEASURE '_Measures'[#Opex] = FX_EXPENSELINEITEM({ "Operating Expenses" }) MEASURE '_Measures'[#EBIT] = [#Gross Profit] - [#Opex] MEASURE '_Measures'[#Income Tax Expense] = [#EBT] * 0.295 MEASURE '_Measures'[#EBT] = [#EBIT] + FX_REVENUECATEGORY({ "Other Income" }) - FX_EXPENSECATEGORY({ "Financial Expenses" }) MEASURE '_Measures'[#Depreciation] = FX_EXPENSECATEGORY({ "Depreciation Expenses" }) MEASURE '_Measures'[#EBITDA] = [#EBIT] + [#Depreciation] MEASURE '_Measures'[#Variable Cost] = FX_EXPENSECOSTTYPE({ "Variable Cost" }) MEASURE '_Measures'[#Fixed Cost] = FX_EXPENSECOSTTYPE({ "Fixed Cost" }) MEASURE '_Measures'[#Gross Profit Margin(%)] = FX_OVEROPERATINGREVENUE([#Gross Profit]) MEASURE '_Measures'[#Operating Margin(%)] = FX_OVEROPERATINGREVENUE([#EBIT]) MEASURE '_Measures'[#EBITDA Margin(%)] = FX_OVEROPERATINGREVENUE([#EBIT] + [#Depreciation]) MEASURE '_Measures'[#Operating Revenue] = FX_REVENUECATEGORY({ "Revenue" }) MEASURE '_Measures'[#Cost of Goods Sold] = FX_EXPENSESUBCATEGORY({ "Supplies and Materials", "Packaging", "Beverages" }) MEASURE '_Measures'[#Store Operating Expenses] = FX_EXPENSECATEGORY({ "Store Operating Expenses" }) MEASURE '_Measures'[#Selling Expenses] = FX_EXPENSECATEGORY({ "Selling Expenses" }) MEASURE '_Measures'[#Administrative Expenses] = FX_EXPENSECATEGORY({ "Administrative Expenses" }) MEASURE '_Measures'[#Other Income] = FX_REVENUECATEGORY({ "Other Income" }) MEASURE '_Measures'[#Financial Expenses] = FX_EXPENSECATEGORY({ "Financial Expenses" }) MEASURE '_Measures'[#Net Margin on Total Rev(%)] = DIVIDE( [#Net Income], [#Revenue], 0 ) MEASURE '_Measures'[#Margin of Safety(%)] = DIVIDE( [#Operating Revenue] - [#BEP Sales], [#Operating Revenue], 0 ) MEASURE '_Measures'[#LY Operating Revenue] = FX_LY([#Operating Revenue]) MEASURE '_Measures'[#YoY Operating Rev(%)] = FX_YOY( [#Operating Revenue], [#LY Operating Revenue] ) MEASURE '_Measures'[SelectedImg] = VAR result = SWITCH( TRUE(), SELECTEDVALUE( DimBranch[Branch], "Seleccionar todo" ) = "Seleccionar todo", FX_CHOOSEIMG(1), SELECTEDVALUE(DimBranch[Branch]) = "Oficina Central", FX_CHOOSEIMG(2), SELECTEDVALUE(DimBranch[Branch]) = "T. Dasso", FX_CHOOSEIMG(3), SELECTEDVALUE(DimBranch[Branch]) = "T. Arequipa", FX_CHOOSEIMG(4), SELECTEDVALUE(DimBranch[Branch]) = "T. Ica", FX_CHOOSEIMG(5), SELECTEDVALUE(DimBranch[Branch]) = "T. Chiclayo", FX_CHOOSEIMG(6), SELECTEDVALUE(DimBranch[Branch]) = "T. Cusco", FX_CHOOSEIMG(7) ) RETURN result MEASURE '_Measures'[CardBranch] = FX_CHOOSECARD(2) MEASURE '_Measures'[CardOverview] = FX_CHOOSECARD(1) MEASURE '_Measures'[COGS(%) Target] = 0.3 MEASURE '_Measures'[Operating Margin (%) Target] = 0.12 MEASURE '_Measures'[CardPL] = FX_CHOOSECARD(3) MEASURE '_Measures'[#ExpOverOpeRev(%)] = DIVIDE( [#Expenses], CALCULATE( [#Operating Revenue], ALL('Calendar'[#Month]), ALL(DimSubcategory[Subcategory]) ), 0 )
  • Funciones Definidas por el Usuario (UDF): UDF
  • Diseño Interactivo: Uso de paginado para navegación, marcadores y segmentación de datos.

🖼️ Vistas Previas del proyecto

Capturas image image image
Video https://www.youtube.com/watch?v=ISpue331_Y8

👤 Autor

  • Giancarlo Barrantes
  • Lima, Perú
  • Linkedin

About

Dashboard interactivo de ventas de cadena de restaurantes desarrollado en Power BI, diseñado para analizar el rendimiento comercial de múltiples sucursales en tiempo real. Este proyecto conecta una base de datos remota en Supabase (PostgreSQL).

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors