Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
Hola amigos,
Todavía soy un novato en PowerBi, así que busco ayuda aquí. Para establecer el contexto, tengo 3 tablas.
Tabla 1:
ID único | Nombre | Empresa | Tema
Dis1 | Carnero | Comp1 | Powerbi
Dis2 | Carnero | Comp1 | DAX
Dis3 | Juan | Comp2 | SomeTopic1
Dis4 | Juan | Comp2 | Algunos2
Dis5 | Joe | Comp3 | Blah1
Dis6 | Joe | Comp3 | Blah2
Dis6 | Per1 | Comp2 | Blah2
Tabla 2
Nombre | Nombre de la empresa | Attr1 | Attr2 | ...
Carnero | Comp1 | ...
Juan | Comp2 | ...
Joe | Comp3 | ...
Per1 | Comp2 | ...
Per2 | Comp1 | ...
Cuadro 3
NombreNuevo | CompNuevo
Carnero | Comp1
John | Comp2
Joe | Comp3
Per1 | Comp2
Per2 | Comp1
Relaciones:
Tabla2 -> Tabla1 (1:* Nombre de la empresa -> empresa)
Tabla2 -> Tabla3 (*:* CompanyName -> CompNew)
Esto es lo que estoy tratando de hacer: tengo una segmentación que muestra los nombres de las personas (Tabla2). Al seleccionar un nombre, quiero poder mostrar una tabla de todos los que están en la misma empresa que la persona seleccionada. Quiero que una columna de esta tabla muestre el recuento de discusiones (de la Tabla1) para cada persona de la Tabla3. Ejemplo
Selección de Slicer (Tabla2): John
Salida
Nombre | Empresa | Recuento de discusiones
Juan | Comp2 | 2
Per1 | Comp2 | 1
Selección de Slicer (Tabla2): Carnero
Salida
Nombre | Empresa | Recuento de discusiones
Carnero | Comp1 | 2
Per2 | Comp1 | 0
Soy capaz de obtener los datos sin el conteo. Intenté crear una medida con los recuentos, pero cada vez que agrego la medida a la tabla (visual) obtengo todos los nombres frente a solo los que se filtran a través de la segmentación. No tengo claro cómo poder garantizar que el contexto de la fila filtrada se traslade a la Tabla1 (he probado TREATAS, INTERSECT sin éxito)... Cualquier ayuda es apreciada.
Gracias
Carnero
Solved! Go to Solution.
Gracias a todos por la ayuda. Pude resolver esto. Necesitaba crear otra relación entre Tabla3 y Tabla1 (basada en el nombre de varios a varios). Luego pude usar esa relación, el nombre de la persona de la Tabla3, el nombre de la empresa de la Tabla2, ignorar todo el resto de los filtros (ALL(Tabla1)) y agregar un conjunto de filtros que coincidan con el nombre y la empresa de arriba. Esto dio como resultado datos vacíos para todos los nombres y los datos correctos para aquellos que coincidían. Pude filtrar los vacíos en la imagen y eso funcionó.
Gracias de nuevo por toda su ayuda.
+Carnero
Gracias a todos por la ayuda. Pude resolver esto. Necesitaba crear otra relación entre Tabla3 y Tabla1 (basada en el nombre de varios a varios). Luego pude usar esa relación, el nombre de la persona de la Tabla3, el nombre de la empresa de la Tabla2, ignorar todo el resto de los filtros (ALL(Tabla1)) y agregar un conjunto de filtros que coincidan con el nombre y la empresa de arriba. Esto dio como resultado datos vacíos para todos los nombres y los datos correctos para aquellos que coincidían. Pude filtrar los vacíos en la imagen y eso funcionó.
Gracias de nuevo por toda su ayuda.
+Carnero
Hola @RamEHG ,
Revisé la publicación y tengo una pregunta para ti.
Vi que la relación es 1:*, pero en la Tabla 2, hay 2 Comp1 y 2 Comp2 en ella, por lo tanto , no se pueden configurar como uno para manay.
Si desea el resultado esperado que mencionó, puede cambiar sus relaciones como se muestra a continuación.
Este es el resultado:
La segmentación se crea a partir de la tabla 3. En el objeto visual de la tabla, el campo Compañía, el campo Nombre y los recuentos son de la Tabla 1.
Puedes consultar más detalles en mi archivo adjunto.
Saludos
Esteban Tao
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente
Gracias de nuevo por la respuesta. Cometí un error en las relaciones: debería ser Tabla2 -> Tabla1 (1:*) (Nombre -> Nombre). Básicamente, tengo una mesa de personas (Tabla2) y una mesa de reuniones (Tabla1). Cada uno de ellos tiene diferentes atributos. Estoy tratando de tener una segmentación con el nombre de una persona. La selección de una persona en particular debe mostrarme a todas las demás personas de la misma empresa junto con el recuento de reuniones que ha tenido cada una de esas personas. De ahí la creación de la Tabla3 para poder discernir "otras personas que trabajaron con la persona seleccionada". Y luego estoy tratando de obtener el conteo de reuniones para cada uno de ellos. Parece que no puedo hacer que el contexto de fila que se muestra en Table3 se aplique a Table1 en este proceso.
Gracias
¡Gracias de nuevo
Carnero
Gracias por esto. Esto funciona muy bien con una relación establecida entre 2 mesas. Tengo un problema ligeramente diferente en el sentido de que tengo 3 tablas (aunque una es un subconjunto de la segunda tabla solo para poder mostrar a personas relacionadas en compañía de la persona seleccionada).
Gracias
Carnero
Hola @RamEHG ,
Para lograr el resultado deseado, necesita una medida que filtre correctamente la empresa en función de la persona seleccionada y cuente las discusiones en consecuencia. Dado que Table2 y Table3 tienen una relación de varios a varios, debe asegurarse de que el contexto del filtro se propague correctamente. El enfoque consiste en capturar la empresa de la persona seleccionada, filtrar la Tabla3 en función de esa empresa y, a continuación, contar el número de conversaciones de cada persona de esa empresa de la Tabla1.
La siguiente medida del DAX logra esto:
Count of Discussions =
VAR SelectedCompany =
SELECTEDVALUE(Table2[CompanyName])
RETURN
CALCULATE(
COUNT(Table1[UniqueID]),
FILTER(
Table3,
Table3[CompNew] = SelectedCompany
)
)
Esta medida funciona recuperando primero la empresa asociada a la persona seleccionada en la Tabla2 mediante SELECTEDVALUE(Table2[CompanyName]). A continuación, aplica un filtro en la Tabla3 para incluir solo las filas en las que la empresa coincida con la empresa seleccionada. Por último, COUNT(Table1[UniqueID]) calcula el número de discusiones de las personas dentro de esa empresa.
Por ejemplo, cuando se selecciona John en la segmentación, el objeto visual de la tabla mostrará John y Per1 en Company Comp2 con recuentos de discusión de 2 y 1, respectivamente. Del mismo modo, si se selecciona Ram, la tabla mostrará Ram y Per2 en Company Comp1 con recuentos de discusión de 2 y 0.
Para garantizar que las relaciones funcionen correctamente, deben estar activas y la lógica de filtrado de la medida debe aplicarse correctamente. Si se seleccionan varias personas en la segmentación, SELECTEDVALUE devuelve BLANK(), por lo que es posible que sea necesario realizar ajustes mediante VALUES(Table2[CompanyName]) para escenarios de selección múltiple. Si Table3 no filtra correctamente, podría ser útil ajustarlo con ALL(Table3) dentro de la función FILTER.
Saludos
Gracias por la rápida respuesta. Lo intenté pero no funciona. Obtengo la información, pero obtengo todas las filas de la Tabla 1. Así que, esencialmente, para John obtengo
Carnero | 0
Juan | 2
Joe | 0
Per1 | 2
Lo que me cuesta es conseguir que Table1 filtre no sólo por empresa, sino también por los nombres seleccionados en Table3
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.