Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
CS99
Regular Visitor

Calculate % of total by month with multiple filters from slicers

Hi,

Could you help create a measure which gives the correct % result when we select different slicer options from the dashboard. This should also consider the date range for denominator in the calculation.

Example dataset below:

Order NumberOrder DateOrdering MethodDoc Type
1234567816/06/2024ManualZA0
2846287616/06/2024EDIZA0
89673687316/06/2024EDIZA0
9282348723417/06/2024EDIZA0
86428946218/06/2024ManualZA1
732478234618/06/2024EDIZA1
4327547348217/07/2024ManualZA0
372456245217/07/2024EDIZA0
873647832317/07/2024EDIZA0
2647823643218/07/2024ManualZA1
367823642818/07/2024ManualZA1
284367284618/07/2024ManualZA1
8726478264319/07/2024ManualZA0
23646722919/07/2024EDIZA0

 

Expected result :

 Order Count 
Total Orders14 
Manual Orders %750.0%
ZA1 %321.4%
ZA1 Manual %428.6%

 

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Thanks for the reply from @FreemanZ , please allow me to provide another insight: 
Hi  @CS99 ,

Here are the steps you can follow:

1. Create calculated table.

True1_Table =
var _table1=
SUMMARIZE('Table','Table'[Doc Type],'Table'[Ordering Method])
var _table2=
ADDCOLUMNS(
    _table1,
    "Column1",
    [Ordering Method]&" "&"Orders %",
    "Column2",
    [Doc Type]&" "&"%",
    "Column3",
    [Doc Type]&" "&[Ordering Method]&" "&"%",
    "Column4",
    "Total Orders")
return
_table2

vyangliumsft_0-1721962826131.png

True2_Table =
var _table1=
DISTINCT('True1_Table'[Column1])
var _table2=
DISTINCT('True1_Table'[Column2])
var _table3=
DISTINCT('True1_Table'[Column3])
var _table4=
DISTINCT('True1_Table'[Column4])
return
UNION(
   _table1, _table2,_table3,_table4)

vyangliumsft_1-1721962826133.png

2. Create measure.

Test1 =
var _selecttype=SELECTEDVALUE('Table'[Doc Type])
var _selectmethod=SELECTEDVALUE('Table'[Ordering Method])
return
SWITCH(
    TRUE(),
    CONTAINSSTRING(
    "Total Orders",MAX('True2_Table'[Ordering Method]))=TRUE(),
    COUNTX(ALL('Table'),'Table'[Order Number]),  
    CONTAINSSTRING(
    _selectmethod&" "&"Orders %",MAX('True2_Table'[Ordering Method]))=TRUE(),
    COUNTX(FILTER(ALL('Table'),'Table'[Ordering Method]=_selectmethod),[Order Number]),
    CONTAINSSTRING(
    _selecttype&" "&"%",MAX('True2_Table'[Ordering Method]))=TRUE(),
    COUNTX(FILTER(ALL('Table'),'Table'[Ordering Method]=_selectmethod&&'Table'[Doc Type]<>_selecttype),[Order Number]),
    CONTAINSSTRING(
    _selecttype&" "&_selectmethod&""&" %",MAX('True2_Table'[Ordering Method]))=TRUE(),
    COUNTX(FILTER(ALL('Table'),'Table'[Ordering Method]=_selectmethod&&'Table'[Doc Type]=_selecttype),[Order Number]),
     BLANK())
Test2 =
 DIVIDE(
    [Test1],COUNTX(ALL('Table'),'Table'[Order Number]))

3. Result:

vyangliumsft_2-1721962887147.png

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

View solution in original post

2 REPLIES 2
Anonymous
Not applicable

Thanks for the reply from @FreemanZ , please allow me to provide another insight: 
Hi  @CS99 ,

Here are the steps you can follow:

1. Create calculated table.

True1_Table =
var _table1=
SUMMARIZE('Table','Table'[Doc Type],'Table'[Ordering Method])
var _table2=
ADDCOLUMNS(
    _table1,
    "Column1",
    [Ordering Method]&" "&"Orders %",
    "Column2",
    [Doc Type]&" "&"%",
    "Column3",
    [Doc Type]&" "&[Ordering Method]&" "&"%",
    "Column4",
    "Total Orders")
return
_table2

vyangliumsft_0-1721962826131.png

True2_Table =
var _table1=
DISTINCT('True1_Table'[Column1])
var _table2=
DISTINCT('True1_Table'[Column2])
var _table3=
DISTINCT('True1_Table'[Column3])
var _table4=
DISTINCT('True1_Table'[Column4])
return
UNION(
   _table1, _table2,_table3,_table4)

vyangliumsft_1-1721962826133.png

2. Create measure.

Test1 =
var _selecttype=SELECTEDVALUE('Table'[Doc Type])
var _selectmethod=SELECTEDVALUE('Table'[Ordering Method])
return
SWITCH(
    TRUE(),
    CONTAINSSTRING(
    "Total Orders",MAX('True2_Table'[Ordering Method]))=TRUE(),
    COUNTX(ALL('Table'),'Table'[Order Number]),  
    CONTAINSSTRING(
    _selectmethod&" "&"Orders %",MAX('True2_Table'[Ordering Method]))=TRUE(),
    COUNTX(FILTER(ALL('Table'),'Table'[Ordering Method]=_selectmethod),[Order Number]),
    CONTAINSSTRING(
    _selecttype&" "&"%",MAX('True2_Table'[Ordering Method]))=TRUE(),
    COUNTX(FILTER(ALL('Table'),'Table'[Ordering Method]=_selectmethod&&'Table'[Doc Type]<>_selecttype),[Order Number]),
    CONTAINSSTRING(
    _selecttype&" "&_selectmethod&""&" %",MAX('True2_Table'[Ordering Method]))=TRUE(),
    COUNTX(FILTER(ALL('Table'),'Table'[Ordering Method]=_selectmethod&&'Table'[Doc Type]=_selecttype),[Order Number]),
     BLANK())
Test2 =
 DIVIDE(
    [Test1],COUNTX(ALL('Table'),'Table'[Order Number]))

3. Result:

vyangliumsft_2-1721962887147.png

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

FreemanZ
Super User
Super User

hi @CS99 ,

 

try to plot the visual with a measure like:

Measure = DIVIDE(COUNTROWS(data),COUNTROWS(ALL(data)))

 

it worked like:

FreemanZ_0-1721887962078.png

 

Helpful resources

Announcements
July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.