Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hola
Tengo un filtro (no puedo usar segmentación) en el panel Filtro de la sesión "Filtros en todas las páginas" que apunta a una tabla de dimensiones y también a un objeto visual de tabla con algunas columnas que provienen de la tabla de hechos. El problema es que el filtro muestra todos los elementos de la tabla de dimensiones. Deseo mostrar solo los elementos que tienen valores relacionados con la tabla de hechos. Además, si hago clic en un elemento del primer filtro, el segundo filtro no está siendo filtrado por el primer filtro. Necesito que el comportamiento en cascada también funcione.
Estoy desarrollando un informe de Power BI mediante el uso de Power BI Desktop y Direct Query que apunta directamente a las vistas de Postgres. He creado manualmente las relaciones donde 1 está en el lado de la dimensión y * está en el lado de los hechos. La dirección del filtro cruzado se establece como Única y "Asumir integridad referencial" se establece como Sí.
¿Hay alguna manera de configurar los filtros (10+) para que funcionen como espero (en negrita)?
Gracias
Flavia
Solo quería verificar y ver cómo van las cosas con su modelo si pudo probar las sugerencias de @hnguy71 y los consejos sobre la dirección del filtro cruzado y el filtrado con una columna auxiliar. A veces, esos pequeños ajustes, como establecer la relación en Ambos o usar una columna de marca como IsInFact, pueden marcar la diferencia cuando los filtros no se comportan como se esperaba. Si todo está funcionando ahora, increíble. Pero si todavía ve algo extraño o inesperado, no dude en compartir más detalles, siempre feliz de profundizar y ayudar más.
Saludos
Akhil.
Hola @v-agajavelly ,
Perdón por mi retraso. Estaba de baja médica.
Aún no hay progreso. Esa opción "Ambos" también se probó, pero tampoco funciona como se esperaba. Esa opción IsInFact parece funcionar con solo un caso de uso pequeño, como un hecho y solo una dimensión.
Abrí un ticket con Microsoft y dijeron que los filtros no funcionarán como necesito. Esto es por diseño. Procederé con el proceso de DCR con ellos y esperaré alguna aprobación/implementación de esta "mejora".
Como solución alternativa, llevé los datos de dimensión a la tabla de hechos y estoy apuntando los filtros al hecho, en lugar de las dimensiones. Pero creo que esta es una solución realmente fea en términos de rendimiento y diseño.
Entonces, ¿nunca tuviste que aplicar mi caso de uso a ningún cliente? (¿Apuntar los filtros a las dimensiones y tener en los elementos de filtro solo los valores que tienen datos relacionados con las tablas de hechos para evitar que los usuarios seleccionen filtros que no traen datos?
Gracias
Flavia
Gracias por la gran pregunta y por compartir tu modelo.
@hnguy71 sugerencia es una técnica de depuración útil: las pruebas con una medida básica ayudan a verificar si la propagación del filtro está funcionando a través del modelo. Es un gran primer paso para diagnosticar cualquier problema con tus relaciones.
Pruebe esto para que funcione como lo requiera.
Espero que eso ayude y muchas gracias a ambos Súper Usuarios por sus valiosas sugerencias. Pruebe las sugerencias anteriores y háganos saber si resuelve su problema.
Saludos
Akhil.
@flamcnet Eh
Voy a sugerir
Puede llevar la columna de filtro requerida de su dimensión a la tabla de hechos mediante la combinación izquierda y, de esta manera, coincidirá con el registro de su otra tabla.
Puede usar el siguiente código
escoger
a.columna1
a.columna2
....
b.columna1
b.columna2
* De la Tabla 1 a
Unir Tabla 2 B
en a.id = b.id
Gracias
Harish M
Por favor, acepte esto como una solución si es resolver su problema y felicite también
Hola @HarishKM,
Entendí su solución, pero algo que no entendí es: ¿cuál es la razón de tener tablas de dimensiones y hechos en el modelo si traigo todos los valores a la tabla de hechos en una consulta?
Gracias
Flavia
De forma predeterminada, los filtros deben devolver solo la información a la que se les han aplicado filtros. ¿Es posible que los campos de relación y/o agregados no los tengan en cuenta? ¿Puedes compartir una captura de pantalla de tu modelo (con relaciones?)
Ahora creo que estoy entendiendo su problema. Lo que está diciendo es que cuando selecciona la columna de dimensión en el panel de filtro, muestra todos los valores disponibles, independientemente de si la tabla de hechos contiene datos para ese par de valores.
Porque una dimensión, por diseño, está pensada para mostrar todos los atributos disponibles para ayudar a complementar la tabla de hechos. La dirección de su relación es la dimensión, de hecho, > lo tanto, no podrá filtrar los valores que no contengan ningún dato.
Lo que @v-agajavelly sugirió es muy válido y, si puede, cree una columna personalizada en su(s) tabla(s) de dimensiones para comprobar si hay algún valor en la tabla de hechos. Por ejemplo, si vamos a llamar a esta nueva columna como "IsInFact" con una salida de "Sí" o "No", una vez que haya creado la evaluación correcta, agregue ese campo al panel de filtro y fíltrelo para "Sí". Oculte y bloquee ese filtro y su dimensión debe propagarse y solo mostrar valores tiene algunos datos.
Hola @hnguy71 - Sí, ahora lo tienes completamente. 🙂
Intenté implementar la solución propuesta por @v-agajavelly y funcionó bien para 1 tabla Dim. Seguí adelante y apliqué la solución a las otras 6 mesas Dim. Pude ver los filtros que enumeraban los valores correctos, pero la propia página del informe "murió" cargando datos para un objeto visual de tabla simple con dos columnas y menos de 1000 filas. Probablemente se debió a todas las otras 6 fusiones que tuve que hacer para crear esa columna "IsInFact" Sí/No.
Otra solución que "funcionó" fue llevar todos los valores tenues a la vista de hechos y usarlos en los filtros, pero realmente creo que esta no es una buena solución.
Sigo tratando de encontrar alternativas... 😞
Su modelo se ve bien. ¿Tiene una medida para probar los valores que provienen de su tabla de hechos? Cualquier medida básica servirá.
Por ejemplo
Base.Total = SUM(FACT_TABLE_IN_QUESTION[Amount])
Y luego, para depurar, usar esa medida en un objeto visual de tabla junto con un campo que provenga de la tabla de dimensiones que muestra todos los datos. Solo debería ver las sumas agregadas de esos campos en el ámbito.
A continuación, una vez que haya confirmado que es bueno, agregue el filtro que planea usar en el mismo objeto visual y verifique si solo se muestra la información requerida.
Hola @hnguy71,
Sí.
Es un conteo simple: Controls_Count = DISTINCTCOUNT(Fact[Control]), lo he agregado como tarjeta.
He creado un objeto visual de tabla, con una columna (control) procedente de la tabla de hechos y otra columna (torre) procedente de la dimensión relacionada.
Tanto las pruebas de "filtros en este objeto visual" como de "filtros en todas las páginas", para los casos en los que el elemento del filtro con elementos de dimensión no tiene un respectivo en el hecho de que vuelve en blanco. Mi objetivo es evitar que el usuario haga clic en un elemento de filtro que no aporta ningún dato.
Parece que los filtros en el panel de filtros van a traer todos los valores de la tabla de dimensiones, pase lo que pase. 😞
¿Ves alguna otra alternativa que no sea optar por el uso de cortadoras?
Hola, gracias por responder.
¿Cómo puedo comprobar si "los campos de relación y/o agregados no los tienen en cuenta"? Ya tengo restricciones en las tablas DIM para asegurarme de que no tengan valores duplicados. Creo que la relación está en buena forma porque esto refleja exactamente lo que se ve a continuación. También ejecuté algunas consultas para asegurarme de que si no tengo ningún problema de integridad de datos y parece que todo está bien.
Aquí hay una captura de pantalla de mi modelo:
Solo para explicarlo, tengo un hecho principal en el centro y otros dos hechos con diferentes tipos de nivel de granularidad.