Forum Discussion
Converting quarter data into months
- 1 year ago
Hi ch_metglobal
With "Your_Source"
Column1 YYYYQN Value a 2025Q1 93 a 2025Q2 10 a 2025Q3 58 a 2025Q4 60 b 2025Q1 90 b 2025Q2 45 b 2025Q3 80 b 2025Q4 107 let
Source = Your_Source,
Transform = Table.TransformColumns(Source,
{{"YYYYQN", (x) => List.Transform({1, 2, 3},
each #date(Number.From(Text.Start(x,4)), (Number.From(Text.End(x,1))-1)*3+_, 15)), type list},
{"Value", each _ /3, type number}}),
Expand = Table.ExpandListColumn(Transform, "YYYYQN")
in
ExpandStéphane
- 1 year ago
Given your data:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSlTSUTIyMDINNAQyLI2VYnWQxIyADEMDVDFjIMPUAlXMBMgwg6hLQjEPTQxknokpqhjIPAs0dSZge82VYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Quarter = _t, Amount = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Quarter", type text}, {"Amount", Int64.Type}}), #"Grouped Rows" = Table.Group(#"Changed Type", {"Column1","Quarter"}, { {"Monthly", (t)=> [a=List.Sum(t[Amount]) / 3, b=#date(Number.From(Text.Start(t[Quarter]{0},4)), (Number.From(Text.End(t[Quarter]{0},1))-1)*3+1,15 ), c=List.Accumulate({0..2},{},(s,c)=> s & {Date.AddMonths(b,c)}), d=List.Transform(List.Zip({c, List.Repeat({a},3)}), each Record.FromList(_,{"Date","Amount"})) ][d], type {[Date=date, Amount=number]} }}), #"Expanded Monthly" = Table.ExpandListColumn(#"Grouped Rows", "Monthly"), #"Removed Columns" = Table.RemoveColumns(#"Expanded Monthly",{"Quarter"}), #"Expanded Monthly1" = Table.ExpandRecordColumn(#"Removed Columns", "Monthly", {"Date", "Amount"}) in #"Expanded Monthly1"Produces:
- 1 year ago
NewStep=#table(Table.ColumnNames(YourSourceName),List.TransfromMany(Table.ToRows(YourSourceName),each let a=Text.Split(_{1},"Q") in List.Transform({1..3},each #date(Number.From(a{0}),Number.From(a{1})*3-3+_,15)),(x,y)=>{x{0},y,x{2}/3}))
Hi ch_metglobal , another solution you can possibly look at. Thanks!
let
Source = Excel.CurrentWorkbook(){[Name = "Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type text}, {"Column3", Int64.Type}}),
Custom1 = Table.FromRows(List.Repeat(Table.ToRows(#"Changed Type"),3)),
#"Grouped Rows" = Table.Combine(Table.Group(Custom1, {"Column1", "Column2", "Column3"}, {{"All", each _}})[All]),
Custom2 = Table.Group(Table.TransformColumns(#"Grouped Rows",{"Column3", each Number.Round(_ / 3,1)}),{"Column1"},{{"All",each Table.AddIndexColumn(_,"Index",1,1)}}),
Custom3 = Table.Combine(Table.TransformColumns(Custom2,{"All", each Table.AddIndexColumn(_,"Month",0,1)})[All]),
Custom4 = Table.TransformColumns(Custom3,{"Month", each #date(Number.From(Text.Start(Custom3{_}[Column2],4)),Custom3{_}[Index],15)}),
Custom5 = Custom4[[Column1],[Column3],[Month]]
in
Custom5