Forum Discussion

JeroenHD's avatar
JeroenHD
Icon for Helper I rankHelper I
4 years ago
Solved

Track date value changes and store new values in table

Hello Team, 

I have a table with a purchase order number, line number and a promised date field. I simplified the table. The original table is refreshed overnight.

This Promised Date is what a supplier provides to inform us when we are about to receive the products.
Over time this date is subject to changes. For example a supplier tells us that goods come in a little later on this new date.


The data comes from SQL database, so i want Power BI to write a changed value in the promised date column to a new column. 

 

We would like to perform analysis on these changes. Not sure if what i'm after is at all possible. 



 

Is this at all possible and does anybody have an idea of how i should pull this off? 
Any direction would be much appreciated!

 

PURC_ORDER_IDLINE_NOPROMISED DATECHANGED DATE 1CHANGED DATE 2CHANGED DATE 3
0010012612021-05-2814-6-2021   
0010012622021-05-2814-6-2021   
003109212021-06-14    
10000112021-07-05    
10000122021-07-05    
10016112021-02-10    
10016122021-02-10    
10018312021-02-1012-02-202114-03-2021  
10018322021-02-1012-02-202114-03-2021  
10018332021-02-1012-02-202114-03-2021  
20130112021-07-20    
20227512021-10-29    
20227522021-10-29    
20283012021-10-29    
20378512021-09-07    
20378612021-11-29    
20378852021-11-29    
20378862021-11-29    
20378872021-11-29    
20378882021-11-29    
20437812021-09-2024-09-202120-10-202123-11-2021 
20463212021-09-07    
20463312021-09-07    
20495512021-01-05    

 

Kind regards,
Jerone

  • Hi JeroenHD 

    Power BI is used to analyze data, not create data, it means if data changed in your Data Source, then data in Power BI will also change accordingly after you click on refresh button. So if you want to analyze the difference between them, you need to create a new column or new table in your Data Source.

    After you add changes to your datasource, then you can create columns bellow,

    CHANGED DATE 1 = 
    var _predate=RANKX(FILTER(ALL('Table'),'Table'[LINE_NO]=EARLIER('Table'[LINE_NO]) && 'Table'[PURC_ORDER_ID] = EARLIER('Table'[PURC_ORDER_ID])),'Table'[PROMISED DATE],,ASC)
    return IF(_predate=2,'Table'[PROMISED DATE])
    CHANGED DATE 2 = 
    var _predate=RANKX(FILTER(ALL('Table'),'Table'[LINE_NO]=EARLIER('Table'[LINE_NO]) && 'Table'[PURC_ORDER_ID] = EARLIER('Table'[PURC_ORDER_ID])),'Table'[PROMISED DATE],,ASC)
    return IF(_predate=3,'Table'[PROMISED DATE])

    result

    If you need measures, 

    measure CHANGED DATE 1 = 
    var _predate=RANKX(FILTER(ALL('Table'),'Table'[LINE_NO]=MIN('Table'[LINE_NO]) && 'Table'[PURC_ORDER_ID] = MIN('Table'[PURC_ORDER_ID])),CALCULATE(MIN('Table'[PROMISED DATE])),,ASC)
    return IF(_predate=2,MIN('Table'[PROMISED DATE]))
    measure CHANGED DATE 2 = 
    var _predate=RANKX(FILTER(ALL('Table'),'Table'[LINE_NO]=MIN('Table'[LINE_NO]) && 'Table'[PURC_ORDER_ID] = MIN('Table'[PURC_ORDER_ID])),CALCULATE(MIN('Table'[PROMISED DATE])),,ASC)
    return IF(_predate=3,MIN('Table'[PROMISED DATE]))

     

    Best Regards,

    Community Support Team _Tang

    If this post helps, please consider Accept it as the solution to help the other members find it more quickly.

5 Replies

  • v-xiaotang's avatar
    v-xiaotang
    Icon for Community Support rankCommunity Support

    Hi JeroenHD 

    Power BI is used to analyze data, not create data, it means if data changed in your Data Source, then data in Power BI will also change accordingly after you click on refresh button. So if you want to analyze the difference between them, you need to create a new column or new table in your Data Source.

    After you add changes to your datasource, then you can create columns bellow,

    CHANGED DATE 1 = 
    var _predate=RANKX(FILTER(ALL('Table'),'Table'[LINE_NO]=EARLIER('Table'[LINE_NO]) && 'Table'[PURC_ORDER_ID] = EARLIER('Table'[PURC_ORDER_ID])),'Table'[PROMISED DATE],,ASC)
    return IF(_predate=2,'Table'[PROMISED DATE])
    CHANGED DATE 2 = 
    var _predate=RANKX(FILTER(ALL('Table'),'Table'[LINE_NO]=EARLIER('Table'[LINE_NO]) && 'Table'[PURC_ORDER_ID] = EARLIER('Table'[PURC_ORDER_ID])),'Table'[PROMISED DATE],,ASC)
    return IF(_predate=3,'Table'[PROMISED DATE])

    result

    If you need measures, 

    measure CHANGED DATE 1 = 
    var _predate=RANKX(FILTER(ALL('Table'),'Table'[LINE_NO]=MIN('Table'[LINE_NO]) && 'Table'[PURC_ORDER_ID] = MIN('Table'[PURC_ORDER_ID])),CALCULATE(MIN('Table'[PROMISED DATE])),,ASC)
    return IF(_predate=2,MIN('Table'[PROMISED DATE]))
    measure CHANGED DATE 2 = 
    var _predate=RANKX(FILTER(ALL('Table'),'Table'[LINE_NO]=MIN('Table'[LINE_NO]) && 'Table'[PURC_ORDER_ID] = MIN('Table'[PURC_ORDER_ID])),CALCULATE(MIN('Table'[PROMISED DATE])),,ASC)
    return IF(_predate=3,MIN('Table'[PROMISED DATE]))

     

    Best Regards,

    Community Support Team _Tang

    If this post helps, please consider Accept it as the solution to help the other members find it more quickly.