幂查询 - 求和 - 矩阵
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"
我已经用另一种方式解决了,我把它放在这里,也许对其他人有帮助...
我在电源查询中有以下 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"
我已经用另一种方式解决了,我把它放在这里,也许对其他人有帮助...