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.
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.
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:
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.
Solved! Go to Solution.
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:
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
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:)
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:
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:)
¡Muchas gracias por la solución, señor! ¡Esto ayuda mucho!
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |