Forum Discussion

jvs5899's avatar
jvs5899
Frequent Visitor
1 year ago
Solved

Table Transformation

I am working on a board for my quality department and have hit a brick wall. We require parts to be qualified prior to shipment to us from our suppliers. We have a firm date the current version of th...
  • Omid_Motamedise's avatar
    1 year ago

    Hi, to put the dates on the columns and determine the part in thefirst column, copy thefollowing formula and past it into your advance editor

     

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Vcy7DcAwCEXRXagtGTA/T+ABolQW+68RYqVJe67e2xtoqRnxIGggnbQzMkK2KpdoTC+nn/sdYipYwftxOs5LZVq8R/ENBmQ+", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Part #" = _t, #"Qual Date" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Part #", type text}, {"Qual Date", type text}}),
        #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each 1),
        #"Pivoted Column" = Table.Pivot(#"Added Custom", List.Distinct(#"Added Custom"[#"Qual Date"]), "Qual Date", "Custom", List.Sum)
    in
        #"Pivoted Column"
  • Akash_Varuna's avatar
    1 year ago

    Hi jvs5899 Could you try this please 

    let
       
        QualTable = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Vcy7DcAwCEXRXagtGTA/T+ABolQW+68RYqVJe67e2xtoqRnxIGggnbQzMkK2KpdoTC+nn/sdYipYwftxOs5LZVq8R/ENBmQ+", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Part #" = _t, #"Qual Date" = _t]),
        QualChangedType = Table.TransformColumnTypes(QualTable,{{"Part #", type text}, {"Qual Date", type date}}),
    
        
        RecTable = Excel.CurrentWorkbook(){[Name="ReceiptTable"]}[Content],
        RecChangedType = Table.TransformColumnTypes(RecTable,{{"Part #", type text}, {"Rec. Date", type date}}),
    
        
        MergedTable = Table.NestedJoin(RecChangedType, "Part #", QualChangedType, "Part #", "Qualification", JoinKind.LeftOuter),
        ExpandedTable = Table.ExpandTableColumn(MergedTable, "Qualification", {"Qual Date"}),
    
        
        FilteredTable = Table.SelectRows(ExpandedTable, each [Rec. Date] >= [Qual Date]),
    
        
        GroupedTable = Table.Group(FilteredTable, {"Part #"}, {
            {"Data", each Table.Sort(_, {{"Rec. Date", Order.Ascending}})}
        }),
    
        // Step 6: Add Gap Days Column for Consecutive Shipments
        AddGapColumn = Table.TransformColumns(GroupedTable, {
            {"Data", each Table.AddColumn(_, "Gap Days", (row) =>
                if Table.RowCount(_) = 1 then null
                else let
                    CurrentIndex = Table.PositionOf(_, row),
                    PreviousDate = if CurrentIndex > 0 then _[Rec. Date]{CurrentIndex - 1} else null
                in if PreviousDate = null then null else Duration.Days(row[Rec. Date] - PreviousDate))
            )}
        }),
    
        
        FlattenedTable = Table.ExpandTableColumn(AddGapColumn, "Data", {"Part #", "Rec. Date", "Qual Date", "Gap Days"}),
        AddRequalificationFlag = Table.AddColumn(FlattenedTable, "Requires Requalification", each
            if [Gap Days] <> null and [Gap Days] > 730 then "Yes" else "No")
    in
        AddRequalificationFlag