幂查询 - 求和 - 矩阵

power query - sumifs - matrix

我在电源查询中有以下 table。

╔══════════════════════╦══════════════════════╦══════════════════╗
║       Project        ║      Project 2       ║  Balance         ║
╠══════════════════════╬══════════════════════╬══════════════════╣
║ (088) GARAJ-16       ║ (084) MFK DOMODEDOVA ║     83,434.11    ║
║ (088) GARAJ-16       ║ (085) FILI RESIDENCE ║  5,936,348.56    ║
║ (085) FILI RESIDENCE ║ (084) MFK DOMODEDOVA ║ -3,516,805.40    ║
║ (085) FILI RESIDENCE ║ (088) GARAJ-16       ║ -4,436,348.56    ║
║ (084) MFK DOMODEDOVA ║ (085) FILI RESIDENCE ║  4,516,805.40    ║
║ (084) MFK DOMODEDOVA ║ (088) GARAJ-16       ║    -83,434.11    ║
╚══════════════════════╩══════════════════════╩══════════════════╝

我想要得到的结果是:

╔══════════════════════╦═════════════════╦══════════════════════╦══════════════════════╗
║                      ║ (088) GARAJ-16  ║ (085) FILI RESIDENCE ║ (084) MFK DOMODEDOVA ║
╠══════════════════════╬═════════════════╬══════════════════════╬══════════════════════╣
║ (088) GARAJ-16       ║  $-             ║  ,500,000.00       ║  $-                  ║
║ (085) FILI RESIDENCE ║  ,500,000.00  ║  $-                  ║  ,000,000.00       ║
║ (084) MFK DOMODEDOVA ║  $-             ║  ,000,000.00       ║  $-                  ║
╚══════════════════════╩═════════════════╩══════════════════════╩══════════════════════╝

这个结果我可以通过 excel 中的两个 sumifs 公式得到,但我无法在不编写任何公式的情况下直接在 power query 中得到结果。

有什么想法吗?

此代码给出了您要查找的结果。

let
    Source = Table1,
    #"Merged Queries" = Table.NestedJoin(Source,{"Project", "Project 2"},Source,{"Project 2", "Project"},"NewColumn",JoinKind.LeftOuter),
    #"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Balance"}, {"NewColumn.Balance"}),
    #"Inserted Addition" = Table.AddColumn(#"Expanded NewColumn", "Inserted Addition", each [Balance] + [NewColumn.Balance], type number),
    #"Removed Columns" = Table.RemoveColumns(#"Inserted Addition",{"Balance", "NewColumn.Balance"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Sort(List.Distinct(#"Removed Columns"[Project]),1), "Project", "Inserted Addition"),
    #"Sorted Rows" = Table.Sort(#"Pivoted Column",{{"Project 2", Order.Descending}})
in
    #"Sorted Rows"
    #"Invoked Custom Function" = Table.AddColumn(#"Added Custom", "fnButunSantiyeler", each fnButunSantiyeler([Query])),
    #"Expanded fnButunSantiyeler" = Table.ExpandTableColumn(#"Invoked Custom Function", "fnButunSantiyeler", {"Hesap No", "santiye kodu", "Ruble Balance", "USD Balance"}, {"Hesap No", "santiye kodu", "Ruble Balance", "USD Balance"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded fnButunSantiyeler",{"Query"}),
    #"Merged Queries" = Table.NestedJoin(#"Removed Columns",{"santiye kodu"},#"Projects List",{"Proje Kodu"},"NewColumn",JoinKind.LeftOuter),
    #"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Proje Adi"}, {"Proje Adi.1"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded NewColumn",{{"Proje Adi.1", "Karsi Proje"}}),
    #"Reordered Columns" = Table.ReorderColumns(#"Renamed Columns",{"Proje Kodu", "Proje Adi", "Hesap No", "santiye kodu", "Karsi Proje", "Ruble Balance"}),
    #"Added Custom2" = Table.AddColumn(#"Reordered Columns", "Proje", each "(" & [Proje Kodu] & ") " &[Proje Adi]),
    #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Karsi Proje.1", each "(" & [santiye kodu] & ") " & [Karsi Proje]),
    #"Reordered Columns1" = Table.ReorderColumns(#"Added Custom3",{"Karsi Proje.1", "Proje", "Proje Kodu", "Proje Adi", "Hesap No",  "santiye kodu", "Karsi Proje", "Ruble Balance"}),
    #"Removed Columns1" = Table.RemoveColumns(#"Reordered Columns1",{"Proje Kodu", "Proje Adi", "santiye kodu", "Karsi Proje"}),
    #"Renamed Columns1" = Table.RenameColumns(#"Removed Columns1",{{"Karsi Proje.1", "Karsi Proje"}}),
    #"Reordered Columns2" = Table.ReorderColumns(#"Renamed Columns1",{"Proje", "Karsi Proje", "Ruble Balance"}),
    #"Grouped Rows" = Table.Group(#"Reordered Columns2", {"Proje", "Karsi Proje", "Hesap No"}, {{"Ruble Balance", each List.Sum([Ruble Balance]), type number}}),
    #"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each [Karsi Proje] <> null),
    #"Added Conditional Column" = Table.AddColumn(#"Filtered Rows", "Custom", each if [Hesap No] = "331" then [Proje]&"xxx"&[Karsi Proje] else if [Hesap No] = "131" then [Karsi Proje]&"xxx"&[Proje] else null ),
    #"Grouped Rows1" = Table.Group(#"Added Conditional Column", {"Custom"}, {{"sum", each List.Sum([Ruble Balance]), type number}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows1","Custom",Splitter.SplitTextByDelimiter("xxx", QuoteStyle.Csv),{"Custom.1", "Custom.2"}),
    #"Rounded Off" = Table.TransformColumns(#"Split Column by Delimiter",{{"sum", each Number.Round(_, 2), type number}}),
    #"Sorted Rows" = Table.Sort(#"Rounded Off",{{"Custom.2", Order.Ascending}}),
    #"Pivoted Column" = Table.Pivot(#"Sorted Rows", List.Distinct(#"Sorted Rows"[Custom.2]), "Custom.2", "sum", List.Sum)
in
    #"Pivoted Column"

我已经用另一种方式解决了,我把它放在这里,也许对其他人有帮助...