You point it at your own project CSV; 8 calculated fields surface every overdue task and budget overrun before your sponsor sees the steering deck — the ones a raw export hides.
Formula: IF [Status] = "Complete" THEN "Done" ELSEIF [Due Date] < TODAY() THEN "Overdue" ELSE "On Track" END
Uses: Status, Due Date
Formula: SUM(IF [Status] = "Complete" THEN 1 ELSE 0 END) / COUNT([Task])
Uses: Status, Task
Formula: SUM([Actual Cost]) - SUM([Budget])
Uses: Actual Cost, Budget
Formula: ZN(SUM([Actual Cost])) / SUM([Budget])
Uses: Actual Cost, Budget
Formula: SUM(IF [Finish Date] <= [Due Date] THEN 1 ELSE 0 END) / SUM(IF [Status] = "Complete" THEN 1 ELSE 0 END)
Uses: Finish Date, Due Date, Status
Formula: IF [Status] = "Complete" THEN 0 ELSE DATEDIFF('day', [Due Date], TODAY()) END
Uses: Status, Due Date
Formula: SUM([Actual Hours]) - SUM([Planned Hours])
Uses: Actual Hours, Planned Hours
Formula: ZN(SUM([Planned Hours])) / SUM([Actual Hours])
Uses: Planned Hours, Actual Hours
| Column | Type | Role |
|---|---|---|
Project | string | dimension |
Task | string | dimension |
Owner | string | dimension |
Status | string | dimension |
Priority | string | dimension |
Start Date | date | dimension |
Due Date | date | dimension |
Finish Date | date | dimension |
Budget | real | measure |
Actual Cost | real | measure |
Planned Hours | real | measure |
Actual Hours | real | measure |
Project,Task,Owner,Status,Priority,Start Date,Due Date,Finish Date,Budget,Actual Cost,Planned Hours,Actual Hours
File you connect: project_tasks.csv
This page is the working piece. The full pack has everything below.
You point it at your own project CSV; 8 calculated fields surface every overdue task and budget overrun before your sponsor sees the steering deck — the ones a raw export hides.
A freelance Tableau developer on Upwork charges $50–$150 an hour, and a custom project dashboard with these KPIs is a multi-hour build; this is a one-time $120 you keep and reuse every reporting cycle.
Send it to me