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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Repita el cliente L12M según la fecha seleccionada Dax vs SQL

Hola

He estado lidiando durante bastante tiempo con el escenario repetido del cliente. Tuve un colegues hacer un script sql dando una salida para clientes repetidos que compraron en los últimos 12 meses (incluso si no compraron en el mes actual).
Sin embargo, no necesito hacerlo en Dax después de todo, ya que el cliente quiere filtrar y profundizar en CustomerEmail solo para clientes repetidos.

1. ¿Alguien tiene la misma solución en DAX?

2. En el caso de que sí, ¿se puede modificar el SQL a DAX para que parezca 12 meses atrás desde la fecha seleccionada (AAAA-MM)

El script SQL es el siguiente:

/*
Repita los datos de la métrica del cliente:
Esta métrica recopila información sobre los clientes habituales que compraron en los últimos 12 meses (incluso si no compraron en el mes actual)

*/

DECLARE @tempdate date = CONVERT(date,GETDATE())

DECLARE @CurrentMonthStart date = DATEADD(DAY,1-DAY(@tempdate),@tempdate)

DECLARAR tabla @OrderHeader (
Customer_Email varchar(máx.),
OrderInvoiceNo varchar(max),
Fecha de finalización,
Decimal total(19,2)
)

INSERTAR EN @OrderHeader (Customer_Email, OrderInvoiceNo, CompletedDate, Total)
SELECCIONE DISTINTO Customer_email, OrderNumber, CONVERT(date,LEFT(CompletedDate, CHARINDEX(' ', CompletedDate)),103) AS CompletedDate, CONVERT(decimal(19,7), [OrderQuantity])*CONVERT(decimal(19,7), [DiscountedUnitPrice]) AS Total
DESDE [TableA]
DONDE Customer_email NO ES NULO Y Customer_email <> '' Y CompletedDate NO ES NULO Y
CONVERT(date,LEFT(CompletedDate, CHARINDEX(' ', CompletedDate)),103) > DATEADD(year,-2,@CurrentMonthStart) Y
CONVERT(decimal(19,7), [OrderQuantity])*CONVERT(decimal(19,7), [DiscountedUnitPrice]) NO ES NULL

DECLARE @counter int = 0
DECLARE @Max int = 11
DECLARAR @DateVariable fecha
DECLARAR tabla @Output (
Customer_Email varchar(máx.),
MesFecha de fecha,
TotalNetSales decimal(19,2)
)

WHILE (@counter <= @Max)
EMPEZAR

SET @DateVariable = DATEADD(MONTH,-@counter, @CurrentMonthStart)

INSERTAR EN @Output(Customer_Email, MonthDate, TotalNetSales)
SELECCIONE RC. Customer_Email, RC. StartDate AS MonthDate, TotalNetSales
FROM (SELECT Customer_Email , DATEADD(MONTH,-1,@DateVariable) AS StartDate, DATEADD(DAY,-1,@DateVariable) AS EndDate, COUNT(CompletedDate) AS NoOfOrders, SUM(Total) AS TotalNetSales
DESDE @OrderHeader
DONDE CompletedDate ENTRE DATEADD(YEAR,-1,@DateVariable) Y DATEADD(DAY,-1,@DateVariable)
GRUPO POR Customer_Email
TENER CUENTA(CompletedDate) > 1 ) AS RC

SET @counter = @counter+1
FIN


SELECCIONE * DESDE @Output

Muchas gracias

1 REPLY 1
Syndicate_Admin
Administrator
Administrator

@Axiomite, tengo pocos blogs sobre eso, estos dos deberían ayudar

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

Retención de clientes Parte 5: LTD vs Retención de período
https://community.powerbi.com/t5/Community-Blog/Customer-Retention-Part-5-LTD-and-PeriodYoY-Retentio...

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

April Fabric Community Update

Fabric Community Update - April 2024

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