Don't miss your chance to take the Fabric Data Engineer (DP-600) exam for FREE! Find out how by attending the DP-600 session on April 23rd (pacific time), live or on-demand.
Learn moreNext up in the FabCon + SQLCon recap series: The roadmap for Microsoft SQL and Maximizing Developer experiences in Fabric. All sessions are available on-demand after the live show. Register now
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 |
| 1 | Gato |
| 1 | Ratón |
| 2 | Perro |
| 2 | Elefante |
| 3 | Perro |
| 3 | Jerbo |
| 3 | Rató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.
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] =
[Filtro visual] medida =
Solved! Go to Solution.
¿Qué tal reemplazar _allRows con esto?
CALCULATE ( COUNTROWS ( FactTable ), REMOVEFILTERS ( FactTable[Component] ) )
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.
¿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.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.