Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Syndicate_Admin
Administrator
Administrator

Ayuda de DAX para calcular el recuento distinto al aplicar filtros de fecha en cada fila

Hola

Estoy tratando de calcular el total de horas posibles (horas de trabajo esperadas; 40 horas semanales por persona). El truco es el siguiente: necesito incluir solo a los empleados activos (el primer filtro) y necesito ignorar las semanas intermedias en las que están de licencia prolongada (el segundo filtro). Esto funciona bien cuando se ven las horas posibles por persona, pero no funciona cuando se ve el equipo de nivel superior (cuando se ve en una matriz donde se puede expandir Equipo --> Empleado). ¿Alguna sugerencia, por favor? Intenté usar una tabla resumen que calcula las horas posibles por semana por persona, pero tampoco funcionó bien. Estaba pensando en usar COUNTX de alguna manera, pero no me está funcionando.

CALCULAR(
CALCULAR(
DISTINCTCOUNT('Equipos'[Nombre]),
FILTRO(
Equipos,
Equipos[Semana de inicio] <= MIN( 'Calendario'[Inicio de semana] ) &&
Equipos[Fin de la semana] >= MÁXIMO( 'Calendario'[Inicio de semana] )
)),
FILTRO(
'Calendario',
'Calendario'[Inicio de semana] < MIN(ExtLeavers (ExtLeavers)[Fecha de inicio]) ||
'Calendario'[Inicio de semana] > MÁXIMO(ExtLeavers (ExtLeavers)[Fecha de finalización]))
) * (40 * [_WeeksInRange])
3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Gracias por las respuestas. Al ver el total por persona, los filtros funcionan correctamente. El usuario A debe ser 36,9 cada semana, mientras que el usuario B debe ser 0 cada semana de diciembre. Quiero que el total de la subvención calcule las horas por usuario y luego sume las horas. Los totales de fila deberían ser 36,9 para esas semanas, pero en su lugar son 0 o 73,8. La lógica que estoy tratando de hacer es algo así como un SUMX, donde las horas se calculan primero por fila y luego se suman.

Creo que he resuelto el problema. Utilicé una tabla calculada para calcular primero las horas posibles por usuario, por semana, que cumplían las 2 condiciones de filtro que necesitaba. Ese juego me _Summary mesa con WeekStarting, user_email y posible. A continuación, utilicé una medida SUMX para sumar el total de horas posibles. ¡Woohoo! Esperemos que esto ayude a alguien algún día. Los datos están configurados para que tenga una tabla de calendario y datos de tarjeta horaria, donde no todas las personas tendrían horas de tarjeta horaria enviadas todos los días. A continuación, tuve que calcular cuántas horas esperábamos que esa persona/equipo hubiera enviado horas (horas posibles). Tampoco podía confiar únicamente en la tabla de resumen calculada, porque no podía crear relaciones de tabla con las otras tablas debido a las dependencias circulares.

_Summary (Tabla) =
RESUMIRCOLUMNAS.(
'Calendario'[Inicio de semana], Equipos[Correo electrónico],
"Posible",
Fueron _Pos =
CALCULAR(
CALCULAR(
DISTINCTCOUNT('Equipos'[Nombre]),
FILTRO(
Equipos,
Equipos[Semana de inicio] <= MIN( 'Calendario'[Inicio de semana] ) &&
Equipos[Fin de la semana] >= MÁXIMO( 'Calendario'[Inicio de semana] )
)),
FILTRO(
'Calendario',
'Calendario'[Inicio de semana] < MIN(ExtLeavers (ExtLeavers)[Fecha de inicio]) ||
'Calendario'[Inicio de semana] > MÁXIMO(ExtLeavers (ExtLeavers)[Fecha de finalización]))
) * 36.9

Fueron _Resultados = SI(_Pos > 0, _Pos, 0)
DEVOLUCIÓN
SI( _Resultados < 0, 0, _Resultados )
)
Horas posibles =
CALCULAR(
SUMA(_Resumen[Posible]),
_Resumen[Correo electrónico] EN VALORES(Equipos[Correo electrónico]),
_Resumen[Inicio de semana] EN VALORES('Calendario'[Inicio de semana])
)
Ahora puedes ver que no importa cuál sea el contexto, las horas se calculan correctamente. Antes, los totales de las semanas seleccionadas eran 0 en esta tabla (incorrecto) o en otro contexto, era 73,80 (también incorrecto).
PossibleGuru123_0-1707330627152.png

Syndicate_Admin
Administrator
Administrator

@PossibleGuru123 ,

De acuerdo con su declaración, creo que su requisito es filtrar a los empleados que aún están activos.

Sin embargo, creo que su cálculo se basa en su modelo de datos.

Puede verificar la respuesta de amitchandak, si esto no pudo resolver su problema, comparta un archivo de muestra con nosotros y muéstrenos una captura de pantalla con el resultado que desea.

Esto nos facilitará encontrar la solución.

Saludos
Rico Zhou

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
Administrator

@PossibleGuru123 , utilice una tabla de fechas desconectada y utilice una medida de empleados activos/actuales como se indica en el archivo

Current Employees = CALCULATE(DISTINCTCOUNT(Employee[Employee Id]),FILTER(Employee,Employee[Start Date]<=max('Date'[Date]) && (ISBLANK(Employee[End Date]) || Employee[End Date]>max('Date'[Date]))))

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Top Solution Authors
Top Kudoed Authors