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
KentY
New Member

Obtener el valor máximo de una columna de una tabla relacionada

Hola a todos,

Nuevo en PowerBI, y estoy tratando de seguir la mejor práctica de construir un modelo en lugar de un informe. Sé que esta pregunta se ha hecho de diversas formas en otros lugares de estos foros, pero no puedo envolver la cabeza en torno a cómo aplicar esas soluciones a mi situación particular, así que pido disculpas de antemano si esta pregunta es una duplicación de esas preguntas.

De todos modos, como jugador de toda la vida, tengo un proyecto divertido que estoy haciendo donde estoy creando un sistema de gamificación para mi trabajo (no estoy esperando nada super impactante de este proyecto, es sólo algo divertido de probar).

Lo que tengo es una tabla 'LevelXP-Team' que tiene los requisitos de XP para alcanzar cada nivel:

Level-XP.png

Esta tabla 'LevelXP-Team' se relaciona de varios a uno con una tabla 'TeamMemberRef' que contiene cada miembro del equipo y su XP total:

XP-relate.png

Lo que me gustaría hacer es crear 2 nuevas columnas en 'TeamMemberRef' con estos valores respectivos:

  1. 'TeamMemberRef'[CurrentLevel]
    • Devuelve el nivel correspondiente de 'LevelXP-Team'[Level] que el usuario ha alcanzado, utilizando la columna 'LevelXP-Team'[(Max Level 99)] como requisito de XP.
  2. 'TeamMemberRef'[XPToNextLevel]
    • Devuelve la XP restante de 'LevelXP-Team'[(Nivel máximo 99)] que han dejado para alcanzar el siguiente nivel en 'LevelXP-Team'[Nivel]

Así, por ejemplo, si John Doe en la tabla TeamMemberRef tiene 5.000 XP (por lo que un valor de 5.000 en la columna 'TeamMemberRef'[TotalXP-Team]), me gustaría devolver en una nueva columna "CurrentLevel" que su nivel actual es 5 (saliendo de la 'marchando LevelXP-Team'[(Nivel máximo 99)] para el requisito XP), y luego me gustaría una nueva columna separada "XPToNextLevel" que muestra que tiene 751 XP restante para alcanzar el siguiente nivel (que sería de nivel 6 con un requisito de 5.751 XP).

¡Gracias!

1 ACCEPTED SOLUTION

Hizo más buscando en línea, y fue capaz de resolverlo. Aquí están mis expresiones DAX finales. No estoy seguro de si son "óptimos", pero funcionan para mí!

  1. 'TeamMemberRef'[CurrentLevel]
    • Devuelve el nivel correspondiente de 'LevelXP-Team'[Level] que el usuario ha alcanzado, utilizando la columna 'LevelXP-Team'[(Max Level 99)] como requisito de XP.
      • CurrentLevel ? LOOKUPVALUE('LevelXP-Team'[Level],'LevelXP-Team'[XP (Max Level 99)],CALCULATE(MAX('LevelXP-Team'[XP (Max Level 99)]),FILTER(ALL('LevelXP-Team'),TeamMemberRef[TotalXP-Team]>'LevelXP-Team'[XP (Max Level 99)]))
  2. 'TeamMemberRef'[XPToNextLevel]
    • Devuelve la XP restante de 'LevelXP-Team'[(Nivel máximo 99)] que han dejado para alcanzar el siguiente nivel en 'LevelXP-Team'[Nivel]
      • XPToNextLevel ? CALCULATE(MIN('LevelXP-Team'[XP (Max Level 99)]),FILTER(ALL('LevelXP-Team'),TeamMemberRef[TotalXP-Team]<'LevelXP-Team'[XP (Max Level 99)])) - TeamMemberRef[TotalXP-Team]

View solution in original post

3 REPLIES 3
jairoaol
Impactful Individual
Impactful Individual

no deberias hacer eso por relaciones sino mediante calculos DAX a nivel de columnas.

si el campo TotalXP-Team está entre los periodos MAX entonces que le asigne un nivel XP requerido.

Gracias por su respuesta. ¿Podría dar un ejemplo de las expresiones DAX que usaría o de los pasos que seguiría? Soy nuevo en PowerBI, así que no estoy muy seguro de por dónde empezar. ¡Gracias de nuevo!

Hizo más buscando en línea, y fue capaz de resolverlo. Aquí están mis expresiones DAX finales. No estoy seguro de si son "óptimos", pero funcionan para mí!

  1. 'TeamMemberRef'[CurrentLevel]
    • Devuelve el nivel correspondiente de 'LevelXP-Team'[Level] que el usuario ha alcanzado, utilizando la columna 'LevelXP-Team'[(Max Level 99)] como requisito de XP.
      • CurrentLevel ? LOOKUPVALUE('LevelXP-Team'[Level],'LevelXP-Team'[XP (Max Level 99)],CALCULATE(MAX('LevelXP-Team'[XP (Max Level 99)]),FILTER(ALL('LevelXP-Team'),TeamMemberRef[TotalXP-Team]>'LevelXP-Team'[XP (Max Level 99)]))
  2. 'TeamMemberRef'[XPToNextLevel]
    • Devuelve la XP restante de 'LevelXP-Team'[(Nivel máximo 99)] que han dejado para alcanzar el siguiente nivel en 'LevelXP-Team'[Nivel]
      • XPToNextLevel ? CALCULATE(MIN('LevelXP-Team'[XP (Max Level 99)]),FILTER(ALL('LevelXP-Team'),TeamMemberRef[TotalXP-Team]<'LevelXP-Team'[XP (Max Level 99)])) - TeamMemberRef[TotalXP-Team]

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.