Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
LuciaS
Frequent Visitor

Previous value from one calculated column

Hi!

I want to create column in power query. It is count of previous value from new column / Rate . In first cell we need to strart with 1 as previous value and then continue with privious values. 

Is there some way to create this column in power query .

Def= if [Index]=1 then 1/[Rate] else List.Range(Source[Def],[Index]-1,1)/[Rate]

LuciaS_2-1680683255803.png

 

 

Thank you !

1 ACCEPTED SOLUTION

@AlienSx  Thanks for your solutions maybe I am doing someting wrong but there is still Expression.Error: A circular reference was encountered during evaluation. But  this works for me :

= List.Transform(List.Skip(List.Accumulate(#"Zmenený typ1"[Rate], {1}, (s,c)=> s & {List.Last(s)/c})), Number.From)

 

but thanks i appreciate it

View solution in original post

9 REPLIES 9
LuciaS
Frequent Visitor

@AlienSx Only first cell is Ok others are with  Error 

LuciaS_0-1680685905540.png

Translation :

Expression.Error: Def table column not found.
Details:
Def

Formula can't find [Def] column in Source table. You either don't have a table named Source or colum named Def in there. Do you still have Zdroj table? Use it instead of Source in the code. 

@AlienSx Translation of Source is Zdroj in my language . I thaought that is ok to put there only "Source".  I repleace Source with name of table and there is anothr error 

LuciaS_0-1680686760160.png

Expression.Error: A circular reference was encountered during evaluation.

@LuciaS what you are trying to do is recursive calculations. So you should be using something like this (via List.Accumulate)

= Table.AddColumn(Source, "DEF", (w) => List.Accumulate(List.FirstN(Source[Rate], w[Index]), 1, (s,c) => s/c))

 or write a recursive function and call it to create DEF column

    f_recursive = (x, rates, i, max_i) =>
        let 
            a = x / rates{i}
        in if i = max_i then a else @f_recursive(a, rates, i+1, max_i),
    DEF = Table.AddColumn(Source, "DEF", (w) => f_recursive(1, Source[Rate], 0, w[Index] - 1))

@AlienSx  Thanks for your solutions maybe I am doing someting wrong but there is still Expression.Error: A circular reference was encountered during evaluation. But  this works for me :

= List.Transform(List.Skip(List.Accumulate(#"Zmenený typ1"[Rate], {1}, (s,c)=> s & {List.Last(s)/c})), Number.From)

 

but thanks i appreciate it

I completely overlooked that you are trying to create [Def] column with this code 😂 It's not going to work. Give me some time. Taking your numbers into consideration overflow comes sooner than later. 

 

LuciaS
Frequent Visitor

@AlienSx Hello, there is still Error becaouse of Def column which I am creating . Is tehre some way to sole it ? 

LuciaS_0-1680685539953.png

 

what kind of error? Select a cell with error and get back with PQ error message

AlienSx
Super User
Super User

Hello, @LuciaS List.Range returns you a list, not a single value. Providing that your index column starts with 1, try this instead

Def = if [Index]= 1 then 1/[Rate] else Source[Def]{[Index] - 2}/[Rate]

 

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.