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

Join us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Calcular la proporción de clientes leales/ abandonos / nuevos

Hola Comunidad PowerBI!

Realmente necesito tu ayuda. Tengo la tarea de derivar información en un extenso conjunto de datos de ventas que abarca 3 años; el año pasado, este año y el año que viene.

A continuación se encuentra un conjunto de datos de maqueta:

Hay 3 tipos de clientes diferentes y se espera que Qty se muestre para 2022 Qty. Los meses van desde enero de 2020 hasta diciembre de 2022. Incluso cuando el cliente ha batido, el período restante seguirá reflejando 0 como ventas.

Número de cliente.Tipo de cliente Ventas ene 2020Feb 2020 Ventas...Ventas ene 2021Feb 2021 Ventas...Ene 2022 Ventas Feb 2022 Ventas...
1A9002000000
2B30020000100500
3A0000500200
4C00200300150400

Estoy buscando crear algunos gráficos para mostrar las cifras / proporción de nuevos clientes potenciales más allá de junio de 2021 (Grupo 1) y clientes que se han batido (Grupo 2) y clientes leales (Grupo 3).

En este ejemplo, el cliente n.º 1 pertenecerá al grupo 2. Los clientes n.º 2 y 4 pertenecerán al Grupo 3. El cliente n.º 3 pertenecerá al grupo 2.

Realmente apreciar cualquier ayuda! Muchas gracias.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hay @lwklwk98,

Por favor, compruebe si esto es lo que desea:

Group Column = 
VAR FirstDayofCurrentMonth =
    DATE ( YEAR ( TODAY () ), MONTH ( TODAY () ), 1 )
VAR Sales_CurrentMonth =
    CALCULATE (
        SUM ( Sheet1[Sales] ),
        FILTER (
            Sheet1,
            Sheet1[Customer No.] = EARLIER ( Sheet1[Customer No.] )
                && Sheet1[MonthYear] = FirstDayofCurrentMonth
        )
    )
VAR Sales_beyond =
    CALCULATE (
        SUM ( Sheet1[Sales] ),
        FILTER (
            Sheet1,
            Sheet1[Customer No.] = EARLIER ( Sheet1[Customer No.] )
                && Sheet1[MonthYear] > FirstDayofCurrentMonth
        )
    )
VAR Sales_previous =
    CALCULATE (
        SUM ( Sheet1[Sales] ),
        FILTER (
            Sheet1,
            Sheet1[Customer No.] = EARLIER ( Sheet1[Customer No.] )
                && Sheet1[MonthYear] < FirstDayofCurrentMonth
        )
    )
RETURN
    SWITCH (
        TRUE (),
        Sales_previous = 0
            && Sales_CurrentMonth = 0
            && Sales_beyond > 0, "Potential New Customers",
        Sales_beyond = 0
            && ( Sales_previous <> 0
            || Sales_CurrentMonth <> 0 ), "Customers that Churned",
        "Loyal Customers"
    )
Group Measure = 
VAR FirstDayofCurrentMonth =
    DATE ( YEAR ( TODAY () ), MONTH ( TODAY () ), 1 )
VAR Sales_CurrentMonth =
    CALCULATE ( SUM ( Sheet1[Sales] ), Sheet1[MonthYear] = FirstDayofCurrentMonth )
VAR Sales_beyond =
    CALCULATE ( SUM ( Sheet1[Sales] ), Sheet1[MonthYear] > FirstDayofCurrentMonth )
VAR Sales_previous =
    CALCULATE ( SUM ( Sheet1[Sales] ), Sheet1[MonthYear] < FirstDayofCurrentMonth )
RETURN
    SWITCH (
        TRUE (),
        Sales_previous = 0
            && Sales_CurrentMonth = 0
            && Sales_beyond > 0, "Potential New Customers",
        Sales_beyond = 0
            && ( Sales_previous <> 0
            || Sales_CurrentMonth <> 0 ), "Customers that Churned",
        "Loyal Customers"
    )

group.PNG

Nota: Convierto "MonthYear" a Tipo de fecha y se utiliza el primer día de cada mes de forma predeterminada, no hay otras fechas. Por lo tanto, solo se usa el primer día de cada mes en DAX.

Saludos

Icey

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

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hay @lwklwk98,

Por favor, compruebe si esto es lo que desea:

Group Column = 
VAR FirstDayofCurrentMonth =
    DATE ( YEAR ( TODAY () ), MONTH ( TODAY () ), 1 )
VAR Sales_CurrentMonth =
    CALCULATE (
        SUM ( Sheet1[Sales] ),
        FILTER (
            Sheet1,
            Sheet1[Customer No.] = EARLIER ( Sheet1[Customer No.] )
                && Sheet1[MonthYear] = FirstDayofCurrentMonth
        )
    )
VAR Sales_beyond =
    CALCULATE (
        SUM ( Sheet1[Sales] ),
        FILTER (
            Sheet1,
            Sheet1[Customer No.] = EARLIER ( Sheet1[Customer No.] )
                && Sheet1[MonthYear] > FirstDayofCurrentMonth
        )
    )
VAR Sales_previous =
    CALCULATE (
        SUM ( Sheet1[Sales] ),
        FILTER (
            Sheet1,
            Sheet1[Customer No.] = EARLIER ( Sheet1[Customer No.] )
                && Sheet1[MonthYear] < FirstDayofCurrentMonth
        )
    )
RETURN
    SWITCH (
        TRUE (),
        Sales_previous = 0
            && Sales_CurrentMonth = 0
            && Sales_beyond > 0, "Potential New Customers",
        Sales_beyond = 0
            && ( Sales_previous <> 0
            || Sales_CurrentMonth <> 0 ), "Customers that Churned",
        "Loyal Customers"
    )
Group Measure = 
VAR FirstDayofCurrentMonth =
    DATE ( YEAR ( TODAY () ), MONTH ( TODAY () ), 1 )
VAR Sales_CurrentMonth =
    CALCULATE ( SUM ( Sheet1[Sales] ), Sheet1[MonthYear] = FirstDayofCurrentMonth )
VAR Sales_beyond =
    CALCULATE ( SUM ( Sheet1[Sales] ), Sheet1[MonthYear] > FirstDayofCurrentMonth )
VAR Sales_previous =
    CALCULATE ( SUM ( Sheet1[Sales] ), Sheet1[MonthYear] < FirstDayofCurrentMonth )
RETURN
    SWITCH (
        TRUE (),
        Sales_previous = 0
            && Sales_CurrentMonth = 0
            && Sales_beyond > 0, "Potential New Customers",
        Sales_beyond = 0
            && ( Sales_previous <> 0
            || Sales_CurrentMonth <> 0 ), "Customers that Churned",
        "Loyal Customers"
    )

group.PNG

Nota: Convierto "MonthYear" a Tipo de fecha y se utiliza el primer día de cada mes de forma predeterminada, no hay otras fechas. Por lo tanto, solo se usa el primer día de cada mes en DAX.

Saludos

Icey

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

Syndicate_Admin
Administrator
Administrator

@lwklwk98 , no tengo muy clara la lógica

Nuevos clientes potenciales más allá de junio de 2021 (Grupo 1) y clientes que han batido (Grupo 2) y clientes leales (Grupo 3), ¿Puede explicarlo?

Por lo general, en función de la duración del tiempo, podemos obtener retención de clientes

Retención de clientes Parte 1:
https://community.powerbi.com/t5/Community-Blog/Customer-Retention-Part-1-Month-on-Month-Retention/b...
Retención de clientes Parte 2: Retención de período a período:https://community.powerbi.com/t5/Community-Blog/Customer-Retention-Part-2-Period-over-Period-Retenti...

Hola Amit, gracias por su respuesta.

Para profundizar en mi frase, lo que quiero decir es que me gustaría categorizar a mis clientes en 3 grupos como se mencionó.

El primer grupo serán los Potenciales Nuevos Clientes. Estos son clientes que me proporcionan ventas más allá del mes en curso en el que estoy, que en este caso será junio de 2021.

El segundo grupo serán los clientes que se agitaron. Estos son clientes que no tienen ninguna venta conmigo más allá del mes en curso en el que estoy.

El tercer grupo serán mis clientes leales que son básicamente clientes que no caen dentro de cualquiera de los 2 grupos anteriores.

Espero que se aclare!

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

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

Top Solution Authors