Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
2 years ago

Dax si no

Así que tengo una lista de valores que estoy buscando con las fechas de finalización con las que estoy comparando. Quiero saber si aparece "Promociones" y si se completó a tiempo, de lo contrario, si "Promociones" no aparece, busque "Cerrado" y si se completó a tiempo.

Completado a tiempo es si el max(fecha de cambio de estado) < max(fecha de iteración). Creo que tengo esta parte bien. es solo la parte de si 'Promociones' está allí, finalice la declaración y omita la parte para buscar 'Cerrado'

Status spc 2 = 
VAR _maxSC = CALCULATE(MAX('SCR'[Iteration End Date]))
VAR _maxP = CALCULATE(MAX('SCR'[State Change Date]),'SCR'[State]="Promotions")
VAR _maxCL = CALCULATE(MAX('SCR'[State Change Date]),'SCR'[State]="Closed")
VAR _CP = IF(_maxP <= _maxSC, 1,0)
VAR _CC = IF(_maxCL <= _maxSC, 1,0)
return

SWITCH(TRUE(),

    IF(
    SCR[State], "Promotions", "ComP"
    ),
    IF(
    SCR[State], "Closed", "ComC"
    )
)

Este código me da el siguiente error.
La función 'SWITCH' no admite la comparación de valores de tipo Verdadero/Falso con valores de tipo Texto. Considere la posibilidad de utilizar la función VALOR o FORMATO para convertir uno de los valores.

4 Replies

  • No se usa IF dentro de un conmutador
    y puede hacer referencia a SCR[State] porque devolverá el valor de la tabla.
    Es necesario usar SELECETEDVALUE para obtener el valor de sclar

    Ver ejemplo
    Haga clic en el botón Aceptar solución y en el botón de pulgar hacia arriba

    gracias

    Ejemplo =
    var miestado = SELECETEDVALUE(SCR[Estado])
    DEVOLUCIÓN

    SWITCH(TRUE(),
    mystate = "Promociones", "ComP",
    mystate = "Cerrado", "ComC"
    )

  • Gracias. Ya casi está. Cuando uso ese código, y hace la verificación de Promociones, también procede a ejecutar la verificación en Cerrado, por lo que obtengo ambos en los resultados cuando solo quiero que devuelva solo Promociones y si Promociones no está allí, ejecútelo para Cerrado.

  • Hi, @bclausel

    Puedes probar los siguientes métodos.

    Status spc 2 = 
    VAR _maxSC = CALCULATE ( MAX ( 'SCR'[Iteration End Date] ) )
    VAR _maxP = CALCULATE ( MAX ( 'SCR'[State Change Date] ), 'SCR'[State] = "Promotions" )
    VAR _maxCL = CALCULATE ( MAX ( 'SCR'[State Change Date] ), 'SCR'[State] = "Closed" )
    VAR _CP = IF ( _maxP <= _maxSC, 1, 0 )
    VAR _CC = IF ( _maxCL <= _maxSC, 1, 0 )
    RETURN
        SWITCH (
            TRUE (),
            SELECTEDVALUE(SCR[State]) = "Promotions", "ComP",
            SELECTEDVALUE(SCR[State]) = "Closed", "ComC"
        )

    ¿Es este el resultado que esperas? Si no es así, indique qué resultados espera.

    Saludos

    Equipo de apoyo a la comunidad _Charlotte

    Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

  • Me gustaría que primero buscara las "Promociones", ejecutara su verificación sobre si se completó a tiempo o no. Si no hay una "Promociones" haga lo mismo para "Cerrado" pero no quiero que marque en "Cerrado" si encontró un "Promociones". Tengo que calcular un porcentaje de finalización de todos los elementos de trabajo. y consideran que un elemento de trabajo se ha completado si ha llegado a Promociones o se ha cerrado antes de la fecha de finalización de la iteración. si cuenta tanto "Promociones" como "Cerrado" para un solo elemento de trabajo, terminaré con un recuento doble que puede que ni siquiera se acerque a lo que necesito.

    ¡gracias!