Forum Discussion

Arnoh's avatar
Arnoh
Helper III
3 years ago

finding first record

Hi I have the following issue:

 

I have a table as below

 

 

idsource_id 
100  
101100 
102  
103102 
104101 
105104 

 

 

I want to find the first record of 

so the result should look like this

 

idsource_idfirst_id
100 100
101100100
102 102
103102102
104101100
105104100

 

Thanx for helping!

4 Replies

  • Use recursive function in PQ

     

     

    let
        Fx = (id, src) =>
        let pos = List.PositionOf(ID, src)
        in if pos > -1 then Fx(ID{pos}, Src{pos}) else id,
    
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQwUNJRUorVATENgUyQAIRnhJAwBksYQXkmYJ4hlGcK5pkoxcYCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [id = _t, source_id = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"source_id", Int64.Type}}),
        ID = #"Changed Type"[id], src=#"Changed Type"[source_id],
        
        Traced = Table.AddColumn(#"Changed Type", "Root", each fx([id], [source_id]))
    in
        Traced

     

     

     

    • Arnoh's avatar
      Arnoh
      Helper III

      Hi Thanx for your reaction,

       

      I can't get it working. I did try to copy your code in power query. 

      Can you add extra information on how to create the recursive function in Power Query? 

       

      Thanx 

  • Kev74's avatar
    Kev74
    Frequent Visitor

    Hi try it :

     

    first_id = IF(ISBLANK(LOOKUPVALUE('Table'[id], 'Table'[id], 'Table'[source_id])), 'Table'[id], LOOKUPVALUE('Table'[id], 'Table'[id], 'Table'[source_id]))

    • Arnoh's avatar
      Arnoh
      Helper III

      Hi Thanx for your reaction.

      But this is n't going to work.