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!Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.
Hi,
I have a table with memberships, I want to add a column that always gives the last enddate of a subscription for a specific member.
MEMBERID | SubscriptionEndDate | LastSubscriptionDate |
1 | 10-01-2019 | 10-01-2020 |
1 | 10-01-2020 | 10-01-2020 |
2 | 17-03-2014 | 17-03-2014 |
3 | 01-04-2014 | 18-12-2022 |
3 | 18-12-2022 | 18-12-2022 |
I use the following DAX
Solved! Go to Solution.
@BM_ the equivalent M is following
let
src=Table.FromRows(
Json.Document(
Binary.Decompress(
Binary.FromText(
"Vcu7CQAxEAPRXhQbtJIX7lyL2f7b8Cdz+piZE0KDgqJDA9UecVzxlk59p8krfUtS+YpM/WczqhY=",
BinaryEncoding.Base64
),
Compression.Deflate
)
),
let
_t = ((type nullable text) meta [Serialized.Text = true])
in
type table [MEMBERID = _t, SubscriptionEndDate = _t]
),
CT = Table.TransformColumnTypes(
src,
{{"MEMBERID", Int64.Type}, {"SubscriptionEndDate", type date}}
),
AC = Table.AddColumn(
CT,
"LastSubscriptionDate",
each List.Max(Table.SelectRows(CT, (q) => q[MEMBERID] = [MEMBERID])[SubscriptionEndDate])
)
in
AC
@BM_ the equivalent M is following
let
src=Table.FromRows(
Json.Document(
Binary.Decompress(
Binary.FromText(
"Vcu7CQAxEAPRXhQbtJIX7lyL2f7b8Cdz+piZE0KDgqJDA9UecVzxlk59p8krfUtS+YpM/WczqhY=",
BinaryEncoding.Base64
),
Compression.Deflate
)
),
let
_t = ((type nullable text) meta [Serialized.Text = true])
in
type table [MEMBERID = _t, SubscriptionEndDate = _t]
),
CT = Table.TransformColumnTypes(
src,
{{"MEMBERID", Int64.Type}, {"SubscriptionEndDate", type date}}
),
AC = Table.AddColumn(
CT,
"LastSubscriptionDate",
each List.Max(Table.SelectRows(CT, (q) => q[MEMBERID] = [MEMBERID])[SubscriptionEndDate])
)
in
AC
I really Liked your approach!
I want to rewrite my below DAX Calculated column in M Query but was not sure how to write the Earlier in this funtion, can you help?
RANKX (
FILTER (ALL('0410 tbl'),
'0410 tbl'[GP] = EARLIER('0410 tbl'[GP])
&& '0410 tbl'[ID] = EARLIER('0410 tbl'[ID])
&& '0410 tbl'[DATEDIFF] = EARLIER('0410 tbl'[DATEDIFF])
&& '0410 tbl'[Start_Date] >= _start_date
&& '0410 tbl'[Start_Date] <= _end_date
),
'0410 tbl'[Start_Date],
,
ASC,
Dense
)
Hi @NilR ,
can you please provide some sample data with the input and desired output data please?
Imke Feldmann (The BIccountant)
If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!
How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries
I gave up and then added an statement to the sql and created something similar in my sql. Thank you!
DENSE_RANK() OVER (PARTITION BY.....)
@NilR my M is not as good as my SQL and /DAX. I can provide you a M but might not be optimized and scalable. Hence, looping
@NilR For this RANKX example, you can do something similar in Power Query by filtering Start_Date, grouping on the GP, ID, and DATEDIFF columns, sorting the result by Start_Date, and then adding an index column.
Hi @BM_
You could use Table.SelectRows() function to keep the "true" data. Then use Table.Group() to get the result.
In Power Query Editor=> Home , select Group By , then group by Column [MEMBERID], then add two aggregations . You can get a result like the screenshot below.
Then expand the column [all] , you will get a table like this :
Go back to Desktop view, add the columns [MEMBERID] [all.SubscriptionEndDate] [last] to a table visual .
I have attached my pbix file , you can refer to it.
Best Regard
Community Support Team _ Ailsa Tao
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @BM_ ,
Please have a look at the following video and I think it should be pretty much what you are looking for.
Hope this helps.
Thank you,
Vishesh Jain
Proud to be a Super User!
Hi @amitchandak thanks for sharing. My file has over 250k records, so this method is going to cost in performance. See the comments on the blog. Also I don't know how I would include the MAX function in this way.
@BM_ , You do not have the alternative of EARLIER there. create one more copy of the table and merge
refer, if needed
https://eriksvensen.wordpress.com/2019/02/28/powerquery-replicate-doing-an-excel-vlookup-in-m/
Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!
Check out the September 2025 Power BI update to learn about new features.