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

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
setayesh-
New Member

highest total fee

We have a payment assistance system and we charge a fee for each transaction. The fee amount varies depending on the user and the transaction amount. Now, I want to calculate the total fees received for each day, and then find the day with the highest total fee along with the amount. However, every query I try gives me the highest fee for a single transaction, not the day with the highest total.

1 ACCEPTED SOLUTION
MarkLaf
Memorable Member
Memorable Member

This is relatively straightforward to do with just measures and INDEX.

 

First, quick overview of my test data and model. Will share the M/DAX for generating these at bottom of post if interested.

 

I generated 10k rows of test data, Sales, in Power Query similar to below (all dates in 2024):

 

Sales

AmountDate
106.8110/19/2024
101.29/29/2024
114.361/17/2024
26.847/15/2024
17.998/25/2024
258.978/27/2024
160.074/17/2024
25.356/13/2024
64.952/11/2024
229.433/1/2024
232.9411/29/2024
30.1510/1/2024
151.414/16/2024
259.581/18/2024
190.7112/1/2024
86.7711/20/2024
20.948/13/2024
148.3210/5/2024
71.592/27/2024
1415/22/2024

 

I made a calculated table, Dates, marking as a date table and relating to Sales.

 

So, my model looks like: 

 

MarkLaf_0-1746122564183.png

 

It sounds like you want to display the 'Top Date' by SUM( Sales[Amount] ) and also display said amount, something equivalent to: SUM( Sales[Amount] ) where Date = 'Top Date'.

 

Here are measures to achieve this:

 

Top Date = 
VAR _topDate = 
    INDEX( 
        1, 
        SUMMARIZECOLUMNS( Dates[Date], "SalesOfDay", CALCULATE( SUM( Sales[Amount] ) ) ), 
        ORDERBY( [SalesOfDay], DESC ) 
    )
RETURN
CALCULATE( VALUES( Dates[Date] ), _topDate )

 

Top Amount = 
VAR _topDate = 
    INDEX( 
        1, 
        SUMMARIZECOLUMNS( Dates[Date], "SalesOfDay", CALCULATE( SUM( Sales[Amount] ) ) ), 
        ORDERBY( [SalesOfDay], DESC ) 
    )
RETURN
CALCULATE( SUM( Sales[Amount] ) , _topDate )

 

As you can see, the initial calculation of the 'Top Date' is handled the same for each measure using INDEX.

 

To showcase how these work. Here is a quick gif of the measures in cards, along with Dates[Month] slicing and a regular sorted table to validate the top values from the measures.

 

MarkLaf_2-1746123736047.gif

 

Code for generating tables if interested:

 

Sales (Power Query)

 

let
    Source = List.Generate( 
        ()=>0, each _ < 10000, each _ + 1, 
        each { 
            Number.Round( Number.RandomBetween( 10, 300 ), 2 ), 
            Date.From( Number.RoundDown( Number.RandomBetween( 
                Int64.From( #date(2024,1,1) ), 
                Int64.From( #date(2024,12,31) ) + 0.99999 
            ) ) )
        } 
    ),
    ToTable = Table.FromRows( Source, type table [ Amount = Currency.Type, Date = date ] )
in
    ToTable

 

 

Dates (DAX)

 

Dates = 
GENERATE(
    CALENDARAUTO(),
    VAR _dt = [Date]
    VAR _yr = YEAR( _dt )
    VAR _qr = QUARTER( _dt )
    VAR _moNo = MONTH( _dt )
    VAR _mo = FORMAT( _dt, "mmm" )
    RETURN
    ROW(
        "Year",_yr,
        "Quarter",_qr,
        "Month No",_moNo,
        "Month",_mo
    )
)

 

View solution in original post

6 REPLIES 6
v-karpurapud
Community Support
Community Support

Hi @setayesh- 

I wanted to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions. If my response has addressed your query, please accept it as a solution and give a 'Kudos' so other members can easily find it.

Thank you.

 

v-karpurapud
Community Support
Community Support

Hi @setayesh- 

We have not received a response from you regarding the query and were following up to check if you have found a resolution from the information provided below. If you find the response helpful, please mark it as the accepted solution and provide kudos, as this will help other members with similar queries.

Thank You!

v-karpurapud
Community Support
Community Support

Hi @setayesh- 

Could you please confirm if your query have been resolved the solution provided by @MarkLaf , @Amar_Kumar and @anilelmastasi ? If they have, kindly mark the helpful response and accept it as the solution. This will assist other community members in resolving similar issues more efficiently.

Thank you

MarkLaf
Memorable Member
Memorable Member

This is relatively straightforward to do with just measures and INDEX.

 

First, quick overview of my test data and model. Will share the M/DAX for generating these at bottom of post if interested.

 

I generated 10k rows of test data, Sales, in Power Query similar to below (all dates in 2024):

 

Sales

AmountDate
106.8110/19/2024
101.29/29/2024
114.361/17/2024
26.847/15/2024
17.998/25/2024
258.978/27/2024
160.074/17/2024
25.356/13/2024
64.952/11/2024
229.433/1/2024
232.9411/29/2024
30.1510/1/2024
151.414/16/2024
259.581/18/2024
190.7112/1/2024
86.7711/20/2024
20.948/13/2024
148.3210/5/2024
71.592/27/2024
1415/22/2024

 

I made a calculated table, Dates, marking as a date table and relating to Sales.

 

So, my model looks like: 

 

MarkLaf_0-1746122564183.png

 

It sounds like you want to display the 'Top Date' by SUM( Sales[Amount] ) and also display said amount, something equivalent to: SUM( Sales[Amount] ) where Date = 'Top Date'.

 

Here are measures to achieve this:

 

Top Date = 
VAR _topDate = 
    INDEX( 
        1, 
        SUMMARIZECOLUMNS( Dates[Date], "SalesOfDay", CALCULATE( SUM( Sales[Amount] ) ) ), 
        ORDERBY( [SalesOfDay], DESC ) 
    )
RETURN
CALCULATE( VALUES( Dates[Date] ), _topDate )

 

Top Amount = 
VAR _topDate = 
    INDEX( 
        1, 
        SUMMARIZECOLUMNS( Dates[Date], "SalesOfDay", CALCULATE( SUM( Sales[Amount] ) ) ), 
        ORDERBY( [SalesOfDay], DESC ) 
    )
RETURN
CALCULATE( SUM( Sales[Amount] ) , _topDate )

 

As you can see, the initial calculation of the 'Top Date' is handled the same for each measure using INDEX.

 

To showcase how these work. Here is a quick gif of the measures in cards, along with Dates[Month] slicing and a regular sorted table to validate the top values from the measures.

 

MarkLaf_2-1746123736047.gif

 

Code for generating tables if interested:

 

Sales (Power Query)

 

let
    Source = List.Generate( 
        ()=>0, each _ < 10000, each _ + 1, 
        each { 
            Number.Round( Number.RandomBetween( 10, 300 ), 2 ), 
            Date.From( Number.RoundDown( Number.RandomBetween( 
                Int64.From( #date(2024,1,1) ), 
                Int64.From( #date(2024,12,31) ) + 0.99999 
            ) ) )
        } 
    ),
    ToTable = Table.FromRows( Source, type table [ Amount = Currency.Type, Date = date ] )
in
    ToTable

 

 

Dates (DAX)

 

Dates = 
GENERATE(
    CALENDARAUTO(),
    VAR _dt = [Date]
    VAR _yr = YEAR( _dt )
    VAR _qr = QUARTER( _dt )
    VAR _moNo = MONTH( _dt )
    VAR _mo = FORMAT( _dt, "mmm" )
    RETURN
    ROW(
        "Year",_yr,
        "Quarter",_qr,
        "Month No",_moNo,
        "Month",_mo
    )
)

 

Amar_Kumar
Resolver I
Resolver I

Hi @setayesh- 

Step 1: Total Fees Per Day (Calculated Table or Measure)

You likely already have a column like TransactionDate and a FeeAmount.

Let’s define a measure to calculate total fees per day:

TotalFeesPerDay := 

SUMMARIZE(

    Transactions, 

    Transactions[TransactionDate], 

    "TotalFee", SUM(Transactions[FeeAmount])

)

 

But since you need to identify the max day, you want a measure instead:

 

Step 2: Get Day with Highest Total Fee (Final DAX Measure)

Here’s the optimized DAX measure:

DayWithHighestTotalFee :=

VAR SummaryTable =

    SUMMARIZE(

        Transactions,

        Transactions[TransactionDate],

        "DailyTotalFee", SUM(Transactions[FeeAmount])

    )

VAR MaxRow =

    TOPN(

        1,

        SummaryTable,

        [DailyTotalFee], DESC

    )

RETURN

    SELECTCOLUMNS(

        MaxRow,

        "Date", Transactions[TransactionDate],

        "TotalFee", [DailyTotalFee]

    )

This returns a single-row table with the date and fee.

 

If you want two separate measures (e.g., one for the date and one for the amount), you can split them:

MaxTotalFeeAmount :=

MAXX(

    SUMMARIZE(

        Transactions,

        Transactions[TransactionDate],

        "DailyFee", SUM(Transactions[FeeAmount])

    ),

    [DailyFee]

)

 

DateWithMaxFee :=

CALCULATE(

    MAX(Transactions[TransactionDate]),

    FILTER(

        ADDCOLUMNS(

            VALUES(Transactions[TransactionDate]),

            "DailyFee", CALCULATE(SUM(Transactions[FeeAmount]))

        ),

        [DailyFee] = [MaxTotalFeeAmount]

    )

)

 

anilelmastasi
Solution Supplier
Solution Supplier

Hello @setayesh- ,

 

To solve this correctly in Power BI (or any SQL/DAX-based environment), you need to aggregate the total fees per day first, and then find the day with the maximum total. Here’s how you can do this in DAX, assuming you have a table called Transactions with at least the following columns:

Transactions[TransactionDate]
Transactions[Fee]

 

This calculates total fees per day but doesn’t yet tell you which day is the maximum:

TotalFeesPerDay =
SUMX(
VALUES(Transactions[TransactionDate]),
CALCULATE(SUM(Transactions[Fee]))
)

Create a calculated table for daily totals:
DailyFeeSummary =
SUMMARIZE(
Transactions,
Transactions[TransactionDate],
"TotalFee", SUM(Transactions[Fee])
)

 

Create a measure to find the max fee day

MaxFeeDayAmount =
MAXX(DailyFeeSummary, [TotalFee])

 

IF you want to create a measure to get the date of that maximum fee:

MaxFeeDay =
CALCULATE(
MAX(Transactions[TransactionDate]),
FILTER(
DailyFeeSummary,
[TotalFee] = [MaxFeeDayAmount]
)
)

 

If this solved your issue, please mark it as the accepted solution.

 

Helpful resources

Announcements
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 Power BI Update Carousel

Power BI Monthly Update - June 2025

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

June 2025 community update carousel

Fabric Community Update - June 2025

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

Top Solution Authors
Users online (27,901)