基于日期列将 Power BI 中的单行转换为多行

Convert single row to multiple rows in Power BI based a date column

我需要在 Power BI 中按照以下要求转换数据:

获取源文件如下:

需要根据每个月的预测月数(第 4 列)将每一行转换为多行。下面的费用月份是每个月的 1 号。然后将费用除以每个月计划费用的预测月份。

如何在 Power BI 中实现这一点?

您可以在强大的查询编辑器中执行此转换。下面是转换代码-

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUXJ0cgaSRgZGhroGlrpGBkCOGQgbKMXqRCsZAZkurm5wFWa6BiBNpkBsDFFhDGRGREbBVVhAVFiAVBgpxcYCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Title = _t, #"Project Start Date" = _t, #"Project Months" = _t, Expense = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Title", type text}, {"Project Start Date", type date}, {"Project Months", Int64.Type}, {"Expense", Int64.Type}}),
    #"Calculated Start of Month" = Table.TransformColumns(#"Changed Type",{{"Project Start Date", Date.StartOfMonth, type date}}),
    #"Added Custom" = Table.AddColumn(#"Calculated Start of Month", "Custom", each List.Range({1..[Project Months]},0)),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each [Expense]/[Project Months]),
    #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom1", "Custom"),
    #"Added Custom2" = Table.AddColumn(#"Expanded Custom", "Custom.2", each Date.AddMonths([Project Start Date],[Custom]-1)),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"Project Start Date", "Project Months", "Expense", "Custom"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom.2", "Expense Month"}, {"Custom.1", "Planned Expense"}})
in
    #"Renamed Columns"

这里是最终输出-