Power BI is one of the most powerful tools for data visualization and analytics, and in this tutorial we are going to explore how you can build a Fitness Dashboard in Power BI using real-world data.
This project is perfect for:
π Students who want to learn DAX and create projects for portfolios.
π¨βπ» Data Analysts looking to practice KPIs, measures, and conditional formatting.
π’ Organizations like gyms, fitness centers, and health startups who want to track members, revenue, and progress.
In our YouTube tutorial, we have explained step by step how to:
β
Import fitness and membership data
β
Create different KPIs using DAX measures
β
Track membership progress with dates
β
Visualize active vs expired members
β
Build custom visuals like an SVG progress bar
Below we are sharing all the DAX measures used in this Power BI Fitness Dashboard project. You can directly copy them into your Power BI model and customize them as per your dataset.
π DAX Measures for Power BI Fitness Dashboard
//------------------- // Fitness Dashboard DAX Measures // Copy & Paste in your Power BI Model //----------------------------- //
// Gym Members count
Users_Count = DISTINCTCOUNT(Users[UserID])
// Total Revenue
Revenue = SUM(Payments[Amount])
// Total Expenses
Expanses = SUM(Expenses[Amount])
// Profit Calculation
Profit = [Revenue] - [Expanses]
// Maximum Users in Calendar
Max_users = MAXX(ALL('Calendar'[Month],'Calendar'[MonthIndex]), [Users_Count])
// Minimum Users in Calendar
Min_users = MINX(ALL('Calendar'[Month],'Calendar'[MonthIndex]), [Users_Count])
// Conditional User Color based on Min/Max
Con_Users_Color =
VAR MaxUser = [Max_users]
VAR MinUser = [Min_users]
VAR Con_Color = SELECTEDVALUE(ColorCodes[Codes])
VAR Value_Switch = SELECTEDVALUE(Min_Max_Switch[Type])
VAR Min_Color = IF(MinUser = [Users_Count], Con_Color, "gray")
VAR Max_Color = IF(MaxUser = [Users_Count], Con_Color, "gray")
RETURN IF(Value_Switch = "Max", Max_Color, Min_Color)
// Completed Membership Days
Complete_Days =
DATEDIFF(
SELECTEDVALUE(Users[MembershipStart]),
MIN(TODAY(), SELECTEDVALUE(Users[MembershipEnd])),
DAY
)
// Remaining Membership Days
RemainingDays =
DATEDIFF(
SELECTEDVALUE(Users[MembershipStart], TODAY()),
SELECTEDVALUE(Users[MembershipEnd]),
DAY
)
// Left Days = Remaining - Completed
Left_Days_Count = [RemainingDays] - [Complete_Days]
// Total Membership Days
Total_Days = [Complete_Days] + [Left_Days_Count]
// Progress % of Membership
ProgressPercent = DIVIDE([Complete_Days], [Total_Days], 0) * 100
// SVG Progress Bar Chart
SVG_BarChart1 =
VAR ProgressValue = [ProgressPercent]
VAR BarWidth = 260
VAR ProgressWidth = BarWidth * (ProgressValue / 100)
VAR Select_Color = SELECTEDVALUE(ColorCodes[Codes])
VAR SVG_Data_URL = "data:image/svg+xml;utf8,"
VAR SVG =
"<svg width='400' height='40' xmlns='http://www.w3.org/2000/svg'>" &
"<rect x='10' y='10' width='" & BarWidth & "' height='20' rx='10' ry='10' fill='#555' />" &
"<rect x='10' y='10' width='" & ProgressWidth & "' height='20' rx='10' ry='10' fill='" & Select_Color & "' />" &
"<text x='360' y='25' font-family='Arial' font-size='25' font-weight='bold' fill='white' text-anchor='end' alignment-baseline='middle'>" &
ROUND(ProgressValue, 0) & "%" &
"</text>" &
"</svg>"
RETURN
SVG_Data_URL & SVG
// Membership Type Counts
User_Platinum = CALCULATE([Users_Count], Users[Membership] = "Platinum")
User_Gold = CALCULATE([Users_Count], Users[Membership] = "Gold")
User_Silver = CALCULATE([Users_Count], Users[Membership] = "Silver")
// Active Members by Type
Platinum_Active = CALCULATE([User_Platinum], Users[Status] = "Active")
Gold_Active = CALCULATE([User_Gold], Users[Status] = "Active")
Silver_Active = CALCULATE([User_Silver], Users[Status] = "Active")
// Expired Members by Type
Gold_Expired = CALCULATE([User_Gold], Users[Status] = "Expired")
Silver_Expired = CALCULATE([User_Silver], Users[Status] = "Expired")
Platinum_Expired = CALCULATE([User_Platinum], Users[Status] = "Expired")
// Last Refresh Time
Last_Refresh = FORMAT(FIRSTNONBLANK(Last_Refresh[Refresh], "None"), "hh:mm AM/PM")
// BMI Calculation
BMI =
VAR WeightKg = SELECTEDVALUE(Weight_Slider[Weight_Slider])
VAR HeightFeet = SELECTEDVALUE(Height_Slider[Height_Slider])
VAR HeightMeters = HeightFeet * 0.3048
RETURN ROUND(WeightKg / (HeightMeters * HeightMeters), 1)
// BMI Color Categories
BMI Color =
VAR BMIValue = [BMI]
RETURN
SWITCH(
TRUE(),
BMIValue < 18.5, "#467AB5", // Underweight - Blue
BMIValue < 25, "#77A95C", // Normal - Green
BMIValue < 30, "#CD714C", // Overweight - Orange
"#C94B4B" // Obese - Red
)
// BMI Category Label
BMI Color Label =
VAR BMIValue = [BMI]
RETURN
SWITCH(
TRUE(),
BMIValue < 18.5, "Underweight",
BMIValue < 25, "Normal",
BMIValue < 30, "Overweight",
"Obese"
)
// Basal Metabolic Rate (BMR)
BMR =
VAR _Weight = SELECTEDVALUE(Weight_Slider[Weight_Slider])
VAR Height = SELECTEDVALUE(Height_Slider[Height_Slider])
VAR Age = SELECTEDVALUE(Age_Slider[Age_Slider])
VAR Gender = SELECTEDVALUE(Slider_Gender[Category])
RETURN
IF(
Gender = "Male",
(10 * _Weight) + (6.25 * Height) - (5 * Age) + 5,
(10 * _Weight) + (6.25 * Height) - (5 * Age) - 161
)
// Total Daily Energy Expenditure (TDEE)
TDEE =
VAR BMR_Value = [BMR]
VAR Activity = SELECTEDVALUE(Slider_Activity[ActivityFactor])
RETURN BMR_Value * Activity
// Calorie Targets
Maintain Calories = [TDEE]
Mild Weight Loss Calories = [TDEE] * 0.92
Weight Loss Calories = [TDEE] * 0.85
Extreme Weight Loss Calories = [TDEE] * 0.70
π₯ Watch Full Tutorial on YouTube
We have explained step by step how to build this dashboard on our YouTube channel. You will learn:
How to prepare the dataset
How to write these DAX measures
How to create beautiful visuals in Power BI
How to track Revenue, Expenses, Profit, Memberships, and Fitness Progress
Video Link : π Watch the full tutorial on YouTube
Buy Now Complete Project : Fitness Dashboard

π Conclusion
This Power BI Fitness Dashboard is a great project to learn how to:
Write DAX measures
Track KPIs for a fitness/gym business
Create interactive dashboards with custom visuals
Present your work in a professional way
If you are a student, analyst, or fitness startup owner, this dashboard will give you practical insights into how Power BI can be used in the real world.
π‘ Donβt forget to subscribe to our YouTube channel for more Power BI projects and tutorials.

