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

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Learn more

Reply
Syndicate_Admin
Administrator
Administrator

Problema de la ruta ambigua

Imagina que tengo estas tablas:

1. Profesores (lista de profesores con TeacherID, CityID)

2. Estudiantes (StudentID, CityID)

3. Puntuaciones (StudentID, TeacherID, puntuación)

4. Ciudad (CityID, Nombre de la ciudad, Estado...)

Ahora bien, si vinculo las puntuaciones tanto al profesor como al alumno, no me permitirá mantener activa la relación de ambos. ya que tendrá dos caminos de las puntuaciones a la ciudad (puntuaciones --> profesores --> ciudad) y (puntuaciones --> estudiantes --> ciudad). Aunque ni siquiera tengo relaciones bidireccionales establecidas. Estoy de acuerdo con que la dirección sea que los profesores anoten y los estudiantes marquen. Esto parece un problema común... ¿Cómo modelarías para no tener este problema?

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Simplemente quería poner una tarjeta que pudiera mostrar el total de estudiantes (recuento de estudiantes distint) en una ciudad (nombre de la ciudad en segmentación), o el número total de profesores en una ciudad.

Hola, @pbipoweruser123

Estoy encantado de ayudarte.

De acuerdo con su descripción,puede considerar la creación de dos instancias de la tabla de ciudades (Nueva tabla en Power BI Desktop), una para los profesores y otra para los estudiantes. Podemos llamarlos teacher_city y student_city, respectivamente:

student_city = city
teacher_city = city

vfenlingmsft_0-1722582062888.png

Y luego modifique las relaciones:

Une la tabla de profesores a la tabla de teacher_city a través de cityid.

Une la tabla de estudiantes a la tabla de student_city a través de cityid.

vfenlingmsft_1-1722582062889.png

A continuación, cree dos medidas:

Total Students =
DISTINCTCOUNT ( students[studentid] )
Total Teachers =
DISTINCTCOUNT ( teachers[teacherid] )

Este es el resultado:

vfenlingmsft_2-1722582087788.png

vfenlingmsft_3-1722582087790.png

Espero que mis sugerencias le den buenas ideas, si tiene más preguntas, aclare en una respuesta de seguimiento.
Saludos
Fen Ling,
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Syndicate_Admin
Administrator
Administrator

En Power BI, cuando hay varias relaciones entre tablas que crean una posible dependencia circular, es necesario administrar cuidadosamente estas relaciones para evitar ambigüedades y errores. A continuación, le indicamos cómo puede modelar los datos para controlar este escenario:

Enfoque de modelado

  1. Crear relaciones:

    • Profesores a puntuaciones: Uno a muchos (1:*), con el teacherid como clave.
    • Estudiantes a puntuaciones: Uno a muchos (1:*), con el studentid como clave.
    • Profesores a la ciudad: Muchos a uno (*:1), con el cityid como clave.
    • Estudiantes a la ciudad: Muchos a uno (*:1), con el cityid como clave.
  2. Gestión de relaciones:

    • Relaciones activas: Power BI solo permite una relación activa entre dos tablas a la vez. Puede tener una relación activa entre las puntuaciones y los profesores, y otra entre las puntuaciones y los alumnos, pero no ambas activas al mismo tiempo.
    • Relaciones inactivas: La otra relación se puede establecer como inactiva. Todavía puede usar relaciones inactivas en expresiones DAX.

Pasos para modelar y usar relaciones inactivas

  1. Crear las relaciones:

    • Relación activa: entre las puntuaciones y los docentes.
    • Relación inactiva: entre las puntuaciones y los estudiantes.

    Para establecer una relación como inactiva:

    • Vaya a la vista Modelo .
    • Seleccione la línea de relación entre Puntuaciones y Estudiantes.
    • Haga clic con el botón derecho y elija Propiedades.
    • Cambie la relación a Inactivo.
  2. Uso de DAX para aprovechar las relaciones inactivas:

    • Cuando necesite usar datos de la tabla Students (o cualquier otra relación inactiva), puede usar la función USERELATIONSHIP en las medidas de DAX para activar la relación temporalmente.

    Ejemplo de fórmula DAX con la relación inactiva:

    Puntuación total por ciudad = CALCULATE( SUM(Scores[Score]),
    USERELATIONSHIP(Puntuaciones[studentid], Estudiantes[studentid]), Profesores[cityid] = Ciudad[cityid] )

    Esta fórmula calcula la puntuación total, utilizando la relación inactiva entre las puntuaciones y los estudiantes para el cálculo.

Diagrama del modelo

Para visualizar las relaciones:

  1. Active Relationship:

    • Puntuaciones (studentid) -> Estudiantes (studentid) (Inactivo)
    • Puntuaciones (teacherid) -> Profesores (teacherid) (activo)
    • Profesores (cityid) -> Ciudad (cityid)
    • Estudiantes (cityid) -> ciudad (cityid)
  2. Inactive Relationship:

    • Puntuaciones (studentid) -> Estudiantes (studentid) (Inactivo)

Consideraciones

  • Complejidad del modelo de datos: tenga en cuenta que las relaciones complejas pueden provocar una mayor complejidad en los cálculos de DAX. Asegúrese de documentar bien estas relaciones para facilitar el mantenimiento y la comprensión.

  • Rendimiento: las relaciones inactivas pueden afectar al rendimiento en función de la complejidad de los cálculos. Supervise el rendimiento y optimícelo según sea necesario.

Al establecer las relaciones adecuadas como activas o inactivas y usar funciones de DAX como USERELATIONSHIP, puede administrar y usar varias relaciones de forma eficaz en Power BI.

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.