Cómo crear un gráfico de Gantt en Power BI: paso a paso
Este tutorial muestra cómo crear un gráfico de Gantt en Power BI para visualizar tareas, fechas de inicio y fin, duración y porcentaje de finalización —útil para gestión de proyectos y planificación. Explicaré por qué un Gantt ayuda a entender dependencias y progreso y cómo montar el visual con datos sencillos y medidas DAX.
Requisitos previos
- Power BI Desktop instalado
- Una tabla con columnas: Task, StartDate, EndDate, PercentComplete
- Conocimientos básicos de Power Query y DAX
Paso 1: Preparar los datos (Power Query)
Importa tu tabla a Power BI Desktop (Excel, CSV u otra fuente). Verifica que StartDate y EndDate están en formato fecha. Si es necesario, usa Power Query para transformar textos en fechas y eliminar filas vacías.
// Exemplo em M no editor do Power Query para garantir tipos
let
Fonte = Excel.Workbook(File.Contents("C:\projeto\tasks.xlsx"), null, true),
Tabela = Fonte{[Name="Tasks"]}[Data],
Tipo = Table.TransformColumnTypes(Tabela,{{"Task", type text}, {"StartDate", type date}, {"EndDate", type date}, {"PercentComplete", type number}})
in
Tipo
Paso 2: Crear columnas de ayuda (Duración y Orden)
En la pestaña Modelado crea una columna calculada para la duración en días y otra para ordenar las tareas (opcional). La duración es necesaria para representar el ancho de las barras en el Gantt.
// Coluna Duracao (dias)
Duracao = DATEDIFF('Tasks'[StartDate], 'Tasks'[EndDate], DAY)
// Coluna Ordem (exemplo por StartDate para ordenar o eixo)
OrdemTarefa = RANKX(ALL('Tasks'), 'Tasks'[StartDate], , ASC, DENSE)
Paso 3: Construir el eje horizontal (fechas continuas)
Un Gantt necesita un eje de fechas continuas. Si no tienes una tabla de fechas, crea una sencilla usando DAX. Esta tabla ayuda a alinear las barras correctamente en el eje temporal.
// Tabela Calendario básica
Calendario =
ADDCOLUMNS(
CALENDAR(MIN('Tasks'[StartDate]), MAX('Tasks'[EndDate])),
"Ano", YEAR([Date]),
"Mes", MONTH([Date])
)
Paso 4: Crear medidas para iniciar el Gantt
Crea medidas que calculen la posición de inicio y la duración en formato numérico para usar en el visual (algunos visuals custom o la técnica con gráfico de barras apiladas).
// Início em número de dias desde a data mínima (para gráfico empilhado)
DataMin = MIN('Calendario'[Date])
StartOffset =
DATEDIFF(MIN('Calendario'[Date]), MIN('Tasks'[StartDate]), DAY)
// Alternativa: medida por task usando SELECTEDVALUE
StartOffsetTask =
VAR d0 = CALCULATE(MIN('Tasks'[StartDate]), ALLSELECTED())
RETURN DATEDIFF(MIN('Calendario'[Date]), d0, DAY)
Paso 5: Crear el visual Gantt con un gráfico de barras apiladas (técnica sin visual custom)
Si no quieres instalar un visual custom, usa un gráfico de barras apiladas con dos series: una serie invisible para el offset (inicio) y otra para la duración. Configura el eje y con Task ordenada por la columna Ordem.
- Insertar un gráfico de Barras Apiladas.
- En el eje 'Eixo' coloca Task (usa Ordenar por columna OrdemTarefa).
- En la 'Legenda' déjalo en blanco; en 'Valores' añade: StartOffset como la primera serie y Duracao como la segunda serie.
- Formateo: para la primera serie define color como transparente (o 0% opacidad). La segunda serie representa la barra del Gantt.
- Activa las etiquetas de datos para mostrar PercentComplete o crea un marcador visual adicional.
Paso 6: Mostrar PercentComplete dentro del Gantt
Puedes representar el progreso con un segundo segmento de barra dentro de la duración (apilamiento interno) o con etiquetas. Crea medidas para DuracaoCompleta y DuracaoConcluida y úsalas como series apiladas.
// DuracaoConcluida em dias
DuracaoConcluida = SUMX('Tasks', 'Tasks'[Duracao] * 'Tasks'[PercentComplete] / 100)
// DuracaoRestante
DuracaoRestante = SUM('Tasks'[Duracao]) - [DuracaoConcluida]
Después, en el gráfico apilado pon: Offset (invisible), DuracaoConcluida (color distinto) y DuracaoRestante (color base). Así verás una barra con la porción completada.
Verificar el resultado
Confirma que las barras comienzan en las fechas correctas comparando StartDate con el punto inicial en el eje. Verifica que la suma de DuracaoConcluida y DuracaoRestante corresponde a Duracao para cada tarea. Errores comunes: fechas con horas (convertir a date), duraciones negativas (EndDate anterior a StartDate) o campos no ordenados (usar OrdemTarefa).
Conclusión
Ahora tienes un Gantt funcional en Power BI sin necesidad de visuals custom, con Start, End, duración y progreso visualizables. Próximos pasos: probar un visual Gantt de AppSource para funcionalidades avanzadas (dependencias, hitos) o crear tooltips personalizados con más detalle. Consejo: valida siempre las fechas y usa una tabla de Calendario para evitar desalineamientos —¿qué tarea te gustaría calendarizar primero?