Power BI: create a progress visual
I will show how to create 2 types of progress visual with this data:

Option 1 | Option 2 |
![]() |
![]() |
For the option 1, I will start by creating 3 measures:
- Measure 1
DIVIDE(MAX('table1'[argument1]),MAX('table1'[argument2]))
- Measure 2
var num=put-your-number
var calc1=ROUND(DIVIDE(MAX('table1'[argument1]),MAX('table1'[argument2]))*num,0)
var calc2= num - calc1
return
IF(calc1>=num,REPT("▮",num),REPT("▮",calc1)) & IF(calc2<=0,BLANK(),REPT("▯",calc2))
NOTE: change “put-your-number” by yours, it corresponds how many small square icons to display
- Measure 3
var calc1=1-DIVIDE(MAX('table1'[argument1]),MAX('table1'[argument2]))
var calc2=DIVIDE(MAX('table1'[argument1]),MAX('table1'[argument2]))-1
return
IF(calc1<0,FORMAT(calc2,"+0.00%"),IF(calc1=0,FORMAT(calc1,"0.00%"),FORMAT(calc1,"-0.00%"))) & " put-your-sentence"
NOTE: change “put-your-sentence” by yours
I will create a card visualization and put the measure 1 (left picture) then in the “reference labels” option, I will add the other 2 measures in “add label” (right picture):
![]() |
![]() |

Now, you just have to customize it. For the option 2, I will start by creating a new table by clicking on “modeling -> new table”:

With this formula:
GENERATESERIES(1,100,1)

Then I will create 6 measures:
- Measure 4
- Measure 5
var calc=IF(MAX('table1'[argument1])<MAX('table1'[argument2]),ROUND(DIVIDE(MAX('table1'[argument1]),MAX('table1'[argument2]))*100,0),100)
return
IF(MAX('table2'[argument])<=calc,1)
- Measure 6
IF(MAX('table2'[argument])=ROUND(DIVIDE(MAX('table1'[argument2]),MAX('table1'[argument2]))*100,0),1)
- Measure 7
var calc=IF(MAX('table1'[argument1])<MAX('table1'[argument2]),ROUND(DIVIDE(MAX('table1'[argument1]),MAX('table1'[argument2]))*100,0),100)
return
IF(MAX('table2'[argument])=calc,3)
- Measure 8
IF(MAX('table2'[argument])=ROUND(DIVIDE(MAX('table1'[argument2]),MAX('table1'[argument2]))*100,0),-1)
- Measure 9
var calc1=MAX('table1'[argument1])
var calc2=MAX('table1'[argument2])-MAX('table1'[argument1])
var calc3=MAX('table1'[argument1])-MAX('table1'[argument2])
return
calc1&" ("&IF(MAX('table1'[argument1])<MAX('table1'[argument2]),FORMAT(calc2,"-0.00"),IF(MAX('table1'[argument1])=MAX('table1'[argument2]),
FORMAT(calc2,"0.00"),FORMAT(calc3,"+0.00")))&" put-your-sentence)"
NOTE: change “put-your-sentence” by yours
Now I will create my visual by selecting the line chart then fill the fields like this:


In the “lines” option, put 0 in the “width” field (left picture) and for “measure 7” and “measure 8”, select the “white” color (right picture):
![]() |
![]() |

Activate the “data label” option then for “measure 4”, “measure 5” and “measure 6”, turn off the “show for this series” (left picture) and for “measure 7” and “measure 8”, turn off “value” and turn on “detail” (right picture):
![]() |
![]() |
Into the “detail”, click on “add data” (left picture) then for “measure 7”, put “number” (middle picture) and for “measure 8”, put “target” (right picture):
![]() |
![]() |
![]() |
Click on the magnifying glass to open the “error bars” option then for “measure 4”, “measure 5” and “measure 6”, activate it and configure those fields like this:
![]() |
![]() |
And in the “bar” option, like this:
measure 4 | measure 5 | measure 6 |
![]() |
![]() |
![]() |
To finish, activate the “subtitle” option then click on the “fx” icon (left picture) to select the “measure 9” (right picture):
![]() |
![]() |

Now, the only thing to do it is to personalize it.
Interesting Topics
-
Be successfully certified ITIL 4 Managing Professional
Study, study and study, I couldn’t be successfully certified without studying it, if you are interested...
-
Be successfully certified ITIL 4 Strategic Leader
With my ITIL 4 Managing Professional certification (ITIL MP) in the pocket, it was time to go for the...
-
Hide visual and change background color based on selection
Some small tricks to customize the background colour of a text box...
-
Stacked and clustered column chart or double stacked column chart
In excel, I use a lot the combination of clustered and stacked chart...
-
Refresh Power BI
From the Power BI Service, I can set refresh but, for instance, there is no option to do it monthly or each time a change is made...
-
Power BI alerts to be sent by email from an excel file based on condition
I will explain how to send a list of emails from an excel file after creating alerts...