This is best Fabric, Power BI, SQL and AI community event. How do we know? The last event sold out! Save €200 with code FABCMTY200.
Register nowA new Data Days event is coming soon! This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. Don't miss out.
I need help with Power BI. I have to create a waterfall chart (like the attached image), where the first bar should go in blue. Bars 2, 3, 4, 5 must vary their color (green/red) if the value increases/decreases, and bar 6 is also blue (it is the total of the 5 previous columns), in fact I must change the name of total to that column to the measure of the graph. If someone can help me and/or guide me, I would be grateful (if you need the DAX measures already created for the amounts, let me know).
Solved! Go to Solution.
Hi @Syndicate_Admin
Please relate to my responce in the linked discussion :
If this post helps, then please consider Accepting it as the solution to help the other members find it more quickly.
Hi @Syndicate_Admin ,
Since we didnt hear back, we would be closing this thread.
If you need any assistance, feel free to reach out by creating a new post.
Thank you for using Microsoft Community Forum
Hi @Syndicate_Admin ,
Just wanted to check if you got a chance to review the suggestions provided and whether that helped you resolve your query?
Hi @Syndicate_Admin ,
Just wanted to check if you got a chance to review the suggestions provided and whether that helped you resolve your query?
Thank You @Ritaf1983 and @MohamedFowzan1 for your valuable inputs to the query.
Hi @Syndicate_Admin
Please relate to my responce in the linked discussion :
If this post helps, then please consider Accepting it as the solution to help the other members find it more quickly.
Your data should have at least these columns:
Category (e.g., "Mg. Contribución Jun-25 Plan", "Δ Mg. Servicios", etc.)
Value (numerical deviation or total)
Type ("Increase", "Decrease", "Total", or "Start" for coloring purposes)
Example data structure:
| Mg. Contribución Jun-25 Plan | 176 | Start |
| Δ Mg. Servicios | -318 | Decrease |
| Δ Mg. Equipos | 26 | Increase |
| Δ C. Op. VP Digital | -16 | Decrease |
| Δ C. Comercial | -42 | Decrease |
| Mg. Contribución Jun-25 Real | -174 | Total |
In Power BI, select the Waterfall chart visual from the “Visualizations” pane.
Drag Category to the X-axis.
Drag Value to “Y-axis” or “Values”.
Power BI default waterfall chart automatically assigns colors, but to customize:
Go to Format panel for the visual.
Expand Data colors.
Set colors manually for each “Category”:
Set the first bar (“Start”) and last bar (“Total”) to Blue.
Set “Increase” type bars (positive values) to Green.
Set “Decrease” type bars (negative values) to Red.
If you don’t see options to set colors by data, use “Conditional formatting”:
In “Data colors”, click the “fx” (function) button to apply rules.
Base the formatting on your “Type” (if you have “Type” column):
If “Type” is “Increase”, set color to green.
If “Type” is “Decrease”, set color to red.
If “Type” is “Start” or “Total”, set color to blue.
Power BI allows replacing labels:
Click on the last bar (Total) in the chart.
In the Data label properties or through the Data table, you can rename the “Total” to your measure (e.g., “Mg. Contribución Jun-25 Real”).
Alternatively, edit the value in your data table to show the desired label.
Thanks for the answer.
I will try to apply it.
Anyway, these are my measurements:
Tabla_EstadoResultados4 =
DATATABLE(
"Cascada", STRING,
"OrdenCascada", INTEGER,
"ColorHex", STRING,
"TipoBarra", STRING,
{
{"Mg Contribución 2025P", 1, "#10069F", "Total"},
{"Δ Mg Servicios", 2, "", "Variacion"},
{"Δ Mg Equipos", 3, "", "Variacion"},
{"Δ C. Op. VP Digital", 4, "", "Variacion"},
{"Δ C. Comercial", 5, "", "Variacion"},
{"Mg Contribución Real", 6, "#10069F", "Total"},
{"Mg Contribución Frcst", 7, "#10069F", "Total"},
{"Margen Directo Total", 8, "", "Variacion"},
{"Margen Contribución", 9, "", "Variacion"},
{"EBITDA", 10, "", "Variacion"}
}
)
Cascada_Mg_RP =
VAR LineaSeleccionada = SELECTEDVALUE('Tabla_EstadoResultados4'[Cascada])
VAR TipoIngresoR = "Real"
VAR TipoIngresoP = "Plan"
VAR Anio = 2025
VAR MesHoy = MONTH(TODAY()) - 2
VAR HayFiltroMes = ISFILTERED('Dim_Calendario'[MesCorto])
----- MARGEN SERVICIOS REAL -----
VAR IngresosServiciosReal =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "01. Ingresos Servicios",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "01. Ingresos Servicios",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR CostosServiciosReal =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "02. Costos de Servicios",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "02. Costos de Servicios",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR MargenServiciosReal = IngresosServiciosReal + CostosServiciosReal
----- MARGEN SERVICIOS PLAN -----
VAR IngresosServiciosPlan =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "01. Ingresos Servicios",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "01. Ingresos Servicios",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR CostosServiciosPlan =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "02. Costos de Servicios",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "02. Costos de Servicios",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR MargenServiciosPlan = IngresosServiciosPlan + CostosServiciosPlan
VAR MargenServicios = MargenServiciosReal - MargenServiciosPlan
----- MARGEN EQUIPOS REAL -----
VAR IngresosEquiposReal =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "04. Ingresos por venta de equipos / productos",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "04. Ingresos por venta de equipos / productos",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR CostosEquiposReal =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "05. Costos de Equipos",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "05. Costos de Equipos",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR MargenEquiposReal = IngresosEquiposReal + CostosEquiposReal
----- MARGEN EQUIPOS PLAN -----
VAR IngresosEquiposPlan =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "04. Ingresos por venta de equipos / productos",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "04. Ingresos por venta de equipos / productos",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR CostosEquiposPlan =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "05. Costos de Equipos",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Costo N1] = "05. Costos de Equipos",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR MargenEquiposPlan = IngresosEquiposPlan + CostosEquiposPlan
VAR MargenEquipos = MargenEquiposReal - MargenEquiposPlan
----- COSTOS OPERACIONALES -----
VAR RealCostosOperacionales =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] = "G. Costo Operacional Serti",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] = "G. Costo Operacional Serti",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR PlanCostosOperacionales =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] = "G. Costo Operacional Serti",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] = "G. Costo Operacional Serti",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR MargenCostosOperacionales = RealCostosOperacionales - PlanCostosOperacionales
----- COSTOS COMERCIALES -----
VAR RealCostosComerciales =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] = "F. Costo Comercial",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] = "F. Costo Comercial",
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR PlanCostosComerciales =
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] = "F. Costo Comercial",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] = "F. Costo Comercial",
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
)
VAR MargenCostosComerciales = RealCostosComerciales - PlanCostosComerciales
VAR MgContribucion =
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] IN
{
"A. Ingreso Servicios", "B. Costo Servicios D", "C. Electricidad",
"D. Ingresos por Equipos", "E. Costo por Equipos",
"F. Costo Comercial", "G. Costo Operacional Serti"
},
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio
)
-
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] IN {
"A. Ingreso Servicios", "B. Costo Servicios D", "C. Electricidad",
"D. Ingresos por Equipos", "E. Costo por Equipos",
"F. Costo Comercial", "G. Costo Operacional Serti"
},
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio
)
----- RESULTADO FINAL -----
VAR Resultado =
SWITCH(
TRUE(),
LineaSeleccionada="Mg Contribución 2025P",
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] IN {
"A. Ingreso Servicios", "B. Costo Servicios D", "C. Electricidad",
"D. Ingresos por Equipos", "E. Costo por Equipos",
"F. Costo Comercial", "G. Costo Operacional Serti"
},
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] IN {
"A. Ingreso Servicios", "B. Costo Servicios D", "C. Electricidad",
"D. Ingresos por Equipos", "E. Costo por Equipos",
"F. Costo Comercial", "G. Costo Operacional Serti"
},
'Base_Margen'[Tipo Ingreso] = TipoIngresoP,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
),
LineaSeleccionada="Δ Mg Servicios", MargenServicios,
LineaSeleccionada="Δ Mg Equipos", MargenEquipos,
LineaSeleccionada="Δ C. Op. VP Digital", MargenCostosOperacionales,
LineaSeleccionada="Δ C. Comercial", MargenCostosComerciales,
LineaSeleccionada="Mg Contribución Real",
IF(
HayFiltroMes,
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] IN {
"A. Ingreso Servicios", "B. Costo Servicios D", "C. Electricidad",
"D. Ingresos por Equipos", "E. Costo por Equipos",
"F. Costo Comercial", "G. Costo Operacional Serti"
},
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] IN VALUES('Dim_Calendario'[MesNum])
),
CALCULATE(
SUM('Base_Margen'[Monto]),
'Base_Margen'[Linea Template] IN {
"A. Ingreso Servicios", "B. Costo Servicios D", "C. Electricidad",
"D. Ingresos por Equipos", "E. Costo por Equipos",
"F. Costo Comercial", "G. Costo Operacional Serti"
},
'Base_Margen'[Tipo Ingreso] = TipoIngresoR,
'Base_Margen'[Año] = Anio,
'Base_Margen'[Mes] <= MesHoy
)
),
LineaSeleccionada="Mg Contribución", MgContribucion
)
VAR Color =
SWITCH(
TRUE(),
LineaSeleccionada IN {"Mg Contribución 2025P", "Mg Contribución Real"}, "#10069F",
LineaSeleccionada="Mg Contribución", "#FFFF00",
Resultado >= 0, "#47E844",
Resultado < 0, "#D30815",
"#808080"
)
RETURN Resultado
Si me guías, te lo agradecería.
Check out the May 2026 Power BI update to learn about new features.
Sign up to receive a private message when registration opens and key events begin.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
| User | Count |
|---|---|
| 27 | |
| 26 | |
| 22 | |
| 19 | |
| 17 |
| User | Count |
|---|---|
| 42 | |
| 42 | |
| 41 | |
| 21 | |
| 20 |