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
corange
Post Patron
Post Patron

Filtrar en agregación

Hola POWER BI Team,

Necesito su ayuda en un proyecto y haré todo lo posible para explicar el resultado deseado.

Mi empresa está estructurada en 3 Unidades de Negocio (BUs) - BU A, BU B, BU C, y tenemos un informe que muestra los resultados en toda la empresa a nivel estatal y nivel de BUs.

Una de las métricas que necesito es el número de trabajo promedio diario por grupo de empleados por estado y BU. En mi conjunto de datos, el número de trabajos se sume por empleado y fecha. Simplemente utilicé la columna donde se cuenta el número de trabajos y utilicé la función AVERAGE cuando la columna se coloca en FIELD en VALUE.

Los resultados se muestran utilizando un MATRIX y en la parte superior, tengo una SLICER que permite al usuario ver los resultados para toda la empresa o seleccionar un BU específico.

Capture3.PNG

Ahora, donde estoy atascado es que para BU A SOLAMENTE, si un empleado ha completado menos de 3 trabajos al día, entonces deben ser excluidos del promedio para ese día. No sé en absoluto cómo hacer esto.

Espero tener sentido y que alguien pueda ayudar?

Gracias.

16 REPLIES 16
Ashish_Mathur
Super User
Super User

Hola

Comparta algunos datos y muestre el resultado esperado.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
v-yingjl
Community Support
Community Support

Hola @corange ,

Intente utilizar esta medida:

average = 
VAR _avg =
    CALCULATE (
        AVERAGE ( 'Table'[value] ),
        ALLEXCEPT ( 'Table', 'Table'[BUs], 'Table'[state] )
    )
RETURN
    IF (
        SELECTEDVALUE ( 'Table'[BUs] ) = "BU A",
        CALCULATE (
            AVERAGEX (
                FILTER ( 'Table' , NOT ( 'Table'[value] < 3 && 'Table'[BUs] = "BU A" ) ),
                'Table'[value]
            ),
            ALLEXCEPT ( 'Table', 'Table'[BUs], 'Table'[state] )
        ),
        _avg
    )

Cuando la segmentación es BU A, filtrará los valores que < 3 para calcular el promedio basado en el estado y BU

Aquí está mi tabla de muestra y el resultado:
sample table.pngsample result.png

Adjunto mi archivo de muestra que espera ayudarle: Filtrar en Aggeration.pbix

Best Looks,
Yingjie Li

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

Hola @Yingjie Li,

Gracias. ¿Podría escribir explícitamente la agregación con los datos y ver cómo obtenemos los siguientes resultados cuando no se selecciona nada en la segmentación de datos?

Capture7.PNG

La regla de menos de 3 puestos de trabajo para BU A todavía tendría que aplicarse en la visión general también cuando no se selecciona ningún filtro de la segmentación de datos y queremos ver los resultados para toda la organización. ¿Esto se hace automáticamente usando su medida?

Muchas gracias por su ayuda.

Hola @corange ,

Intente modificar la medida así para mostrar el promedio inicial correcto si no hay BU seleccionado en la segmentación de datos:

average =
VAR _avg =
    AVERAGE ( 'Table'[value] )
RETURN
    IF (
        NOT ( ISFILTERED ( 'Table'[BUs] ) ),
        _avg,
        IF (
            SELECTEDVALUE ( 'Table'[BUs] ) = "BU A",
            CALCULATE (
                AVERAGEX (
                    FILTER ( 'Table', NOT ( 'Table'[value] < 3 && 'Table'[BUs] = "BU A" ) ),
                    'Table'[value]
                ),
                ALLEXCEPT ( 'Table', 'Table'[BUs], 'Table'[state] )
            ),
            _avg
        )
    )

average.png

Best Looks,
Yingjie Li

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

Hola

Gracias por tu respuesta, pero no la entiendo.

Según la muestra que ha enviado a través, el resultado deseado sería no incluir nada por debajo o igual a 3 en cualquier cálculo y seguir siendo capaz de ver los resultados con la misma regla al seleccionar un BU específico.

Por ejemplo, utilizando la última medida que ha enviado a través de:

Capture10.PNG

El resultado deseado sería tener el cálculo sin incluir la primera fila donde el valor es dos. Esto pertenece a BU A, así y el promedio es 3 que significa que está siendo incluido en mi promedio.

Quiero poder aplicar la regla y ver el resultado general para la empresa o seleccionando un BU.

Hola @corange ,

Por favor, hágamelo saber si desea filtrar todos los datos que valores> 3 antes de calcular el promedio.

Si es así, simplemente cree una medida como esta:

Measure = 
VAR tab =
    SUMMARIZE (
        FILTER ( 'Table', 'Table'[value] >= 3 ),
        'Table'[BUs],
        'Table'[date],
        'Table'[state],
        'Table'[employee],
        'Table'[value]
    )
RETURN
    AVERAGEX ( tab, [value] )

state sample.png

Best Looks,
Yingjie Li

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

Hola

Hola @corange ,

Si desea filtrar <-3 sólo elija BU A y calcular el promedio noramlly si no se ha seleccionado bu, creo que mi medida publicada anterior [promedio] lo ha logrado.

Best Looks,
Yingjie Li

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

Hola ,

Sólo para aclarar las cosas, quiero que el <- 3 se elimine de todos los cálculos, no importa si selecciono BU A o no. En la tabla de resumen, si se seleccionan todas las BUs, entonces seguirá eliminando <-3 para BU A y presentará los resultados para todos y al seleccionar BU A, entonces también eliminará <-3 y presentará el resultado.

Entonces, ¿con qué medida debo ir?

donde estoy confundido es los resultados que está recibiendo para su promedio. No coincide con lo que esperaría. ¿Qué podemos hacer para aclarar la situación y asegurarnos?

Gracias.

Hola @corange ,

Basándome en su descripción, quiero confirmar algo basado en mi muestra:

  1. Independientemente de qué BU se haya seleccionado, todos los valores <-3 deben ser ignorados para calcualte
  2. Si se seleccionan todas las BUs, simplemente ignore los valores <-3 en BU A , se deben conservar otros valores de BU <-3 para que el promedio calcualte
  3. Cuando se selecciona BU A, todos los valores <-3 deben ignorarse para calcualte promedio
  4. Si no se selecciona ninguna BU, todos los valores <-3 deben omitirse para calcualte

Si mi entendimiento sigue siendo parcialmente incorrecto, por favor hágamelo saber para ayudarle mejor.

Best Looks,
Yingjie Li

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

Hola @v-yingjl ,

Por favor, vea a continuación

<< Basado en su descripción, quiero confirmar algo basado en mi muestra:

  1. Independientemente de qué BU se haya seleccionado, todos los valores <-3 deben ignorarse para calcualte average - NO, el valor <-3 debe eliminarse del cálculo solo para BU A.
  2. Si se seleccionan todas las BUs, simplemente ignore los valores <-3 en BU A , se deben conservar otros valores de BU <-3 al promedio de calcualteo - YES - El promedio debe incluir todos los valores excepto <-3 para BU A.
  3. Cuando se selecciona BU A, todos los valores <-3 deben ignorarse para calcualte promedio - YES
  4. Si no se selecciona ninguna BU, se deben ignorar todos los valores <-3 para calcualte average - NO, todos los valores deben incluirse en el valor promedio, pero solo se debe excluir el valor <-3 para BU A.

Espero que esto ayude.

Gracias.

Hola @corange ,

Si solo se considera que se seleccionan una o todas las segmentaciones, creo que la siguiente medida debería funcionar:

Measure = 
VAR _avg =
    CALCULATE (
        AVERAGEX (
            FILTER ( 'Table', 'Table'[value] >= 3 || 'Table'[BUs] <> "BU A" ),
            'Table'[value]
        ),
        ALLEXCEPT ( 'Table', 'Table'[BUs], 'Table'[state] )
    )
VAR _avgA =
    CALCULATE (
        AVERAGEX (
            FILTER ( 'Table', NOT ( 'Table'[value] < 3 && 'Table'[BUs] = "BU A" ) ),
            'Table'[value]
        ),
        ALLEXCEPT ( 'Table', 'Table'[BUs], 'Table'[state] )
    )
VAR _avgother =
    AVERAGE ( 'Table'[value] )
RETURN
    IF (
        HASONEFILTER ( 'Table'[BUs] ),
        IF (
            NOT ( ISFILTERED ( 'Table'[BUs] ) ),
            _avg,
            IF ( SELECTEDVALUE ( 'Table'[BUs] ) = "BU A", _avgA, _avgother )
        ),
        _avg
    )

Archivo de muestra adjunto: Filtro en Aggreation.pbix

Best Looks,
Yingjie Li

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

Hola @v-yingjl ,

Capture.PNG

No entiendo cómo se obtiene un promedio de 4.80 cuando sólo 4 debe ser considerado?

¿De dónde viene la 0.80?

Gracias.

Hola @v-yingjl ,

Además, podemos ver que todos los promedios son similares en todos los Estados y Empleados. No parece correcto en absoluto.

El trabajo <-3 para BU A se aplica sin importar si selecciono la BU A para ver los promedios o si quiero ver los promedios en toda la BU. Cuando un empleado realiza menos de 3 trabajos al día en BU A, se elimina automáticamente del cálculo.

amitchandak
Super User
Super User

@corange , Tienes que probar algo como esto

AverageX(filter(summarize(Table, Table[employee], "_sum" ,sum(Table[No of jobs])),[_sum]>3),[_sum])

O

AverageX(filter(summarize(Table, Table[employee], "_sum" ,sum(Table[No of jobs])),[_sum]>3),divide([_sum],count([employee])))

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.