SI con texto y números

Un usuario Pregunto ✅

Aeterni

Hola,

Tengo una tabla de dos columnas:

  • Columna A: tiene celdas en blanco o fecha y hora
  • Columna B: tiene números o texto
    Anotación 2019-08-10 090215.png

Me gustaría crear una tercera columna:

  • si la columna A está EN BLANCO -> EN BLANCO
  • si la columna B es TEXTO -> EN BLANCO
  • si la columna B es mayor que 2 ->> 2
  • más -> <2

Escribí esta fórmula, pero aparece el siguiente mensaje de error: No se puede convertir el valor ‘SLA incumplido’ del tipo Texto al tipo Número.

SLA >3 = if(ISBLANK(PowerBI[DueBy]),BLANK(),IF(VALUE(PowerBI[SLA Alert])<2,,1,,0))

También probé con esta fórmula, pero aparece el siguiente mensaje de error: Las operaciones de comparación de DAX no admiten la comparación de valores de tipo Texto con valores de tipo Número. Considere usar la función VALOR o FORMATO para convertir uno de los valores.

SLA >3 = if(ISBLANK(PowerBI[DueBy]),BLANK(),if(IFERROR(PowerBI[SLA Alert],BLANK()),BLANK(),IF(PowerBI[SLA Alert]<2,,1,,0)))

Ambos mensajes de error son claros, pero no puedo encontrar una solución.

Gracias por tu ayuda.

Saludos.

Stachu

En respuesta a Aeterni

Bien, primero hablemos de la sintaxis

Lo que funciona para ti es esto:

IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2,, 1,, 1 )

la cosa es ‘2’, es en realidad lo mismo que ‘2’. para mi, o como seria el ‘2,0’ para ti

IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2,, 1,, 1 )

las comas rojas son un separador decimal, las azules son un separador de listas. Es por eso que esto también debería funcionar:

IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2,0, 1,0, 1 )

Como usa la configuración en inglés modificada, le sugiero que use la opción predeterminada para decimal: el punto ‘.’ y coma como separador de lista

ahora el problema lógico con este SI (usaré ‘.’ como separador decimal para que quede más claro)

IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2., 1., 1 )

vuelve ‘1.’ de verdad y ‘1’ para FALSO. Que siempre es 1 con cualquiera que sea el formato en su columna. Debe cambiar uno de los ‘1’ por algo que desee ver, como publiqué anteriormente:

Test = IF (
    ISBLANK ( PowerBI[DueBy] ),
    BLANK (),
    IF (
        ISERROR ( VALUE ( PowerBI[SLA Alert] ) ),
        BLANK (),
        IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2 , 2 , 1 )
    )
)

‘2’ para VERDADERO y ‘1’ para FALSO

Stachu

hmm, supongo que si tanto el signo decimal como el separador de lista están configurados en coma, su sintaxis sería correcta. y si esa es su configuración, entonces cualquier cosa puede ser el identificador de texto, por lo que no es de extrañar que el mensaje «dar error

si ese es el caso (aunque no estoy seguro de que el sistema operativo permita una configuración tan arriesgada), esta sintaxis debería funcionar

Test = IF (
    ISBLANK ( PowerBI[DueBy] ),
    BLANK (),
    IF (
        ISERROR ( VALUE ( PowerBI[SLA Alert] ) ),
        BLANK (),
        IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2 , 2 , 1 )
    )
)

devuelve 2 para> 2 y 1 para <= 2

Stachu

prueba esto

Column =
IF (
    ISBLANK ( PowerBI[DueBy] ),
    BLANK (),
    IF (
        ISERROR ( VALUE ( PowerBI[SLA Alert] ) ),
        BLANK (),
        IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2, ">2", "<2" )
    )
)

Aeterni

En respuesta a Stachu

Hola,

Gracias por tus comentarios.

Cambié ligeramente su fórmula porque hubo un par de errores de sintaxis … al menos mi aplicación PowerBi arrojaba errores de sintaxis:

  • «> 2» y «<2" -> error de sintaxis – reemplazado con «1» y «2» para fines de prueba
  • dos comas son necesarias en la última instrucción IF

Test = IF (
    ISBLANK ( PowerBI[DueBy] ),
    BLANK (),
    IF (
        ISERROR ( VALUE ( PowerBI[SLA Alert] ) ),
        BLANK (),
        IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2,, 1,, 1 )
    )
)

En general, la fórmula funciona porque filtra el texto (obtengo celdas en blanco cuando la fórmula llega a una celda de texto), sin embargo, la última instrucción IF no funciona porque obtengo solo «1», pero tengo muchos valores menos de 2.

Saludos.

Stachu

En respuesta a Aeterni

interesante, ¿cuál es su configuración regional? específicamente separador de lista, separador decimal e identificador de texto

la sintaxis que publiqué es correcta, incluso se formateó usando https://www.daxformatter.com/

Capture.PNG

devuelve correctamente «<2" y "> 2″ respectivamente

Sin embargo, su sintaxis no funciona para mí: pasa a muchos argumentos para IF (que se espera con 4 comas)
Capture.PNG

El formateador DAX también devuelve un error con su sintaxis

¿Cuál es tu versión de PowerBI? ¿Puede publicar una captura de pantalla del error de sintaxis que aparece cuando prueba el código que publiqué?

Aeterni

En respuesta a Stachu

Hola,

debajo de mi configuración regional en mi PC.Anotación 2019-08-10 090215.png

Debajo de mi configuración regional en PowerBIAnotación 2019-08-10 090215.png

Mi versión de PowerBI es 2.71.5523.941 de 64 bits (julio de 2019)

Debajo de una captura de pantalla del errorAnotación 2019-08-11 213126.png

De hecho, mi «Separador decimal» y «Separador de lista» es el mismo «,»

¿Sugeriría cambiar uno de los dos … y en caso afirmativo, qué símbolo debo usar?

Gracias

Stachu

En respuesta a Aeterni

Bien, primero hablemos de la sintaxis

Lo que funciona para ti es esto:

IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2,, 1,, 1 )

la cosa es ‘2’, es en realidad lo mismo que ‘2’. para mi, o como seria el ‘2,0’ para ti

IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2,, 1,, 1 )

las comas rojas son un separador decimal, las azules son un separador de listas. Es por eso que esto también debería funcionar:

IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2,0, 1,0, 1 )

Como usa la configuración en inglés modificada, le sugiero que use la opción predeterminada para decimal: el punto ‘.’ y coma como separador de lista

ahora el problema lógico con este SI (usaré ‘.’ como separador decimal para que quede más claro)

IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2., 1., 1 )

vuelve ‘1.’ de verdad y ‘1’ para FALSO. Que siempre es 1 con cualquiera que sea el formato en su columna. Debe cambiar uno de los ‘1’ por algo que desee ver, como publiqué anteriormente:

Test = IF (
    ISBLANK ( PowerBI[DueBy] ),
    BLANK (),
    IF (
        ISERROR ( VALUE ( PowerBI[SLA Alert] ) ),
        BLANK (),
        IF ( VALUE ( 'PowerBI'[SLA Alert] ) > 2 , 2 , 1 )
    )
)

‘2’ para VERDADERO y ‘1’ para FALSO

Aeterni

En respuesta a Stachu

Hola,

  • Cambié mi configuración local -> ‘.’ como separador decimal
  • Reconstruí mi base de datos … de lo contrario, todavía tenía el «,» como separador decimal

Ahora funciona.

Gracias.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *