Forum Discussion
Anonymous
8 years agoNot applicable
Reform table
I have a data that records the member upgrade assessment of our member as below: customer date prev_member_level current_member_level John 1Jan2017 Classic ...
- 8 years ago
HI Anonymous
This calculated table is getting close. There is a bit going on, but I think it addresses most of the quirks.
I have attached a PBIX file as well
New Table = VAR RetVal = ADDCOLUMNS( 'Table', "Next Date", MINX( FILTER( 'Table', 'Table'[Customer] = EARLIER('Table'[Customer]) && 'Table'[Date] > EARLIER('Table'[Date]) && [pre_member_level]<> [current_member_level] ), [Date]-1) ) VAR cleanTable = FILTER(RetVal,[current_member_level]<>[pre_member_level]) VAR Step2 = SELECTCOLUMNS( cleanTable , "Customer" , [Customer] , "Start_date" , [Date] , "end_date" , if( ISBLANK([Next Date]), TODAY(), [Next Date]) , "member_level" , [current_member_level] ) VAR FirstLines = SELECTCOLUMNS( GENERATE(SELECTCOLUMNS(SUMMARIZECOLUMNS('Table'[Customer],"end_date" , MIN('Table'[Date])),"C",[Customer],"D",[end_date]),filter('Table','Table'[Customer]=[C] && 'Table'[Date]=[D])), "Customer",[Customer] , "Start_date",DATE(2016,1,1) , "End_date",[Date]-1, "member_level",[pre_member_level] ) RETURN UNION( FirstLines,Step2)
Phil_Seamark
8 years agoMicrosoft Employee
HI Anonymous
This calculated table is getting close. There is a bit going on, but I think it addresses most of the quirks.
I have attached a PBIX file as well
New Table =
VAR RetVal =
ADDCOLUMNS(
'Table',
"Next Date",
MINX(
FILTER(
'Table',
'Table'[Customer] = EARLIER('Table'[Customer]) &&
'Table'[Date] > EARLIER('Table'[Date]) &&
[pre_member_level]<> [current_member_level]
),
[Date]-1)
)
VAR cleanTable = FILTER(RetVal,[current_member_level]<>[pre_member_level])
VAR Step2 =
SELECTCOLUMNS(
cleanTable ,
"Customer" , [Customer] ,
"Start_date" , [Date] ,
"end_date" , if(
ISBLANK([Next Date]),
TODAY(),
[Next Date]) ,
"member_level" , [current_member_level]
)
VAR FirstLines =
SELECTCOLUMNS(
GENERATE(SELECTCOLUMNS(SUMMARIZECOLUMNS('Table'[Customer],"end_date" , MIN('Table'[Date])),"C",[Customer],"D",[end_date]),filter('Table','Table'[Customer]=[C] && 'Table'[Date]=[D])),
"Customer",[Customer] ,
"Start_date",DATE(2016,1,1) ,
"End_date",[Date]-1,
"member_level",[pre_member_level]
)
RETURN UNION( FirstLines,Step2)
- Anonymous8 years agoNot applicable
Thank you so much Phil_Seamark, I got it!