Quizá nunca te hayas percatado de este aspecto, pero las consecuencias son MUY importantes.
Cuando operamos sobre varias columnas en Power Query empleando List.Product y entre los elementos nos encontramos con un valor null, PQ trata ese null como 1 :OOO ¿cómo!!?
Observa el caso:
Notemos como el uso de la función List.Product en el ejemplo, da tratamiento de 1 al valor null:
Matemáticamente es una locura...
Una posible solución sería reemplazar los valores 'null' por cero, lo que debe solucionar el caso:
Pero, sin duda, la solución más óptima pasa por Agregar una columna personalizada donde agreguemos el producto de las columnas necesarias:
Con esta opción no es necesario forzar reemplazamiento alguno, y el resultado del producto es el esperado... o al menos lo más cercano a la realidad.
No está claro el porqué de este comportamiento, o por que no existe opción alguna en la configuración de la función que resuelva esta situación...
Cuando operamos sobre varias columnas en Power Query empleando List.Product y entre los elementos nos encontramos con un valor null, PQ trata ese null como 1 :OOO ¿cómo!!?
Observa el caso:
Notemos como el uso de la función List.Product en el ejemplo, da tratamiento de 1 al valor null:
let Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content], TipoCambiado = Table.TransformColumnTypes(Origen,{{"Producto", type text}, {"Unidades", Int64.Type}, {"Precio", type number}, {"Factor", type number}}), MultiplicaciónInsertada = Table.AddColumn(TipoCambiado, "Multiplicación", each List.Product({[Unidades], [Precio], [Factor]}, Precision.Double), type number) in MultiplicaciónInsertada
Matemáticamente es una locura...
Una posible solución sería reemplazar los valores 'null' por cero, lo que debe solucionar el caso:
let Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content], TipoCambiado = Table.TransformColumnTypes(Origen,{{"Producto", type text}, {"Unidades", Int64.Type}, {"Precio", type number}, {"Factor", type number}}), ValorReemplazado = Table.ReplaceValue(TipoCambiado,null,0,Replacer.ReplaceValue,{"Unidades", "Precio", "Factor"}), MultiplicaciónInsertada = Table.AddColumn(ValorReemplazado, "Multiplicación", each List.Product({[Unidades], [Precio], [Factor]}, Precision.Double), type number) in MultiplicaciónInsertada
Pero, sin duda, la solución más óptima pasa por Agregar una columna personalizada donde agreguemos el producto de las columnas necesarias:
let Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content], TipoCambiado = Table.TransformColumnTypes(Origen,{{"Producto", type text}, {"Unidades", Int64.Type}, {"Precio", type number}, {"Factor", type number}}), //Opción 1 - List.Product MultiplicaciónInsertada = Table.AddColumn(TipoCambiado, "Multiplicación", each List.Product({[Unidades], [Precio], [Factor]}, Precision.Double), type number), //Opción 2 - Agregar Columna Personalizada AddCol_Multiplicacion = Table.AddColumn(MultiplicaciónInsertada, "Personalizado", each [Unidades]*[Precio]*[Factor]) in AddCol_Multiplicacion
Con esta opción no es necesario forzar reemplazamiento alguno, y el resultado del producto es el esperado... o al menos lo más cercano a la realidad.
No está claro el porqué de este comportamiento, o por que no existe opción alguna en la configuración de la función que resuelva esta situación...
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.