Como criar um gráfico de Gantt no Power BI: passo a passo
Este tutorial mostra como criar um gráfico de Gantt no Power BI para visualizar tarefas, datas de início e fim, duração e percentagem de conclusão — útil para gestão de projectos e planeamento. Explicarei porque um Gantt ajuda a perceber dependências e progresso e como montar o visual com dados simples e medidas DAX.
Pré-requisitos
- Power BI Desktop instalado
- Uma tabela com colunas: Task, StartDate, EndDate, PercentComplete
- Conhecimentos básicos de Power Query e DAX
Passo 1: Preparar os dados (Power Query)
Importa a tua tabela para o Power BI Desktop (Excel, CSV ou outra fonte). Verifica que StartDate e EndDate estão em formato data. Se necessário, usa o Power Query para transformar textos em datas e eliminar linhas vazias.
// 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
Passo 2: Criar colunas de auxílio (Duração e Ordem)
No separador Modelação cria uma coluna calculada para a duração em dias e outra para ordenar as tarefas (opcional). A duração é necessária para representar a largura das barras no 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)
Passo 3: Construir o eixo horizontal (datas contínuas)
Um Gantt precisa de um eixo de datas contínuas. Se não tiveres uma tabela de datas, cria uma simples usando DAX. Esta tabela ajuda a alinhar barras correctamente no eixo temporal.
// Tabela Calendario básica
Calendario =
ADDCOLUMNS(
CALENDAR(MIN('Tasks'[StartDate]), MAX('Tasks'[EndDate])),
"Ano", YEAR([Date]),
"Mes", MONTH([Date])
)
Passo 4: Criar medidas para iniciar o Gantt
Cria medidas que calculam a posição de início e a duração em formato numérico para usares no visual (alguns visuais custom ou a técnica com gráfico de barras empilhadas).
// 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)
Passo 5: Criar o visual Gantt com um gráfico de barras empilhadas (técnica sem visual custom)
Se não quiseres instalar um visual custom, usa um gráfico de barras empilhadas com duas séries: uma série invisível para o offset (início) e outra para a duração. Configura o eixo y com Task ordenada pela coluna Ordem.
- Inserir um gráfico de Barras Empilhadas.
- No eixo 'Eixo' coloca Task (usa Ordenar por coluna OrdemTarefa).
- Na 'Legenda' deixa em branco; nos 'Valores' adiciona: StartOffset como a primeira série e Duracao como a segunda série.
- Formatação: para a primeira série define cor como transparente (ou 0% opacidade). A segunda série representa a barra do Gantt.
- Active os rótulos de dados para mostrar PercentComplete ou cria um marcador visual adicional.
Passo 6: Mostrar PercentComplete dentro do Gantt
Podes representar o progresso com um segundo segmento de barra dentro da duração (empilhamento interno) ou com rótulos. Cria medidas para DuracaoCompleta e DuracaoConcluida e usa-as como séries empilhadas.
// DuracaoConcluida em dias
DuracaoConcluida = SUMX('Tasks', 'Tasks'[Duracao] * 'Tasks'[PercentComplete] / 100)
// DuracaoRestante
DuracaoRestante = SUM('Tasks'[Duracao]) - [DuracaoConcluida]
Depois, no gráfico empilhado põe: Offset (invisível), DuracaoConcluida (cor distinta) e DuracaoRestante (cor base). Assim vês uma barra com a parcela concluída.
Verificar o resultado
Confirma que as barras começam nas datas correctas comparando StartDate com o ponto inicial no eixo. Verifica que a soma de DuracaoConcluida e DuracaoRestante corresponde a Duracao para cada tarefa. Erros comuns: datas com horas (converter para date), durações negativas (EndDate anterior a StartDate) ou campos não ordenados (usar OrdemTarefa).
Conclusão
Agora tens um Gantt funcional no Power BI sem necessidade de visuals custom, com Start, End, duração e progresso visualizáveis. Próximos passos: experimentar um visual Gantt do AppSource para recursos avançados (dependências, milestones) ou criar tooltips personalizados com mais detalhe. Dica: valida sempre as datas e usa uma tabela de Calendario para evitar desalinhamentos — que tarefa gostavas de calendarizar primeiro?