Ich konnte nicht mit einem Weg, um einfach 42 in Ihrem Code zu ersetzen, aber da ich sah diese Matrix Mathe war ich anhand dieser untenen Lösung für Ihr Problem auf Gil Raviv's blog on matrix multiplication.
ich mit diesem als Table1 begann: auf diese
Dann zu bekommen ...
... Ich benutze Tabelle 1 als Quelle für eine neue Abfrage, und dieser Code:
let
Source = Table1,
#"Removed Columns" = Table.RemoveColumns(Source,{""}),
MatrixA = Table.TransformColumnTypes(#"Removed Columns",{{"1", type number}, {"2", type number}, {"3", type number}}),
Summed = Table.FromRows({List.Transform({"1","2","3"}, each List.Sum(Table.Column(MatrixA, _)))}, {"1","2","3"}),
MatrixB = Table.TransformColumnTypes(Summed,{{"1", type number}, {"2", type number}, {"3", type number}}),
IndexedMatrixA = Table.AddIndexColumn(MatrixA, "Index", 1, 1),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(IndexedMatrixA, {"Index"}, "Attribute", "Value"),
#"Changed Type" = Table.TransformColumnTypes(#"Unpivoted Other Columns",{{"Attribute", Int64.Type}}),
RenamedColumnsMatrixA = Table.RenameColumns(#"Changed Type",{{"Index", "Row"}, {"Attribute", "Column"}}),
IndexedMatrixB = Table.AddIndexColumn(MatrixB, "Index", 1, 1),
#"Unpivoted Other Columns1" = Table.UnpivotOtherColumns(IndexedMatrixB, {"Index"}, "Attribute", "Value"),
#"Changed Type1" = Table.TransformColumnTypes(#"Unpivoted Other Columns1",{{"Attribute", Int64.Type}}),
RenamedColumnsMatrixB = Table.RenameColumns(#"Changed Type1",{{"Index", "Row"}, {"Attribute", "Column"}}),
#"Merged Queries" = Table.NestedJoin(RenamedColumnsMatrixA,{"Column"},RenamedColumnsMatrixB,{"Column"},"RenamedColumnsMatrixB",JoinKind.LeftOuter),
#"Expanded RenamedColumnsMatrixB" = Table.ExpandTableColumn(#"Merged Queries", "RenamedColumnsMatrixB", {"Row", "Column", "Value"}, {"B.Row", "B.Column", "B.Value"}),
#"Added Custom" = Table.AddColumn(#"Expanded RenamedColumnsMatrixB", "AB", each [Value]/[B.Value]),
#"Grouped Rows" = Table.Group(#"Added Custom", {"Row", "B.Column"}, {{"AB", each List.Sum([AB]), type number}}),
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Grouped Rows", {{"B.Column", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Grouped Rows", {{"B.Column", type text}}, "en-US")[B.Column]), "B.Column", "AB"),
#"Added Index" = Table.AddIndexColumn(#"Pivoted Column", "Index", 1, 1),
IndexedSource = Table.AddIndexColumn(Source, "Index", 1, 1),
#"Merged Queries1" = Table.NestedJoin(#"Added Index",{"Index"},IndexedSource,{"Index"},"IndexedSource",JoinKind.LeftOuter),
#"Expanded IndexedSource" = Table.ExpandTableColumn(#"Merged Queries1", "IndexedSource", {""}, {"Column1"}),
#"Removed Columns1" = Table.RemoveColumns(#"Expanded IndexedSource",{"Row", "Index"}),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Columns1",{"Column1", "1", "2", "3"})
in
#"Reordered Columns"
Sie werden bemerken, ich irgendwie „sprang um“ ein wenig, frühere Applied Schritten als „Tabellen“ im Code ... wie in diesen Applied Schritte (das sind im Grunde Tabellenstatus abfragen):
Index MatrixB (IndexedMatrixB = Table.AddIndexColumn(MatrixB, "Index", 1, 1),
, wobei MatrixB
ein vorheriger angewandter Schritt ist); und
Zusammengeführte Abfragen (#"Merged Queries" = Table.NestedJoin(RenamedColumnsMatrixA,{"Column"},RenamedColumnsMatrixB,"Column"},"RenamedColumnsMatrixB",JoinKind.LeftOuter),
, wobei RenamedColumnsMatrixA
und RenamedColumnsMatrixB
vorherige angewandte Schritte sind).
Schöne, prägnante Lösung! –