在 Power Query 中插入缺少日期的行

Insert rows for missing dates in Power Query

起点是以下table,其中为特定日期(日记)的事件创建条目。

Entity Event Date Amount
0123 acquisition 05.05.2015 10,000.00
0123 capital increase 30.11.2015 1,000.00
0123 write-off 31.12.2017 -4,000.00
0123 write-up 31.12.2019 3,000.00

此日志已加载到 Power Query 中,以使用来自其他来源的附加信息进行增强。

目标是 Power Pivot table,其中金额汇总为 31.12。每年(小计)。

Year Entity Event Date Amount
2015 0123 aquisition 05.05.2015 10,000.00
2015 0123 capital increase 30.11.2015 1,000.00
2015 Subtotal 0123 11,000.00
2016 Subtotal 0123 11,000.00
2017 0123 write-off 31.12.2017 -4,000.00
2017 Subtotal 0123 7,000.00
2018 Subtotal 0123 7,000.00
2019 0123 write-up 31.12.2019 3,000.00
2019 Subtotal 0123 10,000.00
2020 Subtotal 0123 10,000,00

问题是如何在没有 activity(事件)发生(日志中没有条目)的年份的 Power Query 中插入行,以便截至 31.12 可以在 Power Pivot 中显示小计。每年。

我希望我能以易于理解的方式解释我的问题。预先感谢您的帮助!

亲切的问候,

约尔格

看看这样的方法是否适合您。有更短、更令人困惑的方式来做到这一点

获取所有数据的最小年份和所有数据的最大年份,并创建一个 table 所有年份和实体的组合。看看那些是否正在使用。如果不是,将那一年和实体合并回原来的 table 和 month=dec day=31

有一点自合并等,需要将其粘贴到主页...高级...因为并非所有这些都可以在用户界面中完成

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Entity", Int64.Type}, {"Event", type text}, {"Date", type date}, {"Amount", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Year", each Date.Year([Date])),

// Create table of all possible Entities and Years
DateList = {Date.Year(List.Min(#"Added Custom"[Date])) .. Date.Year(List.Max(#"Added Custom"[Date]))},
Entities = Table.AddColumn(Table.Distinct(Table.SelectColumns(#"Added Custom",{"Entity"})),"Year", each DateList),
#"Expanded Year" = Table.ExpandListColumn(Entities, "Year"),

// Find unique Data and merge into original data set
#"Merged Queries" = Table.NestedJoin(#"Expanded Year",{"Year", "Entity"},#"Added Custom",{"Year", "Entity"},"Table2",JoinKind.LeftOuter),
#"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"Date"}, {"Date2"}),
#"Filtered Rows" = Table.SelectRows(#"Expanded Table2", each ([Date2] = null)),
#"Added Custom1" = Table.AddColumn(#"Filtered Rows", "Date", each #date([Year],12,31), type date),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Date2", "Year"}),
#"Appended Query" = Table.Combine({#"Changed Type", #"Removed Columns" })

in #"Appended Query"