Forum Discussion

KHSK's avatar
KHSK
Icon for Advocate I rankAdvocate I
9 months ago
Solved

Need Power Query code to load unique IDs in the snapshot history Table

Extremely sorry for the confusion, I just updated the TO-BE table. Logic: If approval dates are same for VP& SVP for an ID, I need any one of them to be displayed uniquely. If approval dates ...
  • Chewdata's avatar
    9 months ago

    Hello,

    The code below might get the right results. See annotations in the code

    let
        Source = YOURDATA,
    
        // group the data by ID and snapshotdate combination
        groupby_id_snapshotdate = Table.Group(
            Source, 
            {"ID", "SnapshotDt"}, 
            {{"Table", each _, type table [ID=nullable number, ApprovalDate=nullable date, ApprovalRole=nullable text, Status=nullable text, SnapshotDt=nullable date]}}),
    
        // determine which row from the nested table should be returned
        add_SelectedRow = Table.AddColumn(
            groupby_id_snapshotdate, 
            "SelectedRow", 
            // if there is only one row, return the row
            each if Table.RowCount([Table]) = 1 then [Table]{0} 
            
            // if the list of approvaldates is distinct that means there is more than one date in the list.
            else if List.IsDistinct([Table][ApprovalDate])
    
                // return te row with the max date
                then Table.SelectRows([Table], (row) => row[ApprovalDate] = List.Max([Table][ApprovalDate])){0} // get 
    
                // the list is not distinct = all dates are the same -> return first row
                else Table.First([Table])),
    
        // get the data from the records
        expand_records = Table.ExpandRecordColumn(
            add_SelectedRow, 
            "SelectedRow", 
            {"ApprovalDate", "ApprovalRole", "Status"}, 
            {"ApprovalDate", "ApprovalRole", "Status"}),
        
        // remove the table column
        removeColumns = Table.RemoveColumns(
            expand_records,{
                "Table"})
    in
        removeColumns