Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Calling all PBI experts...
I have, what on the surface, looks a straightforward problem but I just can get the right solution.
I have two tables (customer & transactions) which are related by one column - the customer code.
I want to combine the results into one table and agregate the transactions over the periods like this:
So the two questions are...a) how do I get the revenue from my transaction table summarised by year & month and drop it into the appropriate columns (year / month comes from the customer table) and b) how do I apply filtering to the resulting table without losing future periods? i.e. if I create a slicer on the month and select month 2 how do I avoid losing future data from the results?
Any help would be much appreciated.
Solved! Go to Solution.
Hi @AndyTrezise,
Please check out the demo in the attachment.
Since there aren't any continuous dates, I think a date table is needed. For example, it will be hard to get the next month of December 2018 without a date table.
1. Create a date table.
Calendar = CALENDARAUTO()
2. Create a new column of table Customer.
date = date([Year], [Month],1)
3. Establish relationships and change the "Filter direction".
4. Create several measures.
Revenue This Period =
CALCULATE (
SUM ( 'transaction'[Revenue] ),
FILTER (
ALL ( 'transaction' ),
'transaction'[Customer] = MIN ( 'customer'[Customer] )
&& YEAR ( 'transaction'[Date] ) = MIN ( 'customer'[Year] )
&& MONTH ( 'transaction'[Date] ) = MIN ( 'customer'[Month] )
),
ALL ( 'customer' )
)
Revenue P+1 =
CALCULATE (
SUM ( 'transaction'[Revenue] ),
FILTER (
ALL ( 'transaction' ),
'transaction'[Customer] = MIN ( 'customer'[Customer] )
),
NEXTMONTH ( 'Calendar'[Date] ),
ALL ( customer )
)
Revenue P+2 =
CALCULATE (
SUM ( 'transaction'[Revenue] ),
FILTER (
ALL ( 'transaction' ),
'transaction'[Customer] = MIN ( 'customer'[Customer] )
),
DATESINPERIOD (
'Calendar'[Date],
EOMONTH ( MIN ( 'Calendar'[Date] ), 2 ),
-1,
MONTH
),
ALL ( customer )
)
Best Regards,
Dale
Hi @AndyTrezise,
Please check out the demo in the attachment.
Since there aren't any continuous dates, I think a date table is needed. For example, it will be hard to get the next month of December 2018 without a date table.
1. Create a date table.
Calendar = CALENDARAUTO()
2. Create a new column of table Customer.
date = date([Year], [Month],1)
3. Establish relationships and change the "Filter direction".
4. Create several measures.
Revenue This Period =
CALCULATE (
SUM ( 'transaction'[Revenue] ),
FILTER (
ALL ( 'transaction' ),
'transaction'[Customer] = MIN ( 'customer'[Customer] )
&& YEAR ( 'transaction'[Date] ) = MIN ( 'customer'[Year] )
&& MONTH ( 'transaction'[Date] ) = MIN ( 'customer'[Month] )
),
ALL ( 'customer' )
)
Revenue P+1 =
CALCULATE (
SUM ( 'transaction'[Revenue] ),
FILTER (
ALL ( 'transaction' ),
'transaction'[Customer] = MIN ( 'customer'[Customer] )
),
NEXTMONTH ( 'Calendar'[Date] ),
ALL ( customer )
)
Revenue P+2 =
CALCULATE (
SUM ( 'transaction'[Revenue] ),
FILTER (
ALL ( 'transaction' ),
'transaction'[Customer] = MIN ( 'customer'[Customer] )
),
DATESINPERIOD (
'Calendar'[Date],
EOMONTH ( MIN ( 'Calendar'[Date] ), 2 ),
-1,
MONTH
),
ALL ( customer )
)
Best Regards,
Dale
That's fantastic...thank you so much for your help - that's just what I needed.
Cheers
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
| User | Count |
|---|---|
| 37 | |
| 37 | |
| 33 | |
| 32 | |
| 29 |
| User | Count |
|---|---|
| 130 | |
| 88 | |
| 82 | |
| 68 | |
| 64 |