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

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

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
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

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.