Forum Discussion

Ashoop2020's avatar
Ashoop2020
Frequent Visitor
3 years ago
Solved

Running Total with a Reset

Hello! I need to create a running total column for the Print Drop Factor column that resets when the Print Circ column is greater than zero. Here is my sample data below: 

 Thank you!

  • Hi, Ashoop2020 ;

    You could add index column first.

    Then add custom column.

    =List.Accumulate(List.FirstN( #"Added Index"[Print Drop Factor],[Index]),0,(state,current)
    => if current=0 then 0 else state + current
    )

    Delete index column.

    The final result:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlSK1SGONMArgouNlYwFAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Print Drop Factor " = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Print Drop Factor ", Int64.Type}}),
        #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Print Drop Factor ", "Print Drop Factor"}}),
        #"Added Index" = Table.AddIndexColumn(#"Renamed Columns", "Index", 1, 1, Int64.Type),
        #"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each 
    List.Accumulate(List.FirstN( #"Added Index"[Print Drop Factor],[Index]),0,(state,current)
    => if current=0 then 0 else state + current
    )),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Index"})
    in
        #"Removed Columns"


    Best Regards,
    Community Support Team _ Yalan Wu
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

2 Replies

  • v-yalanwu-msft's avatar
    v-yalanwu-msft
    Community Support

    Hi, Ashoop2020 ;

    You could add index column first.

    Then add custom column.

    =List.Accumulate(List.FirstN( #"Added Index"[Print Drop Factor],[Index]),0,(state,current)
    => if current=0 then 0 else state + current
    )

    Delete index column.

    The final result:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlSK1SGONMArgouNlYwFAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Print Drop Factor " = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Print Drop Factor ", Int64.Type}}),
        #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Print Drop Factor ", "Print Drop Factor"}}),
        #"Added Index" = Table.AddIndexColumn(#"Renamed Columns", "Index", 1, 1, Int64.Type),
        #"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each 
    List.Accumulate(List.FirstN( #"Added Index"[Print Drop Factor],[Index]),0,(state,current)
    => if current=0 then 0 else state + current
    )),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Index"})
    in
        #"Removed Columns"


    Best Regards,
    Community Support Team _ Yalan Wu
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.