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
Syndicate_Admin
Administrator
Administrator

¿Cómo puedo crear una medida RANKX sin desencadenar una cruz?

Hola, tengo dos tablas Empresas y Transacciones que tienen una relación de 1 a varios entre empresas y transacciones y están vinculadas en el modelo por un campo De identificador de empresa.

La tabla Empresas tiene los siguientes campos:

  1. Identificación de la empresa
  2. Nombre de la empresa

Mientras que la tabla Transacciones tiene los siguientes campos (tenga en cuenta el campo fondo en particular- una sola empresa puede tener varias transacciones con 1 o más fondos):

  1. Id. de transacción
  2. Id. de empresa relacionada
  3. Fecha
  4. Fondo
  5. Importe

Estoy intentando crear una medida (DateRank) que clasifique las transacciones por fecha en cada grupo Empresa-Fondo y, a continuación, mostrarla en una tabla que muestre el Nombre de la empresa, el Fondo, el identificador de transacción y el rango calculado.

No he podido hacer esto sin terminar con un producto cartesiano de las dos tablas donde el rango se calcula correctamente para las filas donde el Companies[Company ID] coincide con el Transactions[Related Company ID], pero la tabla también termina teniendo filas adicionales para todos los elementos de la tabla Transactions (incluso los que los id de la compañía no coinciden) con el valor calculado siendo 1.

Como parte de mi investigación en línea, encontré un montón de blogs(ejemplo)que hablan sobre dax auto-exist resultando en un comportamiento como este, pero mientras que hicieron un muy buen trabajo de explicar por qué ese comportamiento estaba sucediendo no pude encontrar en ellos ninguna solución que funcionó para mi caso de uso.

Realmente apreciaría la ayuda de alguien aquí, ya que debe haber alguna manera de hacer esto!

Aquí está la fórmula que tengo hasta ahora:

Measure DateRank =
    VAR thisFund = SELECTEDVALUE(Transactions[Fund])
    VAR thisDate = SELECTEDVALUE(Transactions[Date])
    Return
        CALCULATE(
            RANKX(
                ALLSELECTED(Transactions),
                Transactions[Date],
                thisCloseDate,
                DESC
            ),
            KEEPFILTERS(Transactions[Fund] = thisFund)
        )

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

@Hamzehn , si necesita rango en fecha en esta tabla esto puede ser columna no medir

rank = rankx(filter(Table, [related company id] = earlier( [related company id] ) && [Fund] =earlier(Fund) ), [Date],,desc, dense)

Puede tener rango de medida en la fecha máxima

ejemplo

rank = rankx(filter(Table, [related company id] = max( [related company id] ) ), calculate(max([Date])),,desc, dense)

Para rango, consulte estos vínculos
https://radacad.com/how-to-use-rankx-in-dax-part-2-of-3-calculated-measures
https://radacad.com/how-to-use-rankx-in-dax-part-1-of-3-calculated-columns
https://radacad.com/how-to-use-rankx-in-dax-part-3-of-3-the-finale
https://community.powerbi.com/t5/Community-Blog/Dynamic-TopN-made-easy-with-What-If-Parameter/ba-p/3...

View solution in original post

Syndicate_Admin
Administrator
Administrator

Hay @Hamzehn

¿Es este el resultado que quieres? Grupo por ID de empresa relacionada y fondo, rango por fecha.

Ailsamsft_0-1630400369099.png

Puede crear una columna para devolver el rango .

rank = rankx(filter(Transactions, [related company id] = earlier( [related company id] ) && [Fund] =earlier(Transactions[Fund]) ), [Date],,ASC, dense)

He adjuntado mi archivo pbix, puede consultarlo.

Saludos

Equipo de apoyo a la comunidad _ Ailsa Tao

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hay @Hamzehn

¿Es este el resultado que quieres? Grupo por ID de empresa relacionada y fondo, rango por fecha.

Ailsamsft_0-1630400369099.png

Puede crear una columna para devolver el rango .

rank = rankx(filter(Transactions, [related company id] = earlier( [related company id] ) && [Fund] =earlier(Transactions[Fund]) ), [Date],,ASC, dense)

He adjuntado mi archivo pbix, puede consultarlo.

Saludos

Equipo de apoyo a la comunidad _ Ailsa Tao

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Syndicate_Admin
Administrator
Administrator

@Hamzehn , si necesita rango en fecha en esta tabla esto puede ser columna no medir

rank = rankx(filter(Table, [related company id] = earlier( [related company id] ) && [Fund] =earlier(Fund) ), [Date],,desc, dense)

Puede tener rango de medida en la fecha máxima

ejemplo

rank = rankx(filter(Table, [related company id] = max( [related company id] ) ), calculate(max([Date])),,desc, dense)

Para rango, consulte estos vínculos
https://radacad.com/how-to-use-rankx-in-dax-part-2-of-3-calculated-measures
https://radacad.com/how-to-use-rankx-in-dax-part-1-of-3-calculated-columns
https://radacad.com/how-to-use-rankx-in-dax-part-3-of-3-the-finale
https://community.powerbi.com/t5/Community-Blog/Dynamic-TopN-made-easy-with-What-If-Parameter/ba-p/3...

Gracias @amitchandak. Creo que tienes razón y es posible que no necesite una medida exactamente para hacer clasificaciones. Para mi propósito, dado que este iba a ser un paso intermedio de lo que estaba tratando de hacer, pensé que incluso podría escaparme sin tener que hacer el rango simplemente confiando en la columna de fecha que ya está allí.

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.