Forum Discussion
indefinido
En la imagen de abajo hay cloumn Nombre cuyo nombre de empolyee N1 para quien el trabajo ha asignado de 1-1-2020 y 3-1-2020 y el trabajo overal es 20 , aquí hay que encontrar el promedio y en la tabla de abajo que ha tomado Previlaged Leave el 1-1-2020 por lo que el promedio de la jornada laboral será 10(20/número de día exculpando Previlaged Leave) si no ha tomado ninguna licencia thn promedio es 6.67 ( 20/number de días es decir 3 porque desde la fecha de inicio del proyecto hasta la fecha de finalización es el valor es 4 así que (20/3 = 6.67)) Cómo conseguirlo en power bi .
Aquí te daré algunos consejos sobre cómo transformar el modelo de datos y cómo construir medidas.
En primer lugar, necesitamos construir una tabla calculada para construir una matriz visual como la esquina izquierda hacia arriba.
Table = GENERATE ( SUMMARIZE ( TASK, TASK[NAME], TASK[TASK], TASK[SUB] ), ADDCOLUMNS ( CALENDARAUTO (), "YEAR", YEAR ( [Date] ), "MONTH", MONTH ( [Date] ), "DAY", DAY ( [Date] ) ) )Luego necesitamos expandir la fecha de licencia en Tabla de licencias de empleados.
Como referencia: Expandir un intervalo de fechas
Necesitamos Resta +1, esta es la diferencia entre nuestro caso y muestra en el blog anterior.
Nueva tabla de licencias de empleados.
A continuación, agregamos una columna Leave Flag en la tabla calculada.
Leave Flag = IF('Table'[Date] IN VALUES('EMPLOYEE LEAVE'[Leave Day]),"L")A continuación, compile la medida como se muestra a continuación.
Measure = VAR _START = CALCULATE(MAX(TASK[START]),FILTER(ALL(TASK),TASK[NAME]=MAX('Table'[NAME])&&TASK[TASK]=MAX('Table'[TASK])&&TASK[SUB]=MAX('Table'[SUB]))) VAR _END = CALCULATE(MAX(TASK[END]),FILTER(ALL(TASK),TASK[NAME]=MAX('Table'[NAME])&&TASK[TASK]=MAX('Table'[TASK])&&TASK[SUB]=MAX('Table'[SUB]))) VAR _DayDiff = CALCULATE(COUNT('Table'[Date]),FILTER(ALL('Table'),'Table'[NAME] = MAX(TASK[NAME])&&'Table'[TASK]=MAX(TASK[TASK])&&'Table'[SUB] = MAX(TASK[SUB])&&'Table'[Date]>=_START&&'Table'[Date]<=_END&&'Table'[Leave Flag]=BLANK())) VAR _EFFORT = CALCULATE(SUM(TASK[EFFORT]),FILTER(ALL(TASK),TASK[NAME]=MAX('Table'[NAME])&&TASK[TASK]=MAX('Table'[TASK])&&TASK[SUB]=MAX('Table'[SUB]))) VAR _RESULT = IF(MAX('Table'[Date])>=_START&&MAX('Table'[Date])<=_END,IF(MAX('Table'[Leave Flag])=BLANK(),DIVIDE(_EFFORT,_DayDiff),"L")) RETURN _RESULTConstruir una matriz y el resultado es el siguiente.
Saludos
Rico ZhouSi esta publicación ayuda, entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
4 Replies
- Syndicate_Admin
Administrator
Creo que es necesario reformular la declaración del problema. No está claro.
La imagen no se puede girar. Algunos datos de muestra darán más claridad junto con la declaración del problema- Syndicate_Admin
Administrator
Tengo dos tabla una tabla de tareas y 2 ª uno es empolyee dejar tomado tabla
en la tabla de tareas se muestra el nombre del empolyee que trabaja en qué tarea y también su mostrar la fecha de inicio y la fecha de finalización del proyecto junto con las horas de trabajo overal,
aquí tenemos que encontrar el promedio de horas de trabajo ejemplo si trabajó de 1-ene a 5- ene 2020 entonces el número de días es "5 días" entonces la hora de trabajo overal es 15 entonces el promedio es 15/5=3( sólo es posible si esa persona no está de licencia durante estos 5 días) , en caso de que él a una licencia en 1-ene-2020 y 4-ene-2020 entonces fuera 5days él estuvo ausente por 2days eso significa que trabajó sólo 3days i.e 2-jan-2020,3-jan-2020 y 5-jan-2020, ahora el trabajo promedio es 15/3=5, ese valor tengo que mostrar en la fecha sabia es decir
1-ene-2020 = leave has to show 2-jan-2020 = 5 , 3-jan-202 =5 , 4-jan-2020 =Leave and 5-jan-2020 = 5, espero que esto esté bien el valor tiene que mostrarse en leave tracker.
- Syndicate_Admin
Administrator
Aquí te daré algunos consejos sobre cómo transformar el modelo de datos y cómo construir medidas.
En primer lugar, necesitamos construir una tabla calculada para construir una matriz visual como la esquina izquierda hacia arriba.
Table = GENERATE ( SUMMARIZE ( TASK, TASK[NAME], TASK[TASK], TASK[SUB] ), ADDCOLUMNS ( CALENDARAUTO (), "YEAR", YEAR ( [Date] ), "MONTH", MONTH ( [Date] ), "DAY", DAY ( [Date] ) ) )Luego necesitamos expandir la fecha de licencia en Tabla de licencias de empleados.
Como referencia: Expandir un intervalo de fechas
Necesitamos Resta +1, esta es la diferencia entre nuestro caso y muestra en el blog anterior.
Nueva tabla de licencias de empleados.
A continuación, agregamos una columna Leave Flag en la tabla calculada.
Leave Flag = IF('Table'[Date] IN VALUES('EMPLOYEE LEAVE'[Leave Day]),"L")A continuación, compile la medida como se muestra a continuación.
Measure = VAR _START = CALCULATE(MAX(TASK[START]),FILTER(ALL(TASK),TASK[NAME]=MAX('Table'[NAME])&&TASK[TASK]=MAX('Table'[TASK])&&TASK[SUB]=MAX('Table'[SUB]))) VAR _END = CALCULATE(MAX(TASK[END]),FILTER(ALL(TASK),TASK[NAME]=MAX('Table'[NAME])&&TASK[TASK]=MAX('Table'[TASK])&&TASK[SUB]=MAX('Table'[SUB]))) VAR _DayDiff = CALCULATE(COUNT('Table'[Date]),FILTER(ALL('Table'),'Table'[NAME] = MAX(TASK[NAME])&&'Table'[TASK]=MAX(TASK[TASK])&&'Table'[SUB] = MAX(TASK[SUB])&&'Table'[Date]>=_START&&'Table'[Date]<=_END&&'Table'[Leave Flag]=BLANK())) VAR _EFFORT = CALCULATE(SUM(TASK[EFFORT]),FILTER(ALL(TASK),TASK[NAME]=MAX('Table'[NAME])&&TASK[TASK]=MAX('Table'[TASK])&&TASK[SUB]=MAX('Table'[SUB]))) VAR _RESULT = IF(MAX('Table'[Date])>=_START&&MAX('Table'[Date])<=_END,IF(MAX('Table'[Leave Flag])=BLANK(),DIVIDE(_EFFORT,_DayDiff),"L")) RETURN _RESULTConstruir una matriz y el resultado es el siguiente.
Saludos
Rico ZhouSi esta publicación ayuda, entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.