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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
olitetu
Regular Visitor

Adición de columna personalizada con la función If

Estoy intentando agregar una columna que devuelve valores dependiendo del rango en el que se ajuste el valor de otra columna.

Intenté lo siguiente:

• Table.AddColumn('Columnas renombradas', "Recence Groupe",
cada uno si [Recence] < "30" entonces "5"
otro si [Recence] < "90" entonces "4"
otro si [Recence] < "180" luego "3"
otro si [Recence] < "270" luego "2"
otro si [Recence] < "360" luego "1"
otra "0")

Pero los valores devueltos son sólo 5 y 4. Todos los que tienen 3, 2 , 1 caen automáticamente a 0.

1 ACCEPTED SOLUTION

es el campo [Recence] una cadena? si es así, debería decir

si Number.From([Recence]) - 30, etc.

No se pueden comparar números con texto. Obtendrá errores. Sospecho que es porque antes de que no tuvieras errores, así que [Recence] debe ser texto también.

Además, si [Recence] debe ser un número todo el camino, simplemente convierta el campo en un número. En la parte superior izquierda de la columna probalby tiene ABC para texto. Haga clic en eso y conviértalo en un número decimal o entero. Entonces no tienes que usar Number.From() alrededor de él. Háalo muy temprano en los pasos de Power Query antes de agregar columnas personalizadas.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

View solution in original post

7 REPLIES 7
edhans
Super User
Super User

Debe comparar valores. Cuando Power Query realiza una comparación de cadenas, "3" es menor que "4", pero "300" también es menor que "4" porque "300" se ordenará antes de "4" en orden ascendente. Creo que está mirando los valores ASCII de los caracteres.

Debe convertir todo en números o usar Number.From() alrededor de [Recence] y sus cadenas que está comparando.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

He cambiado el tipo de datos a "Números enteros" pero ahora obtener errores en todas partes (antes de que se mostraran los "4" y "5".

• Table.AddColumn('Columnas renombradas', "Recence Groupe",
cada uno si [Recence] < 30 entonces "5"
otro si [Recence] < 90 entonces "4"
otro si [Recence] < 180 entonces "3"
otro si [Recence] < 270 entonces "2"
otro si [Recence] < 360 entonces "1"
"0"))

es el campo [Recence] una cadena? si es así, debería decir

si Number.From([Recence]) - 30, etc.

No se pueden comparar números con texto. Obtendrá errores. Sospecho que es porque antes de que no tuvieras errores, así que [Recence] debe ser texto también.

Además, si [Recence] debe ser un número todo el camino, simplemente convierta el campo en un número. En la parte superior izquierda de la columna probalby tiene ABC para texto. Haga clic en eso y conviértalo en un número decimal o entero. Entonces no tienes que usar Number.From() alrededor de él. Háalo muy temprano en los pasos de Power Query antes de agregar columnas personalizadas.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

• Table.AddColumn('Valor reemplazado26', "_RecenceG",
cada uno si Number.From[Recence] < 30 entonces 5
otro si Number.From[Recence] < 90 then 4
otro si Number.From[Recence] < 180 entonces 3
otro si Number.From[Recence] < 270 entonces 2
otro si Number.From[Recence] < 360 entonces 1
else 0)

He probado esta sintaxis y todavía obtener errores.

La columna Recence se cambió a valores, pero la columna personalizada la cambia de nuevo a text..

Siento no entender lo que está pasando.

Te faltan los corchetes

= Table.AddColumn(#"Replaced Value26", "_RecenceG",
each if Number.From([Recence]) < 30 then 5
else if Number.From([Recence]) < 90 then 4
else if Number.From([Recence]) < 180 then 3
else if Number.From([Recence]) < 270 then 2
else if Number.From([Recence]) < 360 then 1
else 0)


Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting
HotChilli
Super User
Super User

Poner comillas alrededor de los valores hará que se traten como texto. Tendrás un comportamiento inusual. Desea tratar esos valores como números

StephenK
Resolver I
Resolver I

No se puede aplicar menos o mayor que los operadores en un tipo de datos de cadena/texto. Cambie la columna Recence a un tipo de datos numérico.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.