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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
AMR80
Frequent Visitor

SUMX con Filtro o If

Tengo columnas personalizadas para calcular el saldo del tiempo libre de un empleado restando su tiempo utilizado en lo que va del año de su tiempo asignado.
Todos los tipos de tiempo son directos excepto el tiempo FMLA que funciona en un año calendario rodante. No puede mirar todos los datos de 2020, tiene que mirar los datos de hoy y de nuevo 365 días; por lo que algunos de los datos de 2019 también.

¿Hay de todos modos usar un SUMX, filtro o algún tipo de fórmula en una columna personalizada para sumar la cantidad de horas utilizadas para cada empleado de hoy y de vuelta 365 días? Tendrá que cambiar dinámicamente cada día para en última instancia darme su saldo, porque voy a restar el número de tiempo utilizado generado por esta medida personalizada del tiempo asignado dado a cada empleado?

1 ACCEPTED SOLUTION

Hola, @AMR80

Perdón por mi respuesta tardía.

No se recomienda calcular el valor agregado en Power Query. Power Query usa el lenguaje M para escribir fórmulas y el uso de una columna personalizada cambiará el modelo de datos original.

v-janeyg-msft_0-1600917878535.png

Puede crear una medida en el modelo. La medida se utiliza principalmente para el cálculo de agregación y los cálculos se ejecutan durante la consulta.

Así:

Measure = SUMX (
    FILTER (
        'Table_query__5',
        AND (
            [Date]
                > TODAY () - 365
                && [Date] <= TODAY (),
                 [Type of Time] = "Family Leave"
        )
    ),
    [Hours Requested] 
)

Snipaste_2020-09-24_11-32-20.png

v-janeyg-msft_2-1600917878540.png

Si todavía tiene preguntas, no dude en ponerse en contacto conmigo.

Saludos

Janey Guo

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

View solution in original post

7 REPLIES 7
v-janeyg-msft
Community Support
Community Support

Hola, @AMR80

Según su descripción, creo que puede modificar la medida. Así:

FMLA Measure =
SUMX (
    FILTER (
        ALL ( tablename ),
        AND (
            [Date]
                > TODAY () - 365
                && [Date] <= TODAY (),
            [Type of Time] = "Family Leave"
        )
    ),
    [Hours Requested]
)
FMLA Measure =
CALCULATE (
    SUM ( [Qty] ),
    FILTER (
        ALL ( tablename ),
        AND (
            [Date]
                > TODAY () - 365
                && [Date] <= TODAY (),
            [Type of Time] = "Family Leave"
        )
    )
)

Si no cumple con sus requisitos, por favor comparta algunos datos falsos con onedrive para la empresa o fotos.

Enmascarar los datos confidenciales antes de cargarlos.

Saludos

Janey Guo

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

Gracias @v-janeyg-msft

Intenté esto:

• Table.AddColumn('Filas filtradas', "Custom", cada SUMX(FILTER(ALL('"Employee Time Used - FMLA" ),AND ([Date] > TODAY () - 365 & [Date] <' TODAY (),[Type of Time] á "Family Leave")),[Horas solicitadas]))

Y tengo un error:

AMR80_0-1600888581263.png

También probó esto:
• Table.AddColumn('Filas filtradas', "Custom", cada CALCULATE (SUM ( SUMA ( [Horas Solicitadas] ),FILTER (ALL ( "Tiempo de empleado utilizado - FMLA" ),AND ([Fecha] > HOY () - 365 & [Fecha] < ? HOY (), [Tipo de tiempo utilizado] - "Family Leave"))))

Y obtuve un error differnet:

AMR80_1-1600889398272.png

He adjuntado un documento de Excel con datos ficticios. Necesito encontrar la SUMA de las HORAS SOLICITADAS para EL EMPLEADO John Doe sólo para el TIPO de TIEMPO "Permiso familiar". Ya tengo un paso de filtro para Tipo de tiempo en PBI, por lo que no hay necesidad real de incluir esa expresión/condición en la fórmula. Lo importante es la fecha. Sólo queremos SUMAR las HORAS SOLICITADAS entre Today()-365 y Today para cada empleado. La respuesta para John Doe sería 200 horas fueron solicitadas (es decir. Se utiliza durante el año calendario móvil actual). La respuesta cambiará el 15 de octubre, aunque en función de las fechas en los datos ficticios.
ENLACE DE ARCHIVO

AMR80_3-1600890418263.png

Hola, @AMR80

Perdón por mi respuesta tardía.

No se recomienda calcular el valor agregado en Power Query. Power Query usa el lenguaje M para escribir fórmulas y el uso de una columna personalizada cambiará el modelo de datos original.

v-janeyg-msft_0-1600917878535.png

Puede crear una medida en el modelo. La medida se utiliza principalmente para el cálculo de agregación y los cálculos se ejecutan durante la consulta.

Así:

Measure = SUMX (
    FILTER (
        'Table_query__5',
        AND (
            [Date]
                > TODAY () - 365
                && [Date] <= TODAY (),
                 [Type of Time] = "Family Leave"
        )
    ),
    [Hours Requested] 
)

Snipaste_2020-09-24_11-32-20.png

v-janeyg-msft_2-1600917878540.png

Si todavía tiene preguntas, no dude en ponerse en contacto conmigo.

Saludos

Janey Guo

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

Este es un gran @v-janeyg-msft. La medida funcionó perfectamente para calcular el tiempo FMLA utilizado 🙂 Ahora mi reto es llevar esta medida al siguiente nivel. Lo que sería realmente genial es si pudiera obtener una medida que calculó esto:

Si el tipo de tiempo es "permiso familiar", haga lo siguiente:

SUMX (
FILTRO (
'Tiempo de empleado utilizado - Horas',
Y (
[Fecha]
> HOY () - 365
&& [Fecha] < ? HOY (),
),
[Horas solicitadas]
)

Si el tipo de tiempo es "horas personales", haga lo siguiente:

SUMX (
FILTRO (
'Tiempo de empleado utilizado - Horas',
Y (
[Fecha]
> [Fecha de restablecimiento de horas personales] - 365
&& [Fecha] < ? HOY (),
),
[Horas solicitadas]
)

Para todos los demás tipos de tiempo, haga lo siguiente: Suma de todas las horas utilizadas en el año en curso.

Cálculo de las horas utilizadas en SUMX (
FILTRO (
'Tiempo de empleado utilizado - Horas',
[Año] - FECHA (ActualYear, 01, 01)
),
[Horas solicitadas]
)
No estoy seguro de cómo combinar los tres en una medida. ¿Es posible? ¿Algo como esto?:
SUMX(IF([Type of Time] á "Family Leave", FILTER('Employee Time Used - Hours', AND([Date] > TODAY - 365 && [Date] <- TODAY(),[Hours Requested]),IF([Type of Time] á "Personal Hours", FILTER('Employee Time Used - Hours', AND([Date] > [Personal Hours Reset Date] - 365 && [Date] <- TODAY(),),[Hours Requested]),FILTER('Employee Time Used - Hours', [Year] á [Date] (Year Current, 01, 01)),[Hours Requested]))

Hola, @AMR80

Según su descripción, creo que puede utilizar la función switch para combinar estas tres fórmulas en una sola medida.

Así:

Measure =
SWITCH (
    SELECTEDVALUE ( Table_query__5[Type of Time] ),
    "Family Leave",
        SUMX (
            FILTER ( Table_query__5, [Date] > TODAY () - 365 && [Date] <= TODAY () ),
            [Hours Requested]
        ),
    "personal hours",
        SUMX (
            FILTER (
                Table_query__5,
                [Date] > [Personal Hours Reset Date] - 365
                    && [Date] <= TODAY ()
            ),
            [Hours Requested]
        ),
    SUMX (
        FILTER ( Table_query__5, YEAR ( [Date] ) = YEAR ( TODAY () ) ),
        [Hours Requested]
    )
)

Debido a la complejidad de la medida, el total no puede obtener el resultado correcto en el contexto, puede consultar este artículo:

https://community.powerbi.com/t5/DAX-Commands-and-Tips/Dealing-with-Measure-Totals/td-p/63376

SI tiene otras preguntas, no dude en ponerse en contacto conmigo.

Saludos

Janey Guo

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

Anonymous
Not applicable

Hola Tal vez algunos datos de muestra y resultado esperado ayudará a resolver esto pronto. ¡Gracias!

Hola @alex00321

Esto es lo que tengo en este momento, pero no me gusta usar el control deslizante de fecha para filtrar el gráfico porque FMLA es el único tipo de tiempo que se calcula en un año calendario móvil, así que prefiero calcularlo en la consulta.

one.jpg

Estaba pensando que algo como una de las fórmulas a continuación sería suficiente como una columna o medida personalizada? No estoy seguro. Tampoco tengo demasiada experiencia. Además, mi origen es una lista en línea de SharePoint, no una tabla. No sé si estas fórmulas funcionarán con ese tipo de origen de datos.

Medida DE FMLA á SUMX(FILTER(ALL(tablename),AND([Date]>Today()-365,[Date]<-Today(),[Type of Time] á "Family Leave"))),[Horas solicitadas])

Medida DE FMLA: CALCULATE(SUM([Qty]),FILTER(ALL(tablename),AND([Date]>Today()-365,[Date]<-Today(),[Type of Time] á "Family Leave"))) )

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors