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

Shape the future of the Fabric Community! Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions. Take survey.

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
November Carousel

Fabric Community Update - November 2024

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

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

Nov PBI Update Carousel

Power BI Monthly Update - November 2024

Check out the November 2024 Power BI update to learn about new features.

Live Sessions with Fabric DB

Be one of the first to start using Fabric Databases

Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.

Top Solution Authors
Top Kudoed Authors