Dax a una suma acumulativa

Un usuario Pregunto ✅

brunoemr

Hola a todos,

Estoy luchando aquí…

Estoy tratando de hacer un gráfico con una suma acumulada de horas reportadas durante el período de contratos para cada contrato.

Las horas informadas están en la tabla Timeworked y el período del contrato está en TblContracts, campos TblContracts[Contract Start Date] y TblContracts[Contract End Date] no tener ninguna relación.

Mi modelo de datos:

brunoemr_1-1612348700362.png

brunoemr_0-1612348687627.png

Estoy usando el Dax a continuación, devuelve las horas informadas en el período, pero no devuelve los valores acumulativos.

Cumulative TimeWorked =
var starts_ = MAX(TblContracts[Contract Start Date])
var ends = MAX(TblContracts[Contract End Date])
return
CALCULATE(
SUM(Timeworked[Total_time_in_hours])
,FILTER( Date_dim,
Date_dim[full_date] >= starts_ &&
Date_dim[full_date] <= ends
)
,CROSSFILTER (Timeworked[date_dim_id],Date_dim[date_dim_id], BOTH )
,CROSSFILTER ( Timeworked[task_dim_id], Overview[project_task_dim_id], BOTH)
)

¿Cómo puedo lograr los valores acumulativos?

Gracias por adelantado.

BrunoR.

brunoemr

Hola,

He encontrado una solución.

Dax final:

Cumulative TimeWorked = 
VAR minDate =
    MIN ( TblContracts[Contract Start Date] )
VAR maxDate =
    MAX ( TblContracts[Contract End Date] )
VAR totalHours =
    CALCULATE (
        SUM ( Timeworked[Total_time_in_hours] ),
        FILTER (
                ALL ( Date_dim ),
                Date_dim[date] >= minDate
                && Date_dim[date] <= MAX ( Date_dim[date] )
                && ( MAX ( Date_dim[date] ) <= TODAY() && MAX ( Date_dim[date] ) <= maxDate)
        )
        ,   CROSSFILTER ( TblContracts[SNOW reporting ticket - billable ], Overview[project_task_number], BOTH )
        ,   CROSSFILTER ( Timeworked[task_dim_id], Overview[project_task_dim_id], Both)            
        ,   CROSSFILTER ( Timeworked[date_dim_id], Date_dim[date_dim_id], BOTH )
    )

return totalHours

Gracias,

Bruno

brunoemr

Hola,

He encontrado una solución.

Dax final:

Cumulative TimeWorked = 
VAR minDate =
    MIN ( TblContracts[Contract Start Date] )
VAR maxDate =
    MAX ( TblContracts[Contract End Date] )
VAR totalHours =
    CALCULATE (
        SUM ( Timeworked[Total_time_in_hours] ),
        FILTER (
                ALL ( Date_dim ),
                Date_dim[date] >= minDate
                && Date_dim[date] <= MAX ( Date_dim[date] )
                && ( MAX ( Date_dim[date] ) <= TODAY() && MAX ( Date_dim[date] ) <= maxDate)
        )
        ,   CROSSFILTER ( TblContracts[SNOW reporting ticket - billable ], Overview[project_task_number], BOTH )
        ,   CROSSFILTER ( Timeworked[task_dim_id], Overview[project_task_dim_id], Both)            
        ,   CROSSFILTER ( Timeworked[date_dim_id], Date_dim[date_dim_id], BOTH )
    )

return totalHours

Gracias,

Bruno

amichandak

@brunoemr, ¿puede compartir datos de muestra y resultados de muestra en formato de tabla? O un pbix de muestra después de eliminar datos confidenciales.

consulte si este blog puede ayudar

https://community.powerbi.com/t5/Community-Blog/HR-Analytics-Active-Employee-Hire-and-Termination-tr…

brunoemr

En respuesta a amichandak

Por supuesto, aquí hay una muestra:

brunoemr_0-1612357457730.png

brunoemr_1-1612357475832.png

brunoemr_0-1612361768605.png

Mi Datedim tiene todas las fechas desde 2013 hasta 2030, necesito evitar fechas futuras.

Gracias

Deja un comentario

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