Forum Discussion
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
- Syndicate_Admin
Administrator
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 sclarVer ejemplo
Haga clic en el botón Aceptar solución y en el botón de pulgar hacia arribagracias
Ejemplo =
var miestado = SELECETEDVALUE(SCR[Estado])
DEVOLUCIÓNSWITCH(TRUE(),
mystate = "Promociones", "ComP",
mystate = "Cerrado", "ComC"
) - Syndicate_Admin
Administrator
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.
- Syndicate_Admin
Administrator
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.
- Syndicate_Admin
Administrator
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!