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

Don'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.

Reply
mlozano
Helper III
Helper III

Problema RANK Condicionado

Estoy intentando calcular la clasificación de una agencia usando la fórmula RANKX, pero no puedo resolverlo.

Lo que estoy intentando hacer es que el ranking se calcule teniendo en cuenta la inversión de cada agencia, pero esto no puede considerar agencias con YoY negativo, hay que excluirlas del ranking. Solo quiero un ranking de Agencias que tengan una variación % positiva (2023 vs 2024).


Estoy usando la siguiente fórmula pero sin mucho éxito.
RANKX Agencia 1 Pos =
VAR InversionYTD = [Inversión neta YTD Agencia]
VAR VariacionYTD = [Variación YTD Agencia]
RETURN
IF(
NOT ISBLANK(InversionYTD) && InversionYTD <> 0 && VariacionYTD > 0,
RANKX(
            FILTER(
                           ALLSELECTED('Industria'[Agencia]),
                                   [Variación YTD Agencia] > 0
                       ),
           CALCULATE(
                                  [Inversión neta YTD Agencia],
                                             REMOVEFILTERS('Industria'[Anunciante]), -- Delete filters of advertiser column
                             ),
                             ,
            DESC,
           Dense
                      ),
           BLANK()

)

El resultado esperado sería un objeto visual matricial como el de la imagen.

mlozano_1-1737686094784.png

 

Resultado esperado

AnuncianteAgencia20232024DiffYoYRankx
TECNOQUIMICASSANCHO/BBDO$ 364,529$ 435,109$ 70,58019%1
CENTRAL CERVECERASANCHO/BBDO$ 180$ 32,094$ 31,91517744%1
PEPSI COL+POSTOBONSANCHO/BBDO$ 3,856$ 20,385$ 16,529429%1
ALMACENES EXITOSANCHO/BBDO$ 65,194$ 79,979$ 14,78523%1
BANCOLOMBIASANCHO/BBDO$ 45,218$ 59,528$ 14,30932%1
ALIMENTOS POLARSANCHO/BBDO$ 14,610$ 26,580$ 11,97082%1
MERCADOLIBRE.COMSANCHO/BBDO$ 14,966$ 24,951$ 9,98667%1
PEPSICO ALIMENTOSSANCHO/BBDO$ 11,078$ 17,517$ 6,43958%1
ECOPETROLSANCHO/BBDO$ 8,340$ 12,604$ 4,26451%1
LEADERS+CEETSANCHO/BBDO$ 2,234$ 5,461$ 3,226144%1
C FUNCIONAL BEBIDASSANCHO/BBDO$ 965$ 3,937$ 2,972308%1
DAIMLER COLOMBIA SASANCHO/BBDO$ 2,167$ 5,033$ 2,865132%1
TERPELSANCHO/BBDO$ 1,763$ 4,196$ 2,433138%1
AVON CALLINGSSANCHO/BBDO$ 268$ 1,493$ 1,225456%1
ARTURO CALLESANCHO/BBDO$ 301$ 1,380$ 1,079359%1
CORONASANCHO/BBDO$ 2,397$ 2,782$ 38516%1
L&C S.A.SSANCHO/BBDO$ 892$ 1,238$ 34639%1
PJ COL SASSANCHO/BBDO$ 478$ 812$ 33470%1
ALM EXITO+B COLPATSANCHO/BBDO$ 83$ 230$ 147176%1
COLGATE PALMOLIVEYOUNG & RUBICAM$ 159,954$ 257,348$ 97,39461%2
COLGATE PALMOLIV INTYOUNG & RUBICAM$ 9,363$ 31,787$ 22,424240%2
HUAWEI TECHNOLOGIESYOUNG & RUBICAM$ 541$ 3,313$ 2,772512%2
DERCO SAYOUNG & RUBICAM$ 3,175$ 4,147$ 97231%2
WALT DISNEY COMPANYBTL$ 145,513$ 254,319$ 108,80675%3


Sample Data1.xlsx

1 ACCEPTED SOLUTION
mlozano
Helper III
Helper III

Esta fue la solución

RANKX Agencia 1 Pos =
RANKX(
    FILTER(
        ADDCOLUMNS(
            SUMMARIZE(
                ALL(Industria[Agencia], Industria[Anunciante]), -- Trabajar a nivel de Agencia y Anunciante
                Industria[Agencia],
                Industria[Anunciante]
            ),
            "VariacionAgenciaTotal",
            CALCULATE(
                [Variación YTD Agencia],
                REMOVEFILTERS(Industria[Anunciante]) -- Evalúa la variación al nivel de Agencia
            ),
            "ExcluirAnunciante",
            IF(
                CALCULATE(
                    [Variación YTD Agencia],
                    REMOVEFILTERS(Industria[Anunciante])
                ) > 0,
                FALSE(), -- No excluir si la Agencia tiene Variación Positiva
                TRUE() -- Excluir si la Agencia tiene Variación Negativa
            )
        ),
        [ExcluirAnunciante] = FALSE() -- Filtra solo Anunciantes de Agencias con Variación Positiva
    ),
    CALCULATE(
        [Inversión neta YTD Agencia],
        REMOVEFILTERS(Industria[Anunciante]) -- Ranking basado en la inversión total de la Agencia
    ),
    ,
    DESC,
    DENSE
)

View solution in original post

3 REPLIES 3
mlozano
Helper III
Helper III

Esta fue la solución

RANKX Agencia 1 Pos =
RANKX(
    FILTER(
        ADDCOLUMNS(
            SUMMARIZE(
                ALL(Industria[Agencia], Industria[Anunciante]), -- Trabajar a nivel de Agencia y Anunciante
                Industria[Agencia],
                Industria[Anunciante]
            ),
            "VariacionAgenciaTotal",
            CALCULATE(
                [Variación YTD Agencia],
                REMOVEFILTERS(Industria[Anunciante]) -- Evalúa la variación al nivel de Agencia
            ),
            "ExcluirAnunciante",
            IF(
                CALCULATE(
                    [Variación YTD Agencia],
                    REMOVEFILTERS(Industria[Anunciante])
                ) > 0,
                FALSE(), -- No excluir si la Agencia tiene Variación Positiva
                TRUE() -- Excluir si la Agencia tiene Variación Negativa
            )
        ),
        [ExcluirAnunciante] = FALSE() -- Filtra solo Anunciantes de Agencias con Variación Positiva
    ),
    CALCULATE(
        [Inversión neta YTD Agencia],
        REMOVEFILTERS(Industria[Anunciante]) -- Ranking basado en la inversión total de la Agencia
    ),
    ,
    DESC,
    DENSE
)
Syndicate_Admin
Administrator
Administrator

@Syndicate_Admin , cree una medida por separado en caso de que desee eliminar el filtro y obtener el subtotal

y luego, en esa medida, tienen un rango como

Rankx(allselected(Tabla[Anunciante], Tabla[Agencia]), [Medir])

En caso de que tenga columnas en la tabla, use resumir, exmple

Clasificación en tablas de dimensiones: https://youtu.be/X59qp5gfQoA

Considere la posibilidad de crear un nuevo rango de función, si es necesario

Power BI - Nueva función DAX: RANK - En qué se diferencia de RANKX: https://youtu.be/TjGkF44VtDo

Vale, consegui esta fomula que me da el resultado correcto

RANKX Agencia 1 Pos =
RANKX(
SUMMARIZE(
ALLSELECTED(Industria),
Industria[Anunciante],
Industria[Agencia]),
CALCULATE([Inversión neta YTD Agencia],
REMOVEFILTERS(Industria[Anunciante]))
,
,
DESC,
Dense
)

Ahora necesito excluir las Agencias con YoY  Negativo, no deben aparecer en el ranking, e intentdo algo com 

RANKX Agencia 1 Pos =
RANKX(
FILTER(
SUMMARIZE(
ALLSELECTED(Industria),
Industria[Anunciante],
Industria[Agencia],
"InversionTotal", CALCULATE([Inversión neta YTD Agencia], REMOVEFILTERS(Industria[Anunciante])),
"VariacionTotal", CALCULATE([Variación YTD Agencia], REMOVEFILTERS(Industria[Anunciante]))
),
[VariacionTotal] > 0 -- Incluye solo agencias con variación positiva
),
CALCULATE([Inversión neta YTD Agencia], REMOVEFILTERS(Industria[Anunciante])),
,
DESC,
DENSE
)

Pero el resultado es blank

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

Jan NL Carousel

Fabric Community Update - January 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors