Buenos días Javier , antes que nada darte gracias por tus curso y todo lo que he aprendido
Quisiera por favor que me guiaras cómo tratar el siguiente tema o indicarme el video donde puedo ver algo similar que me pueda funcionar
Trabajo en una empresa de logística y por medio de los tableros de power bi mostramos los estados de diferentes guías/paquetes de múltiples tiendas
Esta semana una empresa X, nos compartió un listado de SLAs de los días y horarios para recolección de sus paquetes en sus distintas locaciones, parte darte una idea de la siguiente forma image.png63.43 KB Así para más de 60 tiendas diferentes donde esos son los horarios correctos para la recolección de los paquetes
Como contexto, Nuestro sistema ya tiene la información del día y la hora que se recolectó el paquete
Mi consulta es la siguiente , hay alguna manera práctica de realizar todas estas comprobaciones sin hacer un if o switch interminable donde tenga que poner para cada una de las tiendas [codigo tienda] dia entrega y hora como lo estoy haciendo de la siguiente manera para cada uno de los códigos, image.png43.97 KB He investigado un poco y he visto algo sobre tablas auxiliares, pero al momento no lo he podido implementar
🤖 Esta respuesta fue generada automáticamente por nuestra inteligencia artificial local. Es un
intento único de ayudarte al instante. No responderá a mensajes posteriores en este hilo.
Hola, ¡gracias por tu consulta!
Entiendo perfectamente tu situación. Hacer comprobaciones condicionales anidadas con IF o SWITCH para más de 60 tiendas y días se vuelve rápidamente inmanejable y difícil de mantener.
Tu investigación te llevó en la dirección correcta; la solución ideal es utilizar tu listado de SLAs como una "tabla de búsqueda" o "tabla auxiliar" (lo que en modelado de datos llamamos una tabla de dimensión o lookup table) y relacionarla o utilizar funciones para comparar los datos de tus paquetes con las reglas de SLA.
La forma más práctica de abordar esto en Power BI, sin recurrir a IFs/SWITCHs interminables, es mediante una combinación del modelado de datos y DAX, o incluso Power Query.
Dado que ya tienes la tabla de SLAs (vamos a llamarla Tabla SLAs con columnas como Codigo Tienda, Dia, Hora Inicio SLA, Hora Fin SLA) y tu tabla principal de paquetes (vamos a llamarla Tabla Paquetes con Codigo Tienda, Dia Recoleccion, Hora Recoleccion), puedes crear una columna calculada en tu Tabla Paquetes que verifique si la hora de recolección cae dentro del rango permitido según la Tabla SLAs para esa tienda y día específicos.
Puedes lograr esto utilizando la función LOOKUPVALUE en DAX para obtener las horas de inicio y fin del SLA correspondientes, y luego comparar la hora de recolección.
Aquí tienes un ejemplo de cómo crear esta columna calculada en DAX:
Estado SLA Recoleccion = VAR CurrentStore = 'Tabla Paquetes'[Codigo Tienda] VAR CurrentDay = 'Tabla Paquetes'[Dia Recoleccion] VAR CurrentCollectionTime = 'Tabla Paquetes'[Hora Recoleccion]
VAR SLA_EndTime = LOOKUPVALUE( 'Tabla SLAs'[Hora Fin SLA], 'Tabla SLAs'[Codigo Tienda], CurrentStore, 'Tabla SLAs'[Dia], CurrentDay )
RETURN IF( ISBLANK(SLA_StartTime) || ISBLANK(SLA_EndTime), "No SLA definido", -- Para tiendas/días sin SLA en la tabla IF( CurrentCollectionTime >= SLA_StartTime && CurrentCollectionTime <= SLA_EndTime, "Cumple SLA", "No Cumple SLA" ) ) )
Explicación:
Se definen variables para hacer el código más legible: la tienda actual, el día y la hora de recolección de la fila que se está evaluando.
LOOKUPVALUE se utiliza dos veces para buscar la Hora Inicio SLA y la Hora Fin SLA correspondientes en la Tabla SLAs, basándose en el Codigo Tienda y el Dia de la fila actual de la Tabla Paquetes.
Finalmente, se compara la CurrentCollectionTime con el rango definido por SLA_StartTime y SLA_EndTime. Se incluye una verificación inicial por si no se encuentra un SLA para esa combinación de tienda y día.
Asegúrate de que las columnas de tiempo (`Hora Recoleccion`, `Hora Inicio SLA`, `Hora Fin SLA`) estén en un formato de datos de Hora correcto en Power BI para que la comparación funcione adecuadamente.
Otra alternativa igualmente válida es realizar este proceso en Power Query mediante una combinación (Merge) de tus tablas de paquetes y SLAs, y luego agregar una columna condicional. Esto movería la lógica de la comparación a la fase de transformación de datos.
Este enfoque es mucho más escalable y fácil de mantener que una serie de IFs/SWITCHs, ya que solo necesitas actualizar tu Tabla SLAs si cambian los horarios.