Forum Discussion

jamuka's avatar
jamuka
Helper IV
1 year ago
Solved

Create New Columns Based on Two Date Columns

Dear all,   I have a table which shows promotions and their Start and End Dates. I'd like to create new "Month" columns based on promotions Start and End Dates and show how many days are in related...
  • AlienSx's avatar
    1 year ago
    let
        fx_months = (s, e) => 
            [tbl = Table.FromColumns({List.Generate(() => s, (x) => x <= e, (x) => Date.AddDays(x, 1))}, {"m"}),
            group = Table.Group(tbl, "m", {"x", Table.RowCount}, GroupKind.Local, (s, c) => Number.From(Date.Month(s) <> Date.Month(c))),
            out = Record.FromList(group[x], List.Transform(group[m], (x) => Date.ToText(x, "MMM yyyy")))][out], 
        rows = Table.TransformRows(
            your_data, 
            (x) => Table.FromRecords({x & fx_months(x[Start], x[End])})
        ), 
        result = Table.Combine(rows)
    in
        result