Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Anonymous
Not applicable

Change date history table

Hi all,

 

Anyone, who can see what I do wrong here? 

 

Using this script and get the Column PreviousWrong, but I anned it to be as 'PreviousWant'

PreviousWrong = coalesce(maxx(filter(Table,Table[WorkItemId] = earlier(Table[WorkItemId]) && Table[ChangedDate] < earlier(Table[ChangedDate]) ),Table[ChangedDate]),Table[ChangedDate])

 

 

WorkItemIdBoardLocationSKChangedDatePreviousWrongPreviousWant:-)
15088703414/08/202014/08/202014/08/2020
15088703414/08/202014/08/202014/08/2020
15090581820/08/202014/08/202014/08/2020
15090581820/08/202014/08/202020/08/2020
15090581820/08/202014/08/202020/08/2020
15090581820/08/202014/08/202020/08/2020
35088749614/08/202014/08/202014/08/2020
35088749614/08/202014/08/202014/08/2020
35090590720/08/202014/08/202014/08/2020
35090591121/08/202020/08/202020/08/2020
35090591121/08/202020/08/202021/08/2020
35090591121/08/202020/08/202021/08/2020
35090591121/08/202020/08/202021/08/2020
35090591127/08/202021/08/202021/08/2020
35090591127/08/202021/08/202027/08/2020
35090590731/08/202027/08/202027/08/2020
35090591101/09/202031/08/202031/08/2020
35090591101/09/202031/08/202001/09/2020
35090590708/09/202001/09/202001/09/2020
35090590708/09/202001/09/202008/09/2020
35090590708/09/202001/09/202008/09/2020
45090590820/08/202020/08/202020/08/2020
45090591121/08/202020/08/202020/08/2020
45090591121/08/202020/08/202021/08/2020
1 ACCEPTED SOLUTION
v-yiruan-msft
Community Support
Community Support

Hi @Anonymous ,

First, please add a index column in Power Query Editor:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("xdFBCsAgDATAv3gW3GisyVuk//9G9VAUxKKU0ltgYNkkORsy1kSIJAQuo4eHE0dsTruEiigkDT2+xHAXYj2GQgtYYhVpEluRqEP6AdMO9quEeSzUYU9bcFV5rdx0fCo/nWmO5wU=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [WorkItemId = _t, BoardLocationSK = _t, ChangedDate = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"WorkItemId", Int64.Type}, {"BoardLocationSK", Int64.Type}, {"ChangedDate", type text}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1, Int64.Type)
in
    #"Added Index"

Then create a measure as below:

Measure = 
VAR _index =
    MAX ( 'Table'[Index] )
VAR _cdate =
    CALCULATE (
        MAX ( 'Table'[ChangedDate] ),
        FILTER (
            ALLSELECTED ( 'Table' ),
            'Table'[WorkItemId] = MAX ( 'Table'[WorkItemId] )
                && 'Table'[Index] < _index
        )
    )
RETURN
    IF ( ISBLANK ( _cdate ), MAX ( 'Table'[ChangedDate] ), _cdate )​

Or you can update the formula of calculated column "PreviousWrong" as below after the index column be added:

PreviousWrong = 
COALESCE (
    MAXX (
        FILTER (
            'Table',
            'Table'[WorkItemId] = EARLIER ( 'Table'[WorkItemId] )
                && 'Table'[Index] < EARLIER ( 'Table'[Index] )
        ),
        'Table'[ChangedDate]
    ),
    'Table'[ChangedDate]
)

Change date history table.JPG

Best Regards

Rena

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

5 REPLIES 5
v-yiruan-msft
Community Support
Community Support

Hi @Anonymous ,

First, please add a index column in Power Query Editor:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("xdFBCsAgDATAv3gW3GisyVuk//9G9VAUxKKU0ltgYNkkORsy1kSIJAQuo4eHE0dsTruEiigkDT2+xHAXYj2GQgtYYhVpEluRqEP6AdMO9quEeSzUYU9bcFV5rdx0fCo/nWmO5wU=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [WorkItemId = _t, BoardLocationSK = _t, ChangedDate = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"WorkItemId", Int64.Type}, {"BoardLocationSK", Int64.Type}, {"ChangedDate", type text}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1, Int64.Type)
in
    #"Added Index"

Then create a measure as below:

Measure = 
VAR _index =
    MAX ( 'Table'[Index] )
VAR _cdate =
    CALCULATE (
        MAX ( 'Table'[ChangedDate] ),
        FILTER (
            ALLSELECTED ( 'Table' ),
            'Table'[WorkItemId] = MAX ( 'Table'[WorkItemId] )
                && 'Table'[Index] < _index
        )
    )
RETURN
    IF ( ISBLANK ( _cdate ), MAX ( 'Table'[ChangedDate] ), _cdate )​

Or you can update the formula of calculated column "PreviousWrong" as below after the index column be added:

PreviousWrong = 
COALESCE (
    MAXX (
        FILTER (
            'Table',
            'Table'[WorkItemId] = EARLIER ( 'Table'[WorkItemId] )
                && 'Table'[Index] < EARLIER ( 'Table'[Index] )
        ),
        'Table'[ChangedDate]
    ),
    'Table'[ChangedDate]
)

Change date history table.JPG

Best Regards

Rena

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Greg_Deckler
Super User
Super User

@Anonymous Assuming those are actual Date columns, this should be:

 

Previous = 
    VAR __PreviousDate = MAXX(FILTER('Table (25)',[WorkItemID]=EARLIER([WorkItemID]) && [BoardLocation]=EARLIER([BoardLocation])&& [ChangedDate]<EARLIER([ChangedDate])),[ChangedDate])
    VAR __Count = COUNTX(FILTER('Table (25)',[WorkItemID]=EARLIER([WorkItemID]) && [BoardLocation]<EARLIER([BoardLocation]) && [ChangedDate]<EARLIER([ChangedDate])),[Risk ID])
RETURN
    IF(__Count<0 || ISBLANK(__PreviousDate),[ChangedDate],__PreviousDate)

 

So, if that doesn't work I suspect that those are text and not date columns, just a hunch. 

See my article on Mean Time Between Failure (MTBF) which uses EARLIER: http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/339586.
The basic pattern is:
Column = 
  VAR __Current = [Value]
  VAR __PreviousDate = MAXX(FILTER('Table','Table'[Date] < EARLIER('Table'[Date])),[Date])

  VAR __Previous = MAXX(FILTER('Table',[Date]=__PreviousDate),[Value])
RETURN
  __Current - __Previous


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

Thank You Greg

 

In the script i see [Risk ID] that I don't recognize?

 

Cheers,

Martin

 

amitchandak
Super User
Super User

@Anonymous , I think you need to add BoardLocationSK in filter

 

PreviousWrong = coalesce(maxx(filter(Table,Table[WorkItemId] = earlier(Table[WorkItemId]) && [BoardLocationSK] = earlier(Table[BoardLocationSK])
Table[ChangedDate] < earlier(Table[ChangedDate]) ),Table[ChangedDate]),Table[ChangedDate])

Anonymous
Not applicable

Thank You Amitchandak for taking your time.

 

When adding Boardlocation, I get same value as the original ChangeDate?  

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

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.