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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
calculator
Regular Visitor

SUMA de horas de trabajadores publicadas por departamento

Hola a todos

Estoy atascado con el siguiente problema. Corrí en círculos durante toda la semana, leí todos los artículos y foros soluciones sobre tablas con dos fechas (y userrelationship()) y LOOKUPVALUE y no pude encontrar el camino a seguir.

En primer lugar, el informe original usa DirectQuery. Esto podría limitar drásticamente el número de posibles soluciones.

Simplificado, el modelo de datos es el siguiente:

screenshot_2020-09-18_11-07-49.png

Mi objetivo es este:
screenshot_2020-09-18_11-12-24.png

Para cada Departamento necesito resumir las horas que cada empleado trabajó para ese departamento. Además, el cálculo debe tener un filtro de fecha, para que pueda buscar las horas publicadas solo para un período de tiempo seleccionado.

Aquí están los datos de demostración: https://drive.google.com/file/d/1BKNwvCDCpW4vuraUTTglP6oOKdNAHBAl/view?usp=sharing

La mejor manera (podría averiguarlo) sería ampliar la tabla De contabilizaciones con una referencia al empleo. Algo así como:

for every time posting:
    lookup in the employment table a match of
        Postings[PersonnelNumber] = Employment[PersonnelNumber]
        && Postings[Date] >= Employment[StartDate] 
        && Postings[Date] <= Employment[EndDate] 

Con eso podría hacer una relación entre Publicaciones y Empleo. Y simplemente use SUMX

5 REPLIES 5
Icey
Community Support
Community Support

Hola @calculator ,

Por favor, compruebe:

1. Relaciones:

relation.PNG

2. Cree una medida:

Measure =
VAR t =
    FILTER (
        CROSSJOIN ( Employment, Postings ),
        Employment[PersonnelNumber] = Postings[PersonellNumber]
            && Postings[Date] >= Employment[StartDate]
            && Postings[Date] <= Employment[EndDate]
    )
RETURN
    SUMX ( t, [HoursQuantity] )

3. Resultado:

filter.gif

Saludos

Icey

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Probé la solución propuesta, tiene todo el sentido y funciona bastante bien para los datos construidos de mi ejemplo.

Pero obtengo un efecto muy extraño con mis datos de producción.

En los datos de producción, la tabla Contabilizaciones contiene algunos campos más. Uno de estos campos es el identificador de proyecto. Nuestros empleados publican su tiempo de trabajo en proyectos. Y como los gerentes de nuestros departamentos siempre quieren saber de dónde vienen los números, necesito crear algunos gráficos detallados.

Así que creé una matriz para mostrar cómo se desglosa la medida para los empleados del departamento y los proyectos para los que trabajaron.

Esto conduce al siguiente efecto:

screenshot_2020-09-24_11-09-39.png

En la matriz superior, El PersonnelNumber se toma de la tabla Worker. Pero el mismo efecto ocurre con Worker[Name] o Employment[PersonnelNumber]. Como puede ver, la medida (sumx se sube a la unión cruzada) y el recuento para el número de personal es incorrecto. Pero el desglose (los informes de proyectos) y la suma total ("Gesamt") muestran los valores correctos.

En la matriz inferior, el PersonnelNumber se toma de la tabla Contabilizaciones. Aquí todos los números son correctos.

Puesto que no tengo ni idea de dónde puede venir esto, ni siquiera puedo proporcionar algunos datos de ejemplo más.

Dado que los gerentes de departamento no conocen a sus empleados por número de personal, los objetos visuales deben usar el campo de nombre. Pero como he descrito anteriormente, el efecto ocurre con cada campo de la tabla Worker.

Hola @calculator ,

No puedo reproducir tu problema.

Por favor, trate de cambiar la dirección de las relaciones a "Ambos".

Saludos

Icey

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Encontré lo siguiente en la documentación de CROSSJOIN:


Esta función no se admite para su uso en el modo DirectQuery cuando se usa en columnas calculadas o reglas de seguridad de nivel de fila (RLS).


Como describí en la publicación inicial, tengo que usar DirectQuery. Y el campo PersonnelNumber de la tabla Empleo es una columna calculada a partir de una tabla auxiliar.

Así que el efecto actual es que el CROSSJOIN omite algunas líneas de la tabla De contabilizaciones. ¿Puede alguien explicar lo que no significa apoyo en ese contexto? ¿Tengo otra opción que no sea usar CROSSJOIN? ¿Es posible crear una columna calculada Empleo en la tabla Contabilizaciones, para poder conectar la tabla Contabilizaciones directamente con la tabla Empleo?

Hola @Icey ,

Muchas gracias por su respuesta.

Necesitaré un poco de tiempo para analizar su sugerencia con mis datos de producción.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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