通过单一值 + 每月增量创建多个值

通过单一值 + 每月增量创建多个值

寻找任何可以帮助创建这个虚拟数据集的建议/提示

从此表创建另一个表

ID  MOB date(dd-mm-yyyy)
A01 2   01-07-2019
A02 3   01-02-2019

这是所需的输出:每次使用 mob 时月份都会增加

ID  MOB date(dd-mm-yyyy)
A01 2   01-07-2019
A01 2   01-08-2019
A02 3   01-02-2019
A02 3   01-03-2019
A02 3   01-04-2019

我在 Excel 中使用 Power 查询,添加列>自定义列>在查询编辑器中使用了这个公式

={1..[MOB]} 

输出结果如下:

ID  MOB date(dd-mm-yyyy)
A01 2   01-07-2019
A01 2   01-07-2019
A02 3   01-02-2019
A02 3   01-02-2019
A02 3   01-02-2019

关闭查询编辑器并执行关闭和加载时出现问题 - 它不会加载,因为它不支持使用 {..} 生成的数据

关于此查询还有其他信息吗?或者还有其他想法可以实现这一点以及日期增量

提前致谢 :)

答案1

当您将新列扩展为行时,它会在每个原始日期内有效地创建从 1 到 MOB 的索引。

您只需要在原始月份中添加索引-1 即可获得增加的月份。

在此处输入图片描述

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"MOB", Int64.Type}, {"date", type date}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each {1..[MOB]}),
    #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
    #"Added Custom1" = Table.AddColumn(#"Expanded Custom", "incremented_date", each Date.AddMonths([date],[Custom]-1)),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Custom", "date"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns",{{"incremented_date", type date}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"incremented_date", "date"}})
in
    #"Renamed Columns"

答案2

您可以使用该Table.TransformRows方法List.Accumulate创建日期列表。

let
    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"MOB", Int64.Type}, {"date", type date}}),

//transform column 3 into a list of dates based on column2
    dtList= Table.FromRecords(
        Table.TransformRows(#"Changed Type",
                    (r)=>Record.TransformFields(
                        r, {"date",each //List.Dates(r[date],r[MOB],#duration(1,0,0,0))}))),
                            List.Accumulate({0..r[MOB]-1},{}, (state,current)=> state & {Date.AddMonths(r[date],current)} )}))),
  
  //expand the date list column
    #"Expanded date" = Table.ExpandListColumn(dtList, "date"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Expanded date",{{"ID", type text}, {"MOB", Int64.Type}, {"date", type date}})
in
    #"Changed Type1"

在此处输入图片描述

相关内容