Si declaración para construir el rango de tiempo

Un usuario Pregunto ✅

GrahamR99

Hola

Tengo una columna personalizada que tiene este código.

Talk_Time_Range = IF(Maintel_Data[Talk_Time_Seconds] >= 0 && Maintel_Data[Talk_Time_Seconds]<=30,"Menos de 30 segundos",IF(Maintel_Data[Talk_Time_Seconds] >= 31 && Maintel_Data[Talk_Time_Seconds]<=60,"30 - 60 segundos",SI(Maintel_Data[Talk_Time_Seconds] >= 61 && Maintel_Data[Talk_Time_Seconds]<=120,"1 - 2 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 121 && Maintel_Data[Talk_Time_Seconds]<180,"2 - 3 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 181 && Maintel_Data[Talk_Time_Seconds]<240,"3 - 4 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 241 && Maintel_Data[Talk_Time_Seconds]<300,"4 - 5 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 301 && Maintel_Data[Talk_Time_Seconds]<360,"5 - 6 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 361 && Maintel_Data[Talk_Time_Seconds]<420,"6 - 7 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 421 && Maintel_Data[Talk_Time_Seconds]<480,"7 - 8 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 481 && Maintel_Data[Talk_Time_Seconds]<540,"8 - 9 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 541 && Maintel_Data[Talk_Time_Seconds]<600,"9 - 10 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 601 && Maintel_Data[Talk_Time_Seconds]<1200,"10 - 20 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 1201 && Maintel_Data[Talk_Time_Seconds]<1800,"20 - 30 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 1801 && Maintel_Data[Talk_Time_Seconds]<2400,"30 - 40 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 2401 && Maintel_Data[Talk_Time_Seconds]<3000,"40 - 50 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 3001 && Maintel_Data[Talk_Time_Seconds]<3600,"50 - 60 minutos",SI(Maintel_Data[Talk_Time_Seconds] >= 3601 && Maintel_Data[Talk_Time_Seconds]<7200,"1 - 2 horas",SI(Maintel_Data[Talk_Time_Seconds] >= 7201 && Maintel_Data[Talk_Time_Seconds]<10800,"2 - 3 horas",SI(Maintel_Data[Talk_Time_Seconds] >= 10801 && Maintel_Data[Talk_Time_Seconds]<14400,"3 - 4 horas",SI(Maintel_Data[Talk_Time_Seconds] >= 14401 && Maintel_Data[Talk_Time_Seconds]<18000,"4 - 5 horas",SI(Maintel_Data[Talk_Time_Seconds] >= 18001 && Maintel_Data[Talk_Time_Seconds]<21600,"5 - 6 horas","6 horas más")))))))))))))))))))))
Pero si la columna Maintel_Data[Talk_Time_Seconds] tiene más de 60, dice «30 – 60 segundos», pero debería decir «1 – 2 minutos», ¿he hecho algo mal?
Saludos
GrahamR99

edhans

Funciona bien para mí. Vuelve 1-2 minutos. Necesitaría ver sus datos para entender lo que está pasando.

En lugar de declaraciones IF anidadas, considere cambiar a la función SWITCH. Por ejemplo:

New Talk Time = 
SWITCH(
    TRUE(),
    Maintel_Data[Talk_Time_Seconds] >= 0 && Maintel_Data[Talk_Time_Seconds] <= 30, "Under 30 Seconds",
    Maintel_Data[Talk_Time_Seconds] > 30 && Maintel_Data[Talk_Time_Seconds] <= 60, "30-60 Seconds",
    Maintel_Data[Talk_Time_Seconds] > 60 && Maintel_Data[Talk_Time_Seconds] <= 120, "1-2 Minutes",
    Maintel_Data[Talk_Time_Seconds] > 120 && Maintel_Data[Talk_Time_Seconds] <= 180, "2-3 Minutes",
    Maintel_Data[Talk_Time_Seconds] > 180 && Maintel_Data[Talk_Time_Seconds] <= 240, "3-4 Minutes"
)

edhans

Funciona bien para mí. Vuelve 1-2 minutos. Necesitaría ver sus datos para entender lo que está pasando.

En lugar de declaraciones IF anidadas, considere cambiar a la función SWITCH. Por ejemplo:

New Talk Time = 
SWITCH(
    TRUE(),
    Maintel_Data[Talk_Time_Seconds] >= 0 && Maintel_Data[Talk_Time_Seconds] <= 30, "Under 30 Seconds",
    Maintel_Data[Talk_Time_Seconds] > 30 && Maintel_Data[Talk_Time_Seconds] <= 60, "30-60 Seconds",
    Maintel_Data[Talk_Time_Seconds] > 60 && Maintel_Data[Talk_Time_Seconds] <= 120, "1-2 Minutes",
    Maintel_Data[Talk_Time_Seconds] > 120 && Maintel_Data[Talk_Time_Seconds] <= 180, "2-3 Minutes",
    Maintel_Data[Talk_Time_Seconds] > 180 && Maintel_Data[Talk_Time_Seconds] <= 240, "3-4 Minutes"
)

GrahamR99

En respuesta a edhans

Hola

No pensé que eran los datos, pero después de verificar que lo eran.

Estaba convirtiendo segundos, pero no me di cuenta de que solo obtenía los segundos, necesitaba agregar las horas y los minutos a mi campo de segundos.

Usé su código de interruptor y también funcionó.

Saludos

GrahamR99

edhans

En respuesta a GrahamR99

Excelente. ¡Me alegro de que lo hayas solucionado y hayas aprendido una nueva función! 😁 SWITCH es mucho más fácil de leer y editar.

edhans

En respuesta a edhans

Por cierto, @GrahamR99 noté un pequeño error en tu código:

No manejará 300 segundos. Se desplegará hasta la sección «Más de 6 horas». Asegúrate de arreglar eso cuando estés cubriendo a SWITCH.

EDITAR: en realidad, es todo su código el resto del camino hacia abajo. Los segundos de exactamente 420, 480, 540, etc. fallarán.

2020-01-21 08_46_32-Sin título - Power BI Desktop.png

sucio

En respuesta a edhans

Estoy de acuerdo con @edhans,

Su código funciona bien para mí, pero un cambio a Switch sería mucho más limpio y fácil de leer. A continuación hay 2 columnas, una con su código y otra con edhans.

Tiempo.PNG

Deja un comentario

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