Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
5 years ago
Solved

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 tabl...
  • Syndicate_Admin's avatar
    Syndicate_Admin
    5 years ago

    No @Gurukiran003

    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.

    1.png

    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
    _RESULT

    Construir una matriz y el resultado es el siguiente.

    3.png

    Saludos
    Rico Zhou

    Si 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.