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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
jeyare
Helper II
Helper II

Pareto rule for multiple columns

Hi there,

I'm looking for a solution for this case.

I have several columns on a single table. So let's called the table "Source Table".

All of the columns contain Decimal values.

Each column also contains "GlobalTotal" values (as SUM of all items in the column) and some specific data that I need to extract from the expected scenario defined below.

The first column contains "Name" values (string).

 

Expected scenario:

I need to create a visual (Donut chart) for each column based on these conditions:

- the chart will contain only values from a specific column vs the "Name" column for a legend

- it will show just the Pareto 80% (deviation +/- 5%) of the "GlobalTotal" based on the HIGHEST values in the column only

- The HIGHEST values must contain a filter for "NAME" values, which aren't FILTERED.

If there is a way how to do it better by creating a new table from the existing one that will contain just the evaluated values, it is acceptable. Maybe it will save time (because I have several similar tables and +100 columns in total).

 

Here is an example of how to create the New Table from the Source Table:

"Total filtered" s the sum of the Highest value in the column based on the 80% Pareto principle explained above.

 

jeyare_0-1649145525213.png

Thank you for a help

 

2 REPLIES 2
v-yetao1-msft
Community Support
Community Support

Hi @jeyare 

Please try this formula to create a calculated table . 

Table 2 =
var _itemfilter=LOOKUPVALUE('Table'[column1],'Table'[name],"item filtered")
var _t=FILTER('Table',[column1]>=_itemfilter && [name]<>"item filtered" )
var _tTotalFilter=ROW("name","Total filtered","column1",SUMX(FILTER(_t,[name]<>"Global Total"),[column1]))
var _global=LOOKUPVALUE('Table'[column1],'Table'[name],"Global Total")
var _t80=ROW("name","80% from the Global Total","column1", _global *0.8)
var _t75=ROW("name","Deviation L(75%)","column1", _global *0.75)
var _t85=ROW("name","Deviation H(85%)","column1", _global *0.85)
return UNION(_t,_tTotalFilter, _t80,_t75,_t85)

The final result is as shown below .

Ailsamsft_0-1649410805678.png

I have attached my pbix file , you can refer to it .

 

Best Regards,
Community Support Team _ Ailsa Tao
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-yetao1-msft 

thx for the designed solution. It works just for a single column in the table. As I noted in my initial post I have table with +100columns. So I can:

1. Clean the Source table by PowerQuery, then I don't need to implement FILTER for the "item filtered". It will save time and the coder rows.

2. The "union" command requires - that the two tables must have the same number of columns. And here I have additional trouble achieving the success within your code.

3. In the Target table I need just show the Pareto rows. No need to show the variables (Global Total, Total filtered, 80% ..., Deviations).

 

But you have the right approach to achieve it. Thank you for your support

 

Jan

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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

Top Solution Authors