es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Medida DAX de PowerBi para sumar la duración de los intervalos de tiempo filtrados por el actual selector.

Necesito una medida DAX que me dé la suma de las duraciones para múltiples categorías restringidas por un filtro de fecha.

En este ejemplo simplificado hay 2 categorías con 3 subcategorías cada una. Un filtro de fecha y hora en el panel de control está configurado para el período del 2 de enero de 2021 al mediodía hasta el 6 de enero a medianoche. Necesito la duración total acumulada de todas las categorías en este período de tiempo.

Datos de entrada:
Una tabla que contiene varias filas para cada categoría con una fecha de inicio y una fecha de fin.

La parte complicada es que hay pausas entre las marcas de tiempo.

Salida deseada:
Una tabla en el panel de control que contiene la categoría y una medida calculada para la duración total acumulada durante el período seleccionado.

Cuando se cambie el filtro de fecha, la medida también debe cambiar.

Mi solución actual para este problema es una fórmula M para crear una lista de todos los días en cada período de tiempo y desnormalizar todas las listas. En el panel de control, el recuento de filas le da el número de días en el período de tiempo seleccionado. Sin embargo, esta solución requiere una tabla de entrada mucho más grande y no funciona si desea ser exacto hasta el segundo, solo hasta los días.

Intenté resolver esto a través de una medida pero no hice ningún progreso que valga la pena mostrar aquí.

Todos los valores de fecha y hora están en el formato dd.mm.aaaa hh:mm:ss (sistema de 24 horas).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr la salida deseada, se puede crear una medida DAX que sume la duración de cada categoría dentro del período de tiempo seleccionado.

    En primer lugar, se puede crear una columna calculada en la tabla de entrada para calcular la duración entre las fechas de inicio y fin, incluyendo las pausas. Esto se puede hacer utilizando la siguiente fórmula DAX:

    DURACIÓN = SUMX(FILTER('Datos de entrada', 'Datos de entrada'[Categoría]=EARLIER('Datos de entrada'[Categoría])), 'Datos de entrada'[Fin] - 'Datos de entrada'[Inicio])

    Esta fórmula calcula la suma de la duración para cada categoría, filtrando la tabla de entrada por la categoría actual y sumando la diferencia entre las fechas de fin e inicio.

    A continuación, se puede crear una medida para sumar la duración de cada categoría dentro del rango de fechas seleccionado. Esto se puede hacer utilizando la siguiente fórmula DAX:

    Duración sumada =
    CALCULATE(SUM('Datos de entrada'[DURACIÓN]),
    FILTER('Datos de entrada', 'Datos de entrada'[Inicio] >= MIN('Seleccionador de fechas y horas'[Fecha de selección]) &&
    'Datos de entrada'[Fin] <= MAX('Seleccionador de fechas y horas'[Fecha de selección])))

    Esta fórmula calcula la suma de la columna ‘DURACIÓN’ en la tabla de entrada para todas las filas donde la fecha de inicio es mayor o igual a la fecha mínima seleccionada en el seleccionador de fechas y horas, y la fecha de fin es menor o igual a la fecha máxima seleccionada en el seleccionador de fechas y horas.

    Finalmente, se puede crear una tabla en el tablero con la categoría y la medida ‘Duración sumada’, que mostrará la duración para cada categoría dentro del rango de fechas seleccionado.

Comments are closed.