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
DwanYb
Regular Visitor

Filtrar un gráfico por Máximo de una categoría

Hola a todos,

Espero que se mantengan a salvo.

Actualmente estoy aprendiendo power bi, y atrapado en medio de un proyecto de prueba que creé.

Creé una base de datos, con una lista de personas, organizada según grupos (GR 1-4) y categorías (empleado, instructor, gerente). La tabla "People" tiene este aspecto:

Capture2.PNG

Definí franjas horarias (asociadas a fechas en otra tabla), y todo el mundo me dio sus disponibilidades para una reunión en cada franja horaria en particular. Aquí un ejemplo o la tabla "Disponibilidad":

Capture3.PNG

Mi objetivo es encontrar qué franja horaria es la mejor para nuestra reunión. La reunión debe establecerse en un momento en el que haya al menos un instructor, todos los gerentes del grupo. A continuación, encontrará la fecha con el máximo de empleados.

Capture.PNG

Me gustaría mostrar en esta mesa el recuento de empleados, gerentes e instructores.

Me gustaría añadir filtros, mostrar sólo las ranuras donde:

  • Al menos un instructor está aquí (en este caso, sólo hay uno de todos modos...)
  • Todos los gerentes están disponibles

Para los instructores, creé una medida

CountInstructor = 
CALCULATE(DISTINCTCOUNT(Availability[Email Address]),
People[Category] = "Instructor")

Y establezca el filtro como: CountInstructor no está en blanco. La ranura SL 4 desaparece. Lo cual es genial

Tengo dos preguntas:

  • ¿Harías eso, o hay una mejor manera?
  • Para el administrador, ¿cómo crear una medida/filtro para mostrar solo las ranuras cuando todos los administradores están disponibles? Sé que puedo usar el mismo tipo de filtros con CountManager 2, pero me gustaría que el filtro se mantuviera dinámico, usando un Máximo que podría ser 2 u otro número dependiendo de los casos.

Avísame si mi explicación es lo suficientemente clara,

Y gracias de antemano!!

1 ACCEPTED SOLUTION
MFelix
Super User
Super User

Hola @DwanYb ,

Para los gerentes puede hacer una medida dinamílica haciendo algo similar a esto:

CountManager =
IF (
    CALCULATE (
        DISTINCTCOUNT ( Availability[Email Address] ),
        People[Category] = "Manager"
    )
        = CALCULATE (
            DISTINCTCOUNT ( Availability[Email Address] ),
            ALLSELECTED ( Table[GroupKey] ),
            People[Category] = "Manager"
        ),
    1,
    0
)

A continuación, filtre por valor 1 cuando todos los administradores de los grupos seleccionados estén disponibles.

Puede cambiar el valor 1 y 0 para los valores que desee.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



View solution in original post

6 REPLIES 6
v-gizhi-msft
Community Support
Community Support

Hola

Cree primero un parámetro What If.

A continuación, pruebe esta medida:

Check = 
VAR DIstinctCount_of_Manager_per_SlotKey =
    CALCULATE (
        DISTINCTCOUNT ( Slot[Email Address] ),
        FILTER (
            Slot,
            Slot[Email Address]
                = CALCULATE (
                    MAX ( People[Email Address] ),
                    FILTER ( People, People[Category] = "Manager" )
                )
        )
    )
RETURN
    IF ( DIstinctCount_of_Manager_per_SlotKey = Parameter[Parameter Value], 1, 0 )

Cuando se selecciona el valor en la segmentación de datos, se muestra:

12.PNG

Espero que esto ayude.

Saludos

Giotto

Hola @v-gizhi-msft,

Parece ser una gran solución también. La segmentación de datos es realmente muy útil para mi siguiente paso: seleccionar cuántos "empleados" quiero en la reunión.

Sin embargo, tuve problemas con:

CALCULATE (
      MAX ( People[Email Address] ),
      FILTER ( People, People[Category] = "Manager" )
)

Parece que selecciona el lentgh de la dirección de correo electrónico (¿verdad?), que devolverá sólo 1 en mi caso.

Luego adapté su solución, y parece funcionar bien:

VAR  DistinctCount_Manager_perSL_two =
    CALCULATE(
        DISTINCTCOUNT(Availability[Email Address]),
        People[Category] = "Manager"
        )
RETURN
    IF ( DistinctCount_Manager_perSL_two = Parameter[Parameter Value], 1, 0)

Gracias 🙂

Hola

El Max(People[Email Address]) en esta fórmula devolverá el correo electrónico de cada fila qué categoría es el administrador para vincular a otra tabla de ranuras, pero no devolver la longitud de la dirección de correo electrónico:

CALCULATE (
      MAX ( People[Email Address] ),
      FILTER ( People, People[Category] = "Manager" )
)

Si mi respuesta ha ayudado a resolver su problema, por favor márquelo como una solución para que otros lo vean.
¡Gracias!

Saludos

Giotto

Muy bien, gracias por la explicación Giotto. Necesito revisar lo que estaba mal en mi documento mientras lo usaba entonces.

Gracias de nuevo.

MFelix
Super User
Super User

Hola @DwanYb ,

Para los gerentes puede hacer una medida dinamílica haciendo algo similar a esto:

CountManager =
IF (
    CALCULATE (
        DISTINCTCOUNT ( Availability[Email Address] ),
        People[Category] = "Manager"
    )
        = CALCULATE (
            DISTINCTCOUNT ( Availability[Email Address] ),
            ALLSELECTED ( Table[GroupKey] ),
            People[Category] = "Manager"
        ),
    1,
    0
)

A continuación, filtre por valor 1 cuando todos los administradores de los grupos seleccionados estén disponibles.

Puede cambiar el valor 1 y 0 para los valores que desee.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Hola @MFelix,

Gracias por tu respuesta, funciona muy bien. Necesitaré trabajar un poco más con la función ALLSELECTED.

Acabo de modificar un poco su solución para adaptarla a mi caso, utilizando People[Email Address] en lugar de Availability[Email Address]. Pero creo que es a lo que te referías.

¡Gracias de nuevo!

CountManager =
IF (
    CALCULATE (
        DISTINCTCOUNT ( Availability[Email Address] ),
        People[Category] = "Manager"
    )
        = CALCULATE (
            DISTINCTCOUNT ( People[Email Address] ),
            ALLSELECTED ( Groups[GroupKey] ),
            People[Category] = "Manager"
        ),
    1,
    0
)

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