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!To celebrate FabCon Vienna, we are offering 50% off select exams. Ends October 3rd. Request your discount now.
Hello PBI folks,
I have a data in PBI that contains snapshots including movements of specific projects from the start up to date.
I want to have a comparison value that is based on what dates are selected in the two date slicers:
Is there a way to transform the current table below into my expected output?
See sample project below:
Current table in PBI
The expected output for this sample project I want to achieve will be exactly like this:
Sample report is here:
Solved! Go to Solution.
Hi @cruzp
Please create measures.
Stage =
CALCULATE(
SELECTEDVALUE('Table'[STAGE_NAME]),
FILTER(
ALL('Table'),
'Table'[DATE] = MAX('New Date'[new date])
)
)
Old Value =
CALCULATE(
MAX('Table'[STAGE_NAME]),
FILTER(
ALL('Table'),
'Table'[DATE] = MIN('Old Date'[Old date])
)
)
New Value =
CALCULATE(
MAX('Table'[STAGE_NAME]),
FILTER(
ALL('Table'),
'Table'[DATE] = MAX('New Date'[new date])
))
Here is the result.
Regards,
Nono Chen
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @cruzp
Please create measures.
Stage =
CALCULATE(
SELECTEDVALUE('Table'[STAGE_NAME]),
FILTER(
ALL('Table'),
'Table'[DATE] = MAX('New Date'[new date])
)
)
Old Value =
CALCULATE(
MAX('Table'[STAGE_NAME]),
FILTER(
ALL('Table'),
'Table'[DATE] = MIN('Old Date'[Old date])
)
)
New Value =
CALCULATE(
MAX('Table'[STAGE_NAME]),
FILTER(
ALL('Table'),
'Table'[DATE] = MAX('New Date'[new date])
))
Here is the result.
Regards,
Nono Chen
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @cruzp
For your question, here is the method I provided:
Here's some dummy data
“Table”
Create new tables.
The date table is used to create the slicer.
Old Date = SELECTCOLUMNS('Table', "Old date", 'Table'[DATE])
New Date = SELECTCOLUMNS('Table', "new date", 'Table'[DATE])
Here is the result table.
Result Table =
SUMMARIZE(
'Table',
"Project Code",
SELECTEDVALUE('Table'[PROJECT_BK]),
"Stage",
CALCULATE(
SELECTEDVALUE('Table'[STAGE_NAME]),
FILTER(
ALL('Table'),
'Table'[DATE] = MAX('New Date'[new date])
)
),
"Start Date",
SELECTEDVALUE('Table'[START_DATE]),
"End Date",
SELECTEDVALUE('Table'[END_DATE]),
"Old Value",
CALCULATE(
SELECTEDVALUE('Table'[STAGE_NAME]),
FILTER(
ALL('Table'),
'Table'[DATE] = MIN('Old Date'[Old date])
)
),
"New Value",
CALCULATE(
SELECTEDVALUE('Table'[STAGE_NAME]),
FILTER(
ALL('Table'),
'Table'[DATE] = MAX('New Date'[new date])
)
)
)
Here is the result.
Regards,
Nono Chen
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @Anonymous thanks for the suggestion. is there a way to have it without using summarize table? like a more straight forward approach? because i will be adding more columns in the table