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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
michaelshparber
Advocate V
Advocate V

Encuentra clientes que dejen de comprar esta semana vs.

Necesito calcular cuántos clientes de los que compraron la semana pasada - no compró esta semana.

Tengo una tabla de ventas simple: Fecha, Cliente, Producto, Importe.

Tengo una tabla de tiempo Calendario, pero no hay tabla de atenuación del Cliente (los clientes son identificados por cookies).

Pienso en un enfoque pero que lucha por implementarlo en una medida DAX:

Intenté crear una tabla VAR (por ejemplo, TempTable) que para cada cliente crea dos columnas: las ventas de la semana pasada y las ventas de esta semana, mediante ADDCOLUMNS.

Entonces - Filtrar solo a los clientes que tienen ventas de la semana pasada>0 y a esta semana ventas en blanco ().

El problema es - No puedo llegar a la TempTable nuevas columnas con FILTER, no puedo escribir TempTable[LastWeekSales], porque se trata de una tabla VAR.

He visto muchos ejemplos, (como aquí: https://www.daxpatterns.com/new-and-returning-customers/) pero por lo general usan una tabla Customers Dim y necesito hacerlo sin ella.

Por favor, ayúdenme.

1 ACCEPTED SOLUTION
amitchandak
Super User
Super User

@michaelshparber . durante una semana durante una semana se puede utilizar la semana o la semana de clasificación

Ejemplo

columna en la tabla de fecha/semana

Rango de la semana - RANKX(all('Date'),'Date'[Week Start date],,ASC,Dense)

Medida
Esta semana: CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]-max('Date'[Week Rank])))
Last Week ? CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]-max('Date'[Week Rank])-1))
Last year WeekTM CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]-(max('Date'[Week Rank]) -52)))

Cliente perdido esta semana: Sumx(VALUES(Customer[Customer Id]),if(ISBLANK([This Week ]) && not(ISBLANK([Last Week])) , 1,BLANK()))
Nuevo cliente esta semana: sumx(VALUES(Customer[Customer Id]), if(ISBLANK([Last Week ]) && not(ISBLANK([This Week])) ,1,BLANK()))
Cliente retenido esta semana: if(not(ISBLANK([This Week])) && not(ISBLANK([Last Week])) , 1,BLANK())

Para la retención del cliente Consulte:
https://community.powerbi.com/t5/Community-Blog/Customer-Retention-Part-1-Month-on-Month-Retention/b...

Para Power BI — Semana a semana y WTD
https://medium.com/@amitchandak.1978/power-bi-wtd-questions-time-intelligence-4-5-98c30fab69d3
https://community.powerbi.com/t5/Community-Blog/Week-Is-Not-So-Weak-WTD-Last-WTD-and-This-Week-vs-La...

View solution in original post

4 REPLIES 4
stevedep
Memorable Member
Memorable Member

Hola @michaelshparber , @amitchandak ,

Veo que esta pregunta ya ha sido respondida. Me gustaría compartir la solución que creé por separado con usted para ver si añade algún valor para usted.

Esta es la medida:

___NumberOfCustomerStoppedBuying = 
//CONCATENATEX (
    SUMX(
    SUMMARIZE (
        CROSSJOIN ( Customers, 'Date' ),
        Customers[Customer],
        "s", if(
            CALCULATE (
                SUM ( Sales[Amount] ),
                FILTER (
                    Sales,
                    Sales[Date] >= MIN ( 'Date'[Date] )
                        && Sales[Date] <= MAX ( 'Date'[Date] )
                        && Sales[Customer] = SELECTEDVALUE ( Customers[Customer] )
                )
            ) > 0 , 1,0)
            ,
        "sp",    IF(   
            CALCULATE (
                SUM ( Sales[Amount] ),
                FILTER (
                    Sales,
                    Sales[Date] >= MIN ( 'Date'[Date] )-7
                        && Sales[Date] <= MAX ( 'Date'[Date])-7
                        && Sales[Customer] = SELECTEDVALUE ( Customers[Customer] )
                )
            ) > 0 , 1,0)
    ),
    if ([s]=0 && [sp]=1,1,0)
 //   [Customer] & " s:" & [s] & " sp:" & [sp] & "
 //   "
)

Enlace al archivo.

Mi mensaje de video para usted con la explicación sobre el enfoque:

Si usted considera que esto es una solución también, pls marca como tal. Los pulgares hacia arriba para el esfuerzo son apreciados.

¡Esperando su respuesta!

Saludos amables, Steve.

Gracias Steve @stevedep por la explicación detallada que incluye el video.

También se utiliza el enfoque SUMX() que comprueba las condiciones, como @amitchandak .

Fui con @amitchandak solución porque es más sencilla y no requiere m ni crossjoin ni crear una tabla Customers (como he dicho - mis clientes son cookies, así que no quiero molestarme en crear una enorme tabla Customers además de la tabla Sales).

Así que gracias de nuevo!

Si aún así sigues teniendo problemas, problema desconocido.

amitchandak
Super User
Super User

@michaelshparber . durante una semana durante una semana se puede utilizar la semana o la semana de clasificación

Ejemplo

columna en la tabla de fecha/semana

Rango de la semana - RANKX(all('Date'),'Date'[Week Start date],,ASC,Dense)

Medida
Esta semana: CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]-max('Date'[Week Rank])))
Last Week ? CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]-max('Date'[Week Rank])-1))
Last year WeekTM CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]-(max('Date'[Week Rank]) -52)))

Cliente perdido esta semana: Sumx(VALUES(Customer[Customer Id]),if(ISBLANK([This Week ]) && not(ISBLANK([Last Week])) , 1,BLANK()))
Nuevo cliente esta semana: sumx(VALUES(Customer[Customer Id]), if(ISBLANK([Last Week ]) && not(ISBLANK([This Week])) ,1,BLANK()))
Cliente retenido esta semana: if(not(ISBLANK([This Week])) && not(ISBLANK([Last Week])) , 1,BLANK())

Para la retención del cliente Consulte:
https://community.powerbi.com/t5/Community-Blog/Customer-Retention-Part-1-Month-on-Month-Retention/b...

Para Power BI — Semana a semana y WTD
https://medium.com/@amitchandak.1978/power-bi-wtd-questions-time-intelligence-4-5-98c30fab69d3
https://community.powerbi.com/t5/Community-Blog/Week-Is-Not-So-Weak-WTD-Last-WTD-and-This-Week-vs-La...

SUMX()!

¡Claro, hizo el trabajo!

Gracias @amitchandak

Pero aún así, en general, ¿cómo puedo filtrar una variable de tabla?

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors