Forum Discussion

sjpaq's avatar
sjpaq
Helper I
2 years ago

Table.TransformColumns Error

I have a powerQuery which combines 2 tables. The resulting table has a few columns that are null as a result of the combine. In one case, I am able to replace the null value with a text value using a the following statement:

 

Now, in another case, I have to replace the null column with a multiplication on 2 other columns. I am trying to use the following statement which results in an error:

= Table.TransformColumns(Source, {"Amount", each if (_ is null and [IndName] = "Response Costs") then ([Hours] * [Hourly Rate]) else _})

 

The error is 

Expression.Error: We cannot apply field access to the type Null.
Details:
Value=
Key=IndName

3 Replies

  • selimovd's avatar
    selimovd
    Most Valuable Professional

    Hey sjpaq ,

     

    as far as I understand it's not possible to reference other columns in the Table.TransformColumns function:

    "Itโ€™s important to note that a transformation can only take place on a column itself"

     

    But you can add it as a new column and then delete the old one:

    = Table.AddColumn(#"Changed Type", "Custom", each if [Amount] is null and [IndName] = "Response Costs" then [Hours] * [Hourly Rate] else [Amount])

     

    If you need any help please let me know.
    If I answered your question I would be happy if you could mark my post as a solution โœ”๏ธ and give it a thumbs up ๐Ÿ‘

    Best regards
    Denis

    Blog: WhatTheFact.bi
    Follow me: twitter.com/DenSelimovic

    • sjpaq's avatar
      sjpaq
      Helper I

      Thank you Denis

      I'm very close with your suggestion. The column [Hours] is on the original table, the column [Hourly Rate] is a lookup value set in a previous step (= Table.ExpandTableColumn(#"Merged Queries", "RankHourlyRates", {"Hourly Rate"}, {"Hourly Rate"})) and I cannot reference it in my multiplication. I get the following error.

       

      Expression.Error: The field 'Hourly Rate' of the record wasn't found.
      Details:
      Breach=BR_Cyber Star 2024
      Date=2/1/2024
      Team Member Name=CTI0
      Rank=Capt
      Group or Cell=CTI
      Activity=Detect
      Hours=8

       

      any ideas?

       

  • PijushRoy's avatar
    PijushRoy
    Community Champion

    Hi sjpaq 

    Can you please try 

     

    = Table.TransformColumns(Source, {"Amount", each if [YourColumnName]=null and [IndName] = "Response Costs") then ([Hours] * [Hourly Rate]) else ""})
    
    Or 
    
    Add new column
     = Table.AddColumn(Source, "Amount", each if [YourColumnName]=null and [IndName] = "Response Costs" then ([Hours]*[Hourly Rate]) else ""}

     


    Let me know if that works for you


    If your requirement is solved, please mark THIS ANSWER as SOLUTION โœ”๏ธ and help other users find the solution quickly. Please hit the Thumbs Up ๐Ÿ‘ button if this comment helps you.

    Thanks
    Pijush
    Linkedin