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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Mostrar problema solo si todos los componentes relacionados están seleccionados

Esto está funcionando, pero me preguntaba si alguien tenía una mejor solución: mejor modelado o mejor rendimiento. Además, ¿hay un nombre para este problema?

Aquí están los datos básicos. Filtrar una tabla con muchos componentes para cada problema. Cada componente tiene su propia fila.

Tabla de hechos

Emitir #Componente
1Gato
1Ratón
2Perro
2Elefante
3Perro
3Jerbo
3Ratón

Los problemas solo deben mostrarse si SE SELECCIONAN TODOS sus componentes. Si se seleccionan 2/3 componentes, no muestre el problema en absoluto.

A continuación, tengo 2 conjuntos de imágenes. En el primero, se seleccionan todos los componentes y se muestran todas las filas. En el segundo conjunto, se selecciona todo excepto Elephant, por lo que no se muestra nada del número 2.

Results of show rows only if all components selected.png

Utilizo un esquema en estrella con filtrado unidireccional. FactTable con dimensiones Component y Issue.
Tengo una columna calc (filas de hechos) en Problema para contar cuántas filas en la tabla de hechos. Esto reemplaza algunos DAX elegantes en la medida [Filtro visual]. El elegante DAX no funcionó bien con el gran conjunto de datos para el que sirve.
Columna Problema[Filas de hechos] =

CUENTAS( CALCULABLE( FactTable ) )


[Filtro visual] medida =

DÓNDE _currentRows = CUENTAS( FactTable )
DÓNDE _allRows = CALCULAR( SUMA( Problema[Filas de hechos] ), FactTable)
DEVOLUCIÓN
INT(
_allRows Todos los registros de este problema #
= _currentRows Filas seleccionadas actualmente para este problema
&& _currentRows > 0 Se asegura de que la tabla no esté vacía
)
Agrego la medida [Nivel visual] como un filtro en la tabla visual para garantizar que aparezcan las filas correctas.
1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

¿Qué tal reemplazar _allRows con esto?

CALCULATE ( COUNTROWS ( FactTable ), REMOVEFILTERS ( FactTable[Component] ) )

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

Probar

Visual Filter 2 = IF( ISINSCOPE(FactTable[Issue #]),
var slicerValues = VALUES(Component[Component])
var issueValues = CALCULATETABLE( VALUES(FactTable[Component]), ALLEXCEPT(FactTable,FactTable[Issue #]))
return IF( ISEMPTY( EXCEPT( issueValues, slicerValues) ), 1 )
)

Gracias por la respuesta. Este es un DAX elegante. Intenté esto y hace que todos los resultados desaparezcan. Además, evito las declaraciones IF y otras ramificaciones en los filtros de nivel visual debido al rendimiento. Me gusta el truco de SQLBI de usar INT() para convertir un booleano en un 1 o un cero.

Eso es extraño, funcionó en el archivo de demostración cuando lo probé.

Buen consejo sobre el INT, los chicos de SQL BI son increíbles. Por lo general, no dedico mucho tiempo a la optimización, ya que no trabajo con conjuntos de datos particularmente grandes.

Syndicate_Admin
Administrator
Administrator

¿Qué tal reemplazar _allRows con esto?

CALCULATE ( COUNTROWS ( FactTable ), REMOVEFILTERS ( FactTable[Component] ) )

Gracias Alexis. Eso funciona si hago REMOVEFILTER(Component[Component] y pongo Component from Component dim y no from FactTable. No funciona si la visualización de la tabla tiene FactTable[Component] con REMOVEFILTER( FactTable[Component]. Creo que esto podría deberse al problema de los autoexistentes. Entendiendo DAX Auto-Exist - SQLBI, pero no voy a pensar en eso ahora.

Sí, quitar el filtro de la tabla de cotas es la forma correcta de hacerlo. Inicialmente no me di cuenta de que tenías una mesa separada que estabas usando para la rebanadora.

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

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.