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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Manuel290
New Member

Problema al usar TOPN o RANKX junto con un gráfico de columnas apiladas con rango de edad como Leyenda

Hola a todos,

Mi problema es bastante simple en mi opinión, pero he estado atascado en él durante bastante tiempo. Tengo una tabla de Clientes, con información como ID, la fecha de su primera compra en la plataforma, rango de edad (faixa etária, en mi idioma) y LTV durante los primeros 30 días después de la primera compra. (LTV primeiros 30 dias es el nombre de la columna). LTV significa Life Time Value, que es la cantidad que el cliente ha gastado con nuestros productos.

Hay más columnas que eso, pero esas son las que me importan en este tema en particular.

Lo que estoy tratando de hacer es generar un gráfico de columnas apiladas que tiene:
Axis - categorizado por el mes de la 1a compra

Leyenda - Rango de edad

Valor: recuento de clientes, que se muestra en un % sobre el total de la columna.

He sido capaz de hacer eso, y este es mi resultado:

img 1.png

Esto es lo que quería, y es correcto. Sin embargo, el problema surge cuando intento replicar esto, pero quiero que toda esta información en el gráfico sea sólo sobre los 100 clientes TOP del mes en el que se unieron, utilizando el LTV mencionado anteriormente como el valor para el que se clasificarán.

Por lo tanto, creo que mi lógica es:
De alguna manera filtrar, para cada mes, los 100 clientes TOP por el LTV más alto --> Dados esos 100 clientes, mostrar sus información sobre la edad de acuerdo con la misma lógica en el gráfico anterior.

He intentado usar esa lógica, pero no funciona, y he visto otros hilos, pero no he encontrado un caso similar al mío. Lo más cerca que estuve de lo que quería era usar la siguiente fórmula:

Top 100 clientes por LTV 2 = 
CALCULATE(
    CALCULATE(COUNT(Clientes[ID Cliente]),
        TOPN(100,Clientes,Clientes[LTV primeiros 30 dias],DESC)),
KEEPFILTERS(Clientes[Faixa etária] <> BLANK())
)

Y luego éste, para que sea como % de la columna de mes

Top 100 clientes por LTV por idade = 
[Top 100 clientes por LTV 2]/CALCULATE([Top 100 clientes por LTV 2],ALL(Clientes[Faixa etária]))

Los resultados fueron los siguientes:

img 2.png

Como puede ver, no es correcto. El problema, sin embargo, es la fórmula "Top 100 clients por LTV 2", no la de %. Lo sé porque, trazando un objeto visual para ese, lo que obtengo es:

img 3.png

Esto no es lo que imagino que debería venir como resultado. En teoría, lo que quería era que cada barra se apilarara hasta 100, y cada una se dividiría según el rango de edad de los clientes. Sin embargo, no puedo entender lo que está pasando dentro de las fórmulas que escribí.

Si alguien pudiera ayudarme, eso sería genial, gracias

1 ACCEPTED SOLUTION
v-alq-msft
Community Support
Community Support

Hola, @Manuel290

Puede probar la siguiente medida para ver si ayuda.

Top 100 clientes por LTV por idade =
VAR _month =
    SELECTEDVALUE ( Client[Month] )
VAR _age =
    SELECTEDVALUE ( Clientes[Faixa etária] )
RETURN
    CALCULATE (
        COUNT ( Clientes[ID Cliente] ),
        FILTER (
            TOPN (
                100,
                FILTER ( ALL ( Clientes ), Client[Month] = _month ),
                Clientes[LTV primeiros 30 dias], DESC
            ),
            Clientes[Faixa etária] = _age
        )
    )
        / CALCULATE (
            COUNT ( Clientes[ID Cliente] ),
            TOPN (
                100,
                FILTER ( ALL ( Clientes ), Client[Month] = _month ),
                Clientes[LTV primeiros 30 dias], DESC
            )
        )

Saludos

Allan

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

1 REPLY 1
v-alq-msft
Community Support
Community Support

Hola, @Manuel290

Puede probar la siguiente medida para ver si ayuda.

Top 100 clientes por LTV por idade =
VAR _month =
    SELECTEDVALUE ( Client[Month] )
VAR _age =
    SELECTEDVALUE ( Clientes[Faixa etária] )
RETURN
    CALCULATE (
        COUNT ( Clientes[ID Cliente] ),
        FILTER (
            TOPN (
                100,
                FILTER ( ALL ( Clientes ), Client[Month] = _month ),
                Clientes[LTV primeiros 30 dias], DESC
            ),
            Clientes[Faixa etária] = _age
        )
    )
        / CALCULATE (
            COUNT ( Clientes[ID Cliente] ),
            TOPN (
                100,
                FILTER ( ALL ( Clientes ), Client[Month] = _month ),
                Clientes[LTV primeiros 30 dias], DESC
            )
        )

Saludos

Allan

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

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.