Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Quiero agregar una columna personalizada Market in M query y la columna usa una declaración if, en la columna
El error en la consulta M se produce porque está intentando realizar una comparación numérica, como [#"MarketCap(Mil)"] > 38500, en un valor nulo. En Power Query, esta operación no se evalúa como verdadera o falsa; da como resultado un error que detiene la instrucción if de continuar. El código intenta comprobar si hay null, pero solo lo hace después de que ya se hayan probado las comparaciones numéricas con errores.
La solución es reestructurar su declaración if para verificar primero si hay null. Esto garantiza que cualquier fila con un valor nulo se controle inmediatamente y salga de la lógica, lo que evita que las comparaciones numéricas se intenten en esa fila.
"Added custom 1" = Table.AddColumn(
#"Filtered rows",
"MarketCap Type",
each if [#"MarketCap(Mil)"] = null then null
else if [#"MarketCap(Mil)"] > 38500 then "Large"
else if [#"MarketCap(Mil)"] > 15000 then "Medium"
else if [#"MarketCap(Mil)"] > 4000 then "Small"
else "Micro"
)
Alternativamente, un enfoque más sólido es usar un try... de lo contrario, expresión. Esta estructura intentará ejecutar la lógica dentro del bloque try. Si se produce un error en alguna parte de ella por cualquier motivo (incluido un valor nulo, un valor de texto u otro error), se detendrá correctamente y devolverá el valor especificado en la cláusula de lo contrario en lugar de producir un error en toda la consulta.
"Added custom 1" = Table.AddColumn(
#"Filtered rows",
"MarketCap Type",
each try (
if [#"MarketCap(Mil)"] > 38500 then "Large"
else if [#"MarketCap(Mil)"] > 15000 then "Medium"
else if [#"MarketCap(Mil)"] > 4000 then "Small"
else "Micro"
) otherwise null
)
Saludos
¿Qué tal si agregas esto como tu primera condición?
cada uno if [#"MarketCap(Mil)"] = null then null,
Hola @Jeanxyz
Utilice el siguiente código
"Agregado 1 personalizado" = Tabla.AddColumn(
#"Filas filtradas",
"Tipo de capitalización de mercado",
cada uno if [#"MarketCap(Mil)"] = null then null
else if [#"MarketCap(Mil)"] > 38500 then "Large"
else if [#"MarketCap(Mil)"] > 15000 then "Medium"
de lo contrario, si [#"MarketCap(Mil)"] > 4000 entonces "Small"
de lo contrario "Micro"
)
solo usa la parte nula al principio
Si esto responde a sus preguntas, acéptelo amablemente como una solución y felicite.
Este código debería funcionar
"Agregado 1 personalizado" = Tabla.AddColumn(
#"Filas filtradas",
"Tipo de capitalización de mercado",
cada uno if [#"MarketCap(Mil)"] = null then null
else if [#"MarketCap(Mil)"] > 38500 then "Large"
else if [#"MarketCap(Mil)"] > 15000 then "Medium"
de lo contrario, si [#"MarketCap(Mil)"] > 4000 entonces "Small"
de lo contrario "Micro"
)
El problema en su código es que M intenta comparar un valor nulo con un número y devuelve un error
Por lo tanto, debe comenzar en todos los casos con la comparación nula
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
Check out the November 2025 Power BI update to learn about new features.