Forum Discussion
jvs5899
1 year agoFrequent Visitor
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...
- 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" - 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
Akash_Varuna
Super User
1 year agoHi 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