Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
Syndicate_Admin
Administrator
Administrator

Cómo manejar valores nulos en la condición if

Quiero agregar una columna personalizada Market in M query y la columna usa una declaración if, en la columna

[#"MarketCap(Mil)"], hay una fila con valor nulo, la he manejado en la declaración if, pero esta fila aún falló (ver icono de error en la pantalla de impresión).
***
"Agregado 1 personalizado" = Tabla.AddColumn(
#"Filas filtradas",
"Tipo de capitalización de mercado",
cada si [#"MarketCap(Mil)"] > 38500 entonces "Grande"
más si [#"MarketCap(Mil)"] > 15000 entonces "Medio"
más si [#"MarketCap(Mil)"] > 4000 entonces "Pequeño"
más si [#"Capitalización de mercado(Mil)"] = nulo entonces nulo
más "Micro"
)
***

Screenshot 2025-09-11 125942.png

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

@Jeanxyz ,

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

Syndicate_Admin
Administrator
Administrator

@Jeanxyz

¿Qué tal si agregas esto como tu primera condición?

cada uno if [#"MarketCap(Mil)"] = null then null,

Syndicate_Admin
Administrator
Administrator

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.

Syndicate_Admin
Administrator
Administrator

@Jeanxyz

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

Cookistador_0-1757589358959.png

Por lo tanto, debe comenzar en todos los casos con la comparación nula

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.