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

Learning DAX

How do I create a measure calculating the difference in Money between Reveneu and Disbursement ONLY when Revenue > 0, i.e. when Revenue = 0 no subtraction should be made?

 

CustomerMoneyTypeDateMonth
1 Revenue201701
2365Revenue201702
3 Revenue201703
3 Revenue201704
2152Revenue201705
5325Revenue201706
4 Revenue201707
1 Disbursement201701
218Disbursement201702
332Disbursement201703
3 Disbursement201704
254Disbursement201705
5 Disbursement201706
469Disbursement201707
1 ACCEPTED SOLUTION
v-ljerr-msft
Employee
Employee

Hi @David_1970,

 

If I understand you correctly, you should be able to firstly use the formula below to create a new calculate column in your table.

Diff = 
IF (
    Table1[Type] = "Revenue"
        && Table1[Money] > 0,
    Table1[Money]
        - CALCULATE (
            SUM ( Table1[Money] ),
            FILTER (
                ALL ( Table1 ),
                Table1[Customer] = EARLIER ( Table1[Customer] )
                    && Table1[Type] = "Disbursement"
                    && Table1[DateMonth] = EARLIER ( Table1[DateMonth] )
            )
        )
)

c1.PNG

 

Then use the formula below to create a new measure to calculate the difference in Money between Revenue and Disbursement in your scenario. Smiley Happy

Measure = SUM(Table1[Diff])

m1.PNG

 

Note: You will need to replace Table1 with your real table name in the formulas above.

 

Regards

View solution in original post

3 REPLIES 3
v-ljerr-msft
Employee
Employee

Hi @David_1970,

 

If I understand you correctly, you should be able to firstly use the formula below to create a new calculate column in your table.

Diff = 
IF (
    Table1[Type] = "Revenue"
        && Table1[Money] > 0,
    Table1[Money]
        - CALCULATE (
            SUM ( Table1[Money] ),
            FILTER (
                ALL ( Table1 ),
                Table1[Customer] = EARLIER ( Table1[Customer] )
                    && Table1[Type] = "Disbursement"
                    && Table1[DateMonth] = EARLIER ( Table1[DateMonth] )
            )
        )
)

c1.PNG

 

Then use the formula below to create a new measure to calculate the difference in Money between Revenue and Disbursement in your scenario. Smiley Happy

Measure = SUM(Table1[Diff])

m1.PNG

 

Note: You will need to replace Table1 with your real table name in the formulas above.

 

Regards

Hi again,

 

By the way, what is the ALL-function all about - I mean, isn't that function supposed to eliminate any filters?

 

But since we are dealing with a calculated column (not a measure) there should be no filter context, or have I mixed things up?

Hi @David_1970,

 

You're right! The ALL function is not needed here. Thanks for pointing it out. Smiley Happy

 

Regards

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.