Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
2 years ago

Table.TransformColumns Error

Tengo un powerQuery que combina 2 tablas. La tabla resultante tiene algunas columnas que son nulas como resultado de la combinación. En un caso, puedo reemplazar el valor nulo con un valor de texto usando la siguiente instrucción:

Ahora, en otro caso, tengo que reemplazar la columna nula con una multiplicación en otras 2 columnas. Estoy tratando de usar la siguiente declaración que da como resultado un error:

= Table.TransformColumns(Source, {"Amount", each if (_ es null y [IndName] = "Costos de respuesta") then ([Horas] * [Tarifa por hora]) else _})

El error es

Expression.Error: No se puede aplicar el acceso de campo al tipo Null.
Detalles:
Valor=
Clave=Nombre de Ind

3 Replies

  • Hola @sjpaq ,

    por lo que entiendo, no es posible hacer referencia a otras columnas en la función Table.TransformColumns :

    "Es importante tener en cuenta que una transformación solo puede tener lugar en una columna en sí"

    Pero puede agregarlo como una nueva columna y luego eliminar la anterior:

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

    Si necesitas ayuda, por favor házmelo saber.
    Si respondiera a tu pregunta, me encantaría que pudieras marcar mi publicación como una solución ✔️ y darle un pulgar hacia arriba 👍

    Saludos
    Denis

    Blog: WhatTheFact.bi
    Sígueme: twitter.com/DenSelimovic

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      Gracias Denis

      Estoy muy cerca de tu sugerencia. La columna [Horas] está en la tabla original, la columna [Tarifa por hora] es un valor de búsqueda establecido en un paso anterior (= Table.ExpandTableColumn(#"Consultas combinadas", "RankHourlyRates", {"Tarifa por hora"}, {"Tarifa por hora"})) y no puedo hacer referencia a ella en mi multiplicación. Obtengo el siguiente error.

      Expression.Error: No se encontró el campo "Tarifa por hora" del registro.
      Detalles:
      Breach=BR_Cyber Estrella 2024
      Fecha=2/1/2024
      Nombre del miembro del equipo=CTI0
      Rango=Capt
      Grupo o celda = CTI
      Actividad=Detectar
      Horas=8

      ¿Alguna idea?

  • Hola @sjpaq

    ¿Puedes intentarlo, por favor?

    = 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 ""}


    Hazme saber si eso funciona para ti


    Si su requerimiento está resuelto, marque ESTA RESPUESTA como SOLUCIÓN ✔️ y ayude a otros usuarios a encontrar la solución rápidamente. Por favor, pulsa el botón de pulgar hacia arriba 👍 si este comentario te ayuda.

    Gracias
    Piyush
    Linkedin