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
JJJL
Frequent Visitor

how to get onboarding rate with dax?

Hi, 

I need to get the onboarding rate via dax but I can't do it correctly.

dataset as belows, I can't put all raw data here.

step1. get AuM group by Client , short name, yymm and sort , like picture 1

step2. calculate onborading rate like pricture 1(Excel), B,C,E,F22 is formula, the result I need is B,C,E,F21

regionClientShortAuMyymm
TWALL LIFE Insu(G) GSF0.03Feb-25
TWALL LIFE Insu(G) EED0.04Feb-25
TWALL LIFE Insu(I) AI0.05Feb-25
TWALL LIFE Insu(G) GSF0.05Feb-25
TWALL LIFE Insu(G) US SD0.05Feb-25
TWALL LIFE Insu(I) GMAC0.08Feb-25
TWALL LIFE Insu(G) US SD0.08Feb-25
TWALL LIFE Insu(I) AI0.11Feb-25
TWALL LIFE Insu(I) AI0.22Feb-25
TWALL LIFE Insu(G) EED0.22Feb-25
TWALL LIFE Insu(I) GIC0.24Feb-25
TWALL LIFE Insu(I) GMAC0.28Feb-25
TWALL LIFE Insu(I) AI0.32Feb-25
TWALL LIFE Insu(G) Glb Inc0.34Feb-25
TWALL LIFE Insu(G) IG0.49Feb-25
TWALL LIFE Insu(I) OIN0.60Feb-25
TWALL LIFE Insu(G) US SD0.77Feb-25
TWALL LIFE Insu(I) GIC1.48Feb-25
TWALL LIFE Insu(I) AI1.87Feb-25
TWALL LIFE Insu(G) IG2.67Feb-25
TWALL LIFE Insu(G) EED2.77Feb-25
TWALL LIFE Insu(I) GIC2.83Feb-25
TWALL LIFE Insu(G) IG5.55Feb-25
TWALL LIFE Insu(G) IG5.59Feb-25
TWALL LIFE Insu(G) Glb Inc14.52Feb-25
TWALL LIFE Insu(G) GAI15.28Feb-25
TWALL LIFE Insu(G) Glb Inc17.11Feb-25
TWALL LIFE Insu(I) OIN36.69Feb-25
TWALL LIFE Insu(G) IG86.40Feb-25
TWALL LIFE Insu(G) IG215.49Feb-25
TWALL LIFE Insu(G) IG428.80Feb-25
TWALL LIFE Insu(G) IG670.47Feb-25
TWALL LIFE Insu(G) IG2581.20Feb-25
TWAN Inv Advisors Co., Ltd.(G) US SD0.00Feb-25
TWAN Inv Advisors Co., Ltd.(G) EED0.01Feb-25
TWAN Inv Advisors Co., Ltd.(I) BS GlbEQ0.02Feb-25
TWAN Inv Advisors Co., Ltd.(I) CFT0.02Feb-25
TWAN Inv Advisors Co., Ltd.(I) US IGC0.03Feb-25
TWAN ...(I) US IGC0.04Feb-25
TWAN ...(G) GSF0.06Feb-25
TWAN ...(I) GMAC0.06Feb-25
TWAN ...(I) GIC0.07Feb-25
TWAN ...(I) US IGC0.07Feb-25
TWAN ...(I) AI0.08Feb-25
TWAN ...(I) AI0.09Feb-25
TWAN ...(G) EED0.14Feb-25
TWAN ...(G) GSF0.18Feb-25
TWAN ...(G) GSF0.19Feb-25
TWAN ...(I) AI0.20Feb-25
TWAN ...(I) GIC0.22Feb-25
TWAN ...(I) AI0.28Feb-25
TWAN ...(I) AI0.28Feb-25
TWAN ...(I) AI0.34Feb-25
TWAN ...(G) US SD0.34Feb-25
TWBNP PS CAR  LIFE Insu(G) IG2.41Jan-25
TWBNP PS CAR  LIFE Insu(G) Glb Inc2.55Jan-25
TWBNP PS CAR  LIFE Insu(G) Glb Inc8.32Jan-25
TWBNP PS CAR  LIFE Insu(G) Glb Inc16.58Jan-25
TWBNP PS CAR  LIFE Insu(G) IG40.68Jan-25
TWBNP PS CAR  LIFE Insu(G) IG204.64Jan-25
TWBNP PS CAR  LIFE Insu(G) IG281.09Jan-25
TWCY United BK(G) GSF0.02Jan-25
TWCY United BK(I) OIN0.02Jan-25
TWCY United BK(I) AI0.03Jan-25
TWCY United BK(G) US SD0.04Jan-25
TWCY United BK(G) EED0.04Jan-25
TWCY United BK(I) AI0.05Jan-25
TWCY United BK(G) Glb Inc0.06Jan-25
TWCY United BK(I) AI0.08Jan-25
TWCY United BK(G) US SD0.08Jan-25
TWCY United BK(G) Glb Inc0.09Jan-25
TWCY United BK(G) EED0.09Jan-25
TWCY United BK(G) IG0.12Jan-25
TWCY United BK(G) GSF0.12Jan-25
TWCY United BK(G) GAI0.15Jan-25
TWCY United BK(G) IG0.17Jan-25
TWCY United BK(G) Glb Inc0.20Jan-25
TWCY United BK(I) AI0.20Jan-25
TWCY United BK(I) AI0.21Jan-25
TWCY United BK(I) AI0.22Jan-25
TWCY United BK(G) Glb Inc0.25Jan-25
TWCY United BK(G) GAI0.25Jan-25
TWCY United BK(I) GMAC0.26Jan-25
TWCY United BK(G) US SD0.35Jan-25
TWCY United BK(I) OIN0.37Jan-25
TWCY United BK(I) GMAC0.38Jan-25
TWCY United BK(I) CFT0.48Jan-25
TWCY United BK(G) EED0.54Jan-25
TWCY United BK(I) AI0.70Jan-25
TWCY United BK(G) US SD0.73Jan-25
TWCY United BK(I) AI0.85Jan-25
TWCY United BK(G) US SD0.86Jan-25
TWCY United BK(G) IG1.30Jan-25
TWCY United BK(G) IG1.41Jan-25

 

 

Screenshot 2025-03-25 152303.png

10 REPLIES 10
v-hashadapu
Community Support
Community Support

Hi @JJJL , hope you are doing great. May we know if your issue is solved or if you are still experiencing difficulties. Please share the details as it will help the community, especially others with similar issues.

v-hashadapu
Community Support
Community Support

Hi @JJJL , We are closing this thread as we haven't heard from you in a while, according to our follow-up policy. If you have any more questions, please start a new thread on the Microsoft Fabric Community Forum. We will be happy to assist you! Thank you for being part of the community!

v-hashadapu
Community Support
Community Support

Hi @JJJL , Please let us know if your issue is solved. If it is, consider marking the answer that helped 'Accept as Solution', so others with similar queries can find it easily. If not, please share the details.
Thank you.

v-hashadapu
Community Support
Community Support

Hi @JJJL , Please let us know if your issue is solved. If it is, consider marking the answer that helped 'Accept as Solution', so others with similar queries can find it easily. If not, please share the details.
Thank you.

bhanu_gautam
Super User
Super User

@JJJL , Try using

Create a new table to aggregate AuM by Client, Short, and yymm:

AggregatedAuM =
SUMMARIZE(
'YourTable',
'YourTable'[Client],
'YourTable'[Short],
'YourTable'[yymm],
"TotalAuM", SUM('YourTable'[AuM])
)

 

The onboarding rate can be calculated as the percentage change in AuM from one period to the next. Assuming you want to calculate the month-over-month change, you can use the following DAX measure:

OnboardingRate =
VAR CurrentMonthAuM =
CALCULATE(
SUM('YourTable'[AuM]),
FILTER(
'YourTable',
'YourTable'[yymm] = MAX('YourTable'[yymm])
)
)
VAR PreviousMonthAuM =
CALCULATE(
SUM('YourTable'[AuM]),
FILTER(
'YourTable',
'YourTable'[yymm] = EDATE(MAX('YourTable'[yymm]), -1)
)
)
RETURN
DIVIDE(CurrentMonthAuM - PreviousMonthAuM, PreviousMonthAuM, 0)




Did I answer your question? Mark my post as a solution! And Kudos are appreciated

Proud to be a Super User!




LinkedIn






thank you so much for your reply soon😀

 

It is not a concept of MoM, I think the picture is more clearly as below, when I choice Feb. 2025, it will show H19:J23, when I choice Jan, 2025, it will show K19:M23 in power bi Matrixes table.

I will create a slicer in Power bi interface.

Screenshot 2025-03-25 161704.pngScreenshot 2025-03-25 162537.png

Hi @JJJL , Thank you for reaching out to the Microsoft Community Forum.

 

Please try below steps:

  1. First, we need to aggregate the AuM by Client, Short, and yymm. This table will serve as the foundation for ranking and calculations, ensuring we have the summed AuM for each combination.

AggregatedAuM =

SUMMARIZE(

    'YourTable',

    'YourTable'[Client],

    'YourTable'[Short],

    'YourTable'[yymm],

    "TotalAuM", SUM('YourTable'[AuM])

)

  1. Next, add a calculated column to the AggregatedAuM table to rank the funds (Short) within each Client and yymm based on their AuM. This ensures the top 3 and top 6 funds are identified correctly for the selected period.

RankByAuM =

RANKX(

    FILTER(

        ALLSELECTED(AggregatedAuM),

        AggregatedAuM[Client] = EARLIER(AggregatedAuM[Client]) &&

        AggregatedAuM[yymm] = EARLIER(AggregatedAuM[yymm])

    ),

    AggregatedAuM[TotalAuM],

    ,

    DESC,

    Dense

)

  1. We need a measure to calculate the total AuM for the current Client and yymm, which will be the denominator for the onboarding rate. This measure ensures the total is scoped correctly within the Matrix and slicer context.

TotalAuM =

CALCULATE(

    SUM('YourTable'[AuM]),

    ALLEXCEPT('YourTable', 'YourTable'[Client], 'YourTable'[yymm])

)

  1. Create measures to sum the AuM for the top 3 and top 6 funds based on the RankByAuM column. These will be the numerators for the onboarding rate calculations.

Top3AuM =

CALCULATE(

    SUM(AggregatedAuM[TotalAuM]),

    FILTER(

        AggregatedAuM,

        AggregatedAuM[RankByAuM] <= 3

    )

)

 

Top6AuM =

CALCULATE(

    SUM(AggregatedAuM[TotalAuM]),

    FILTER(

        AggregatedAuM,

        AggregatedAuM[RankByAuM] <= 6

    )

)

  1. Now, calculate the onboarding rates by dividing the top 3 and top 6 AuM by the total AuM. These measures will give you the percentages shown in your screenshot.

OnboardingRate_Top3 =

DIVIDE(

    [Top3AuM],

    [TotalAuM],

    0

)

 

OnboardingRate_Top6 =

DIVIDE(

    [Top6AuM],

    [TotalAuM],

    0

)

Set up your Power BI report. Add a slicer for yymm to filter the data. Create three Matrix visuals: one for all funds (Rows: Client and Short, Values: TotalAuM), one for the top 3 funds (filter RankByAuM <= 3, Rows: Client and Short, Values: TotalAuM and OnboardingRate_Top3), and one for the top 6 funds (filter RankByAuM <= 6, Rows: Client and Short, Values: TotalAuM and OnboardingRate_Top6). Add a Card visual with TotalAuM to show the total AuM for the selected Client and yymm. Format the onboarding rate measures as percentages.

 

If this helped solve the issue, please consider marking it 'Accept as Solution' so others with similar queries may find it more easily. If not, please share the details, always happy to help.
Thank you.

Thank you for your solution. 

The result I need is not aum rate, I need is count aum and get rate.

 

Here is my solution, but I'm not sure how to improve it.

 

Step 1 is create table as below:

Total_AUM_By_Short_Name_Region_YYMM =
SUMMARIZE(
    'sheet 1',
    'sheet 1'[Vehicle Short Name],
    'sheet 1'[YYMM],
    'sheet 1'[Client Name],
    'sheet 1'[Region],
    "Total_AUM", SUM('sheet 1'[AuM]
)
 

The second step is to create a table as shown below: the summary should return a table similar to your solution, and I will assign rankings to obtain the top 10 AUM and all data.

 

Top_10_AUM =
VAR RankedClients =
    ADDCOLUMNS(
        SUMMARIZE(
            'sheet 1',
            'sheet 1'[Region],
            'sheet 1'[Client Name],
            'sheet 1'[YYMM],
            "Total_AUM", SUM('sheet 1'[AuM])
        ),
        "Rank", RANKX(
            FILTER(
                SUMMARIZE(
                    'sheet 1',
                    'sheet 1'[Client Name],
                    'sheet 1'[Region],
                    'sheet 1'[YYMM],
                   
                    "Total_AUM", SUM('sheet 1'[AuM])
                ),
                'sheet 1'[Region] = EARLIER('sheet 1'[Region]) &&
                'sheet 1'[YYMM] = EARLIER('sheet 1'[YYMM])
            ),
            [Total_AUM],
            ,
            DESC
        )
    )
RETURN
    FILTER(RankedClients, [Rank] <= 10)
 
 
step 3 is create table to get the aum number from table 
Total_AUM_By_Short_Name_Region_YYMM (top 10)
 
Filtered_AUM_By_Top_Clients =
FILTER(
    Total_AUM_By_Short_Name_Region_YYMM,
    'Total_AUM_By_Short_Name_Region_YYMM'[Client Name] & 'Total_AUM_By_Short_Name_Region_YYMM'[YYMM] & 'Total_AUM_By_Short_Name_Region_YYMM'[region]IN
        SELECTCOLUMNS(
            Top_10_AUM,
            "CombinedKey",
            [Client Name] & [YYMM] &[Region]
        )
)
 
the final step is count how many rows in the table Filtered_AUM_By_Top_Clients group by short name,yymm,region
 
Client_Count_By_Short_Name_Top_10_AUM =
VAR ShortNames = VALUES('sheet 1'[Vehicle Short Name])
VAR YYMM_Region =
    SUMMARIZE(
        Filtered_AUM_By_Top_Clients,
        'Filtered_AUM_By_Top_Clients'[YYMM],
        'Filtered_AUM_By_Top_Clients'[Region]
    )

VAR AllCombinations =
    CROSSJOIN(ShortNames, YYMM_Region)

RETURN
    ADDCOLUMNS(
        AllCombinations,
        "Client_Count",
        COALESCE(
            CALCULATE(
                COUNTROWS(Filtered_AUM_By_Top_Clients),
                Filtered_AUM_By_Top_Clients[Vehicle Short Name] = EARLIER('sheet 1'[Vehicle Short Name]),
                Filtered_AUM_By_Top_Clients[YYMM] = EARLIER('Filtered_AUM_By_Top_Clients'[YYMM]),
                Filtered_AUM_By_Top_Clients[Region] = EARLIER('Filtered_AUM_By_Top_Clients'[Region]),
                Filtered_AUM_By_Top_Clients[total_AuM] >= 0
               
            ),
            0
        ),  
        "Client_Rate",
        COALESCE(
            DIVIDE(
                CALCULATE(
                    COUNTROWS(Filtered_AUM_By_Top_Clients),
                    Filtered_AUM_By_Top_Clients[Vehicle Short Name] = EARLIER('sheet 1'[Vehicle Short Name]),
                    Filtered_AUM_By_Top_Clients[YYMM] = EARLIER('Filtered_AUM_By_Top_Clients'[YYMM]),
                    Filtered_AUM_By_Top_Clients[Region] = EARLIER('Filtered_AUM_By_Top_Clients'[Region]),
                    Filtered_AUM_By_Top_Clients[total_AuM] >= 0
                ),
                10,
                0
            ),
            0
        )
    )
   
The result is as blue mark, is correct, but it seems complicated....
Screenshot 2025-03-28 152057.png 
This is the top 10 algorithms, but I also need the top 20 and 50. I don’t know if there is a better way to write it. My design seems very complicated....🤔

Hi @JJJL , Please check the attached .pbix file for your reference. 

 

If this helped solve the issue, please consider marking it 'Accept as Solution' so others with similar queries may find it more easily. If not, please share the details, always happy to help.
Thank you.

Hi @JJJL , Thank you for reaching out to the Microsoft Community Forum.

 

Please try below:

 

First, we aggregate the AuM by Client Name, Vehicle Short Name, YYMM, and Region. This table summarizes the data and serves as the foundation for all calculations.

Total_AUM_By_Short_Name_Region_YYMM =

SUMMARIZE(

    'sheet 1',

    'sheet 1'[Client Name],

    'sheet 1'[Vehicle Short Name],

    'sheet 1'[YYMM],

    'sheet 1'[Region],

    "Total_AUM", SUM('sheet 1'[AuM])

)

 

Add a calculated column to the 'sheet 1' table to rank clients within each Region and YYMM based on their total AuM. This ranking ensures we can dynamically identify the top N clients.

Rank_Client_AuM =

RANKX(

    FILTER(

        ALLSELECTED('sheet 1'),

        'sheet 1'[Region] = EARLIER('sheet 1'[Region]) &&

        'sheet 1'[YYMM] = EARLIER('sheet 1'[YYMM])

    ),

    CALCULATE(SUM('sheet 1'[AuM])),

    ,

    DESC,

    Dense

)

 

Create a parameter table with values 10, 20, and 50 to allow users to select the top N threshold. This approach ensures flexibility without duplicating logic.

TopN_Parameter =

DATATABLE(

    "TopN", INTEGER,

    {

        {10},

        {20},

        {50}

    }

)

 

Use measures to dynamically count the clients in the top N and calculate the client rate (count divided by the selected top N). This method is efficient as it avoids unnecessary tables and leverages Power BI’s calculation engine.

Client_Count_TopN =

VAR SelectedTopN = SELECTEDVALUE(TopN_Parameter[TopN], 10)

RETURN

CALCULATE(

    COUNTROWS('sheet 1'),

    'sheet 1'[Rank_Client_AuM] <= SelectedTopN,

    'sheet 1'[AuM] >= 0,

    ALLEXCEPT('sheet 1', 'sheet 1'[Vehicle Short Name], 'sheet 1'[YYMM], 'sheet 1'[Region])

)

 

Client_Rate_TopN =

VAR SelectedTopN = SELECTEDVALUE(TopN_Parameter[TopN], 10)

RETURN

DIVIDE(

    [Client_Count_TopN],

    SelectedTopN,

    0

)

 

Add a slicer for YYMM to filter the data. Create a Matrix visual with YYMM and Vehicle Short Name in Rows, Client_Count_TopN and Client_Rate_TopN in Values, and filter Region to SEA. Add a slicer for TopN_Parameter[TopN] to switch between top 10, 20, and 50. Format Client_Rate_TopN as a percentage to match your screenshot.

 

If this helped solve the issue, please consider marking it 'Accept as Solution' so others with similar queries may find it more easily. If not, please share the details, always happy to help.
Thank you.

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.