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
Sparks
Helper I
Helper I

Creación de medidas que toman contexto a partir de varias segmentaciones de datos basadas en la misma dimensión

Digamos que tengo una dimensión llamada "área de estudio" que contiene una lista de área de estudios de tipo mayor y menor. Cada una de estas áreas de estudios tiene una lista de cursos (Dimensión). Ambas dimensiones están conectadas a una tabla de hechos sin hechos como se muestra a continuación. También he adjuntado el archivo pbix como referencia.

Major Minor Course List Model.png

En mis objetos visuales, tengo dos segmentaciones separadas que muestran la lista de área de estudios, una para Tipo , Mayor y otra para Tipo , Menor. Un objeto visual de ejemplo es como se muestra a continuación:

Major and Minor Course List visualizations.png

El primer desafío es cómo muestro la lista combinada de cursos para el área de estudios seleccionada en ambas segmentaciones, como en una tabla visual.

El segundo desafío, cómo creo una medida que muestra el recuento distinto de cursos o la suma de créditos para el área de estudios seleccionada en ambas segmentaciones. He intentado un par de formas, por ejemplo, de dos medidas que cuentan los cursos por Area of Study.Type , Major y Type , Minor, y una tercera medida que añade ambas.

El problema que estoy viendo es que, cuando selecciono un valor de una segmentación de datos solo, la tabla visual funciona bien, así como las medidas. Pero, cuando selecciono un valor de ambas segmentaciones de datos, las cosas fallan.

Por favor, ayúdeme.

2 ACCEPTED SOLUTIONS
v-deddai1-msft
Community Support
Community Support

Hola @Sparks ,

¿Podría seguir los siguientes pasos?

1.Cree dos tablas calculadas para la segmentación principal y la segmentación menor:

Majorslicer = CALCULATETABLE(VALUES('Area of Study'[Area of Study Name]), FILTER('Area of Study','Area of Study'[Type] = "Major"))



Minorslicer = CALCULATETABLE(VALUES('Area of Study'[Area of Study Name]), FILTER('Area of Study','Area of Study'[Type] = "Minor"))

2.Cree una medida para filtrar el objeto visual de la tabla:

Measure =

VAR a =

CALCULATETABLE (

VALUES ( CourseList[CourseSK] ),

FILTER (

ALL(CourseList),

RELATED ( 'Area of Study'[Area of Study Name] )

= SELECTEDVALUE ( Majorslicer[Area of Study Name] )

)

)

VAR b =

CALCULATETABLE (

VALUES ( CourseList[CourseSK] ),

FILTER (

ALL(CourseList),

RELATED ( 'Area of Study'[Area of Study Name] )

= SELECTEDVALUE ( Minorslicer[Area of Study Name] )

)

)

RETURN

IF ( MAX ( Courses[CourseSK] ) IN a || MAX ( Courses[CourseSK] ) IN b, 1, 0 )

Y ponga la medida en el filtro visual de la tabla:

Untitled picture4.png

Para la modificación del código dax de sus otras medidas, consulte el archivo pbix: https://qiuyunus-my.sharepoint.com/:u:/g/personal/pbipro_qiuyunus_onmicrosoft_com/EWJvRXHiHDhCnz2MYR...

Saludos

Dedmon Dai

View solution in original post

Puede modificar la medida como se indica a continuación:

FlagShowCourse =
VAR a =
    CALCULATETABLE (
        VALUES ( CourseList[CourseSK] ),
        FILTER (
            ALL ( CourseList ),
            RELATED ( 'Area of Study'[Area of Study Name] )
                IN VALUES ( Majorslicer[Area of Study Name] )
        )
    )
VAR b =
    CALCULATETABLE (
        VALUES ( CourseList[CourseSK] ),
        FILTER (
            ALL ( CourseList ),
            RELATED ( 'Area of Study'[Area of Study Name] )
                IN VALUES ( Minorslicer[Area of Study Name] )
        )
    )
VAR SelectedMajorCount =
    IF (
        NOT ISFILTERED ( Majorslicer[Area of Study Name] ),
        0,
        IF (
            CALCULATE ( COUNTROWS ( Majorslicer ) )
                == CALCULATE ( COUNTROWS ( Majorslicer ), ALL ( Majorslicer ) ),
            1,
            CALCULATE ( COUNTROWS ( Majorslicer ), ALL ( Majorslicer ) )
                - CALCULATE ( COUNTROWS ( Majorslicer ) )
        )
    )
VAR SelectedMinorCount =
    IF (
        NOT ISFILTERED ( Minorslicer[Area of Study Name] ),
        0,
        IF (
            CALCULATE ( COUNTROWS ( Minorslicer ) )
                == CALCULATE ( COUNTROWS ( Minorslicer ), ALL ( Minorslicer ) ),
            1,
            CALCULATE ( COUNTROWS ( Minorslicer ), ALL ( Minorslicer ) )
                - CALCULATE ( COUNTROWS ( Minorslicer ) )
        )
    )
RETURN
    IF (
        (
            MAX ( Courses[CourseSK] ) IN a
                && SelectedMajorCount > 0
        )
            || (
                MAX ( Courses[CourseSK] )
                    IN b
                    && SelectedMinorCount > 0
            ),
        1,
        0
    )

A ver si esto ayuda!!!. Gracias:)

View solution in original post

5 REPLIES 5
v-deddai1-msft
Community Support
Community Support

Hola @Sparks ,

¿Podría seguir los siguientes pasos?

1.Cree dos tablas calculadas para la segmentación principal y la segmentación menor:

Majorslicer = CALCULATETABLE(VALUES('Area of Study'[Area of Study Name]), FILTER('Area of Study','Area of Study'[Type] = "Major"))



Minorslicer = CALCULATETABLE(VALUES('Area of Study'[Area of Study Name]), FILTER('Area of Study','Area of Study'[Type] = "Minor"))

2.Cree una medida para filtrar el objeto visual de la tabla:

Measure =

VAR a =

CALCULATETABLE (

VALUES ( CourseList[CourseSK] ),

FILTER (

ALL(CourseList),

RELATED ( 'Area of Study'[Area of Study Name] )

= SELECTEDVALUE ( Majorslicer[Area of Study Name] )

)

)

VAR b =

CALCULATETABLE (

VALUES ( CourseList[CourseSK] ),

FILTER (

ALL(CourseList),

RELATED ( 'Area of Study'[Area of Study Name] )

= SELECTEDVALUE ( Minorslicer[Area of Study Name] )

)

)

RETURN

IF ( MAX ( Courses[CourseSK] ) IN a || MAX ( Courses[CourseSK] ) IN b, 1, 0 )

Y ponga la medida en el filtro visual de la tabla:

Untitled picture4.png

Para la modificación del código dax de sus otras medidas, consulte el archivo pbix: https://qiuyunus-my.sharepoint.com/:u:/g/personal/pbipro_qiuyunus_onmicrosoft_com/EWJvRXHiHDhCnz2MYR...

Saludos

Dedmon Dai

@v-deddai1-msft señor, hay un problema aquí. SelectedVALUE() funcionaría cuando solo se selecciona un valor. Si sustituyo SELECTEDVALUE() por "IN VALUES(Minorslicer[Area of Study Name])", entonces termino otro problema, es decir, si no selecciono ninguna área de nombre de estudio, se consideran todos los valores y se enumeran todos los cursos de todas las áreas de estudio.

He intentado lo siguiente a continuación, pero el problema aquí sería que si tengo sólo un área de estudio en mi sistema o selecciono todos los valores, entonces la diferencia de recuento "SelectedMajorCount" o "SelectMinorCount" será 0 y ningún curso será li

FlagShowCourse = 
VAR a =
    CALCULATETABLE (
        VALUES ( CourseList[CourseSK] ),
        FILTER (
            ALL(CourseList),
            RELATED ( 'Area of Study'[Area of Study Name] )
                IN VALUES( Majorslicer[Area of Study Name] )
        )
    )
VAR b =
    CALCULATETABLE (
        VALUES ( CourseList[CourseSK] ),
        FILTER (
            ALL(CourseList),
            RELATED ( 'Area of Study'[Area of Study Name] )
               IN VALUES ( Minorslicer[Area of Study Name] )
        )
    )
VAR SelectedMajorCount = CALCULATE(COUNTROWS(Majorslicer),All(Majorslicer))-CALCULATE(COUNTROWS(Majorslicer))
VAR SelectedMinorCount = CALCULATE(COUNTROWS(Minorslicer),All(Minorslicer))-CALCULATE(COUNTROWS(Minorslicer))
RETURN
    IF ( (MAX ( Courses[CourseSK] ) IN a && SelectedMajorCount >0) || (MAX ( Courses[CourseSK] ) IN b && SelectedMinorCount >0 ), 1, 0 )

¿Alguna idea? Por favor, ayúdeme.

Puede modificar la medida como se indica a continuación:

FlagShowCourse =
VAR a =
    CALCULATETABLE (
        VALUES ( CourseList[CourseSK] ),
        FILTER (
            ALL ( CourseList ),
            RELATED ( 'Area of Study'[Area of Study Name] )
                IN VALUES ( Majorslicer[Area of Study Name] )
        )
    )
VAR b =
    CALCULATETABLE (
        VALUES ( CourseList[CourseSK] ),
        FILTER (
            ALL ( CourseList ),
            RELATED ( 'Area of Study'[Area of Study Name] )
                IN VALUES ( Minorslicer[Area of Study Name] )
        )
    )
VAR SelectedMajorCount =
    IF (
        NOT ISFILTERED ( Majorslicer[Area of Study Name] ),
        0,
        IF (
            CALCULATE ( COUNTROWS ( Majorslicer ) )
                == CALCULATE ( COUNTROWS ( Majorslicer ), ALL ( Majorslicer ) ),
            1,
            CALCULATE ( COUNTROWS ( Majorslicer ), ALL ( Majorslicer ) )
                - CALCULATE ( COUNTROWS ( Majorslicer ) )
        )
    )
VAR SelectedMinorCount =
    IF (
        NOT ISFILTERED ( Minorslicer[Area of Study Name] ),
        0,
        IF (
            CALCULATE ( COUNTROWS ( Minorslicer ) )
                == CALCULATE ( COUNTROWS ( Minorslicer ), ALL ( Minorslicer ) ),
            1,
            CALCULATE ( COUNTROWS ( Minorslicer ), ALL ( Minorslicer ) )
                - CALCULATE ( COUNTROWS ( Minorslicer ) )
        )
    )
RETURN
    IF (
        (
            MAX ( Courses[CourseSK] ) IN a
                && SelectedMajorCount > 0
        )
            || (
                MAX ( Courses[CourseSK] )
                    IN b
                    && SelectedMinorCount > 0
            ),
        1,
        0
    )

A ver si esto ayuda!!!. Gracias:)

@indrajitha, ¡gracias señor! ¡La medida actualizada funcionó!

¡Muchas gracias por la solución, señor! ¡Esto ayuda mucho!

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.