Forum Discussion

SAM190370's avatar
SAM190370
Frequent Visitor
9 years ago
Solved

cursive calculation forecast

Hi,   Can I do something like this in dax or powerquery?   The formular should calculate the forecast using previous months sales and previous month forecast.  If no sales in previous month it sh...
  • ImkeF's avatar
    ImkeF
    9 years ago

    This might work:

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQwMFCK1QEyjGAMUyjDCCalgI2MBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Sales = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Sales", type number}}),
        AddIndex = Table.Buffer(Table.AddIndexColumn(#"Changed Type", "Row", 1, 1)),
        ListGenerate = List.Generate(()=> 
            [Counter=1, Forecast=AddIndex[Sales]{0}],
            each [Counter] <=Table.RowCount(AddIndex),
            each [Forecast = if AddIndex{[Row=Counter]}[Sales]<>null then [Forecast]*0.7+AddIndex{[Row=Counter-1]}[Sales]*0.3 else [Forecast],
            Counter = [Counter]+1
            ]
        ),
        Forecast = Table.FromRecords(ListGenerate),
        #"Merged Queries" = Table.NestedJoin(AddIndex,{"Row"},Forecast,{"Counter"},"Forecast.1",JoinKind.LeftOuter),
        #"Expanded Forecast.1" = Table.ExpandTableColumn(#"Merged Queries", "Forecast.1", {"Forecast"}, {"Forecast"})
    in
        #"Expanded Forecast.1"