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

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

Reply
E_K_
Helper III
Helper III

Percentile calculation that ignores outside filters

Hi

How do I edit this DAX code (used to calculate percentile in terms of [Client] experiencing [ID]) to ensure that the only filter it pays attention to is [Start Time]?

I plan to plot the output value by the Start Time column. I want the end values to stay constant even when you apply filters. eg filter on a single client, to show if that client's straight [ID] volume falls below or above the xth percentile of incident volume for that month.

 

Can you help? I have 2 approaches outlined below but ino matter what I try (ALLEXCEPT, ALL) I am unable to ignore filters (other than start time).

 

Sample data (there are lots more columns that I would want to filter on and have the output values stay constant , but for example):

IDClientStart Time
1a02/01/2021 05:00
1b02/01/2021 05:00
1c02/01/2021 05:00
2b02/01/2021 00:00
2c02/01/2021 00:00
3b01/01/2021 00:00

 

Approach 1#

Testing Top .5% =
VAR allClients = VALUES('Incidents'[Client])
VAR SummaryTable =
    ADDCOLUMNS (
        VALUES('Incidents'[Client]),
        "Distinct ID Count",
        CALCULATE(
            SUMX(
                DISTINCT('Incidents'[Client]),
                CALCULATE(DISTINCTCOUNT('Incidents'[ID])+0)
            )
    )
RETURN
    CALCULATE(
        PERCENTILEX.INC (
            SummaryTable,
            [Distinct ID Count],
            0.995), ALLSELECTED('Incidents'[Client]))

Approach 2#

Top .5% =
VAR SummaryTable =
    SUMMARIZE (
        'Incidents',
        'Incidents'[Client],
        "Distinct ID Count", CALCULATE(SUMX(DISTINCT('Incidents'[Client]), CALCULATE(DISTINCTCOUNT('Incidents'[ID])+0)))
    )

RETURN
    CALCULATE(
        PERCENTILEX.INC (
            (SummaryTable),
            [Distinct ID Count],
            0.995
        ),
        ALLSELECTED('Incidents'),
        'Incidents'[Start Time] = MAX('Incidents'[Start Time]))
5 REPLIES 5
Kaii
Helper I
Helper I

Hey I am having the same problem.
Have you find any solution yet?

Thanks

E_K_
Helper III
Helper III

Unfortunately not - when I filter by client the output value actually just reverts to some kind of percentile calculation for all the [ID] that the client is on rather than keeping constant. Its like it limits the group being calculated for to only clients that show in [ID] that your selected client also shows up in. Any other ideas?

Unfiltered on client: 

E_K__1-1680612611665.png

Filtered on client - the Top .5% value moves with the filter:

E_K__0-1680612585424.png

 

bhelou
Responsive Resident
Responsive Resident

Dear , 

Can you share some sample of the PBIX File , it will be helpfull to test it out and see what is happenieng . 

Regards , 


bhelou
Responsive Resident
Responsive Resident

 

 

RETURN CALCULATE(
        PERCENTILEX.INC (
            SummaryTable,
            [Distinct ID Count],
            0.995),
        ALLEXCEPT('Incidents', 'Incidents'[Start Time]))

 


see if this works with you ALLEXCEPT in approach 2 

 

 

 

I am having the same problem, but your measure doesnt really work....

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

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

March2025 Carousel

Fabric Community Update - March 2025

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

Top Solution Authors