Forum Discussion

naveen_85's avatar
naveen_85
New Member
4 years ago
Solved

Substract Previous row

Hello Team,

 

i have the below table in power BI, so i need to calculate the below formula by using the below table. much appreciated if you could help on the below.

 

i need to substract with previous row (C2-B2) if satisfies thn it will call (C3-(C2-B2))/C2,C3/C2).

 

=IF((C2-B2)>0,(C3-(C2-B2))/C2,C3/C2)

 

Data refers in excel file as below;

 

C2 = 133

B2 = 128

C3 = 10 ( New Hired Column)

 

MonthTotal PayrollNew HiredTotal temporary
2021061281111
2021071331015
2021081351213
2021091401410
  • Hi naveen_85 

     

    You can first add an Index column which starts at 0 (this column will be used like row number in the following step). Then add a custom column with below code. "Added Index" is the previous step name. Modify it according to your transformation steps. 

    let 
      previousTotal = #"Added Index"{[Index]-1}[Total Payroll],
      diffTotal = [Total Payroll] - previousTotal
    in 
      if diffTotal > 0 then ([New Hired]-diffTotal)/[Total temporary] else [New Hired]/[Total Payroll]

     

    There is an error in the first row because it doesn't have a previous row. You can replace error value with Replace Errors feature under Transform tab > Replace Values. You can format the numbers in the custom column per your need. 

     

    Regards,
    Community Support Team _ Jing
    If this post helps, please Accept it as the solution to help other members find it.

2 Replies

  • let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwMjQwU9JRMjSyAJGGECJWByplDuIbG4NIAxBhipACqzc2BesFMxFSliC+CViDCURrbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Month = _t, #"Total Payroll" = _t, #"New Hired" = _t, #"Total temporary" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Total Payroll", Int64.Type}, {"New Hired", Int64.Type}, {"Total temporary", Int64.Type}}),
        #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
        #"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each if [Total Payroll]-#"Changed Type"[Total Payroll]{[Index]-1} > 0 then [New Hired]-[Total Payroll]+#"Changed Type"[Total Payroll]{[Index]-1} else [New Hired]/[Total Payroll])
    in
        #"Added Custom"

     

    Note:  your teminology is unusual. Usually rows have numbers and columns have letters.

  • v-jingzhang's avatar
    v-jingzhang
    Community Support

    Hi naveen_85 

     

    You can first add an Index column which starts at 0 (this column will be used like row number in the following step). Then add a custom column with below code. "Added Index" is the previous step name. Modify it according to your transformation steps. 

    let 
      previousTotal = #"Added Index"{[Index]-1}[Total Payroll],
      diffTotal = [Total Payroll] - previousTotal
    in 
      if diffTotal > 0 then ([New Hired]-diffTotal)/[Total temporary] else [New Hired]/[Total Payroll]

     

    There is an error in the first row because it doesn't have a previous row. You can replace error value with Replace Errors feature under Transform tab > Replace Values. You can format the numbers in the custom column per your need. 

     

    Regards,
    Community Support Team _ Jing
    If this post helps, please Accept it as the solution to help other members find it.