Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
3 years ago

Dax

Hola a todos,

Tengo dos tablas de Ventas y Calendario. Las ventas contienen las columnas 'customerName', 'salesDate' y 'productAmount'. Mientras que el calendario contiene todas las fechas.

He creado una nueva columna llamada 'customerType' (Usando DAX). Clasifico a los clientes como "Nuevos", "Activos", "Inactivos" y "Perdidos".

La definición de estos es:

  1. Nuevo: Cliente que ha realizado la primera compra
  2. Activo: Después de la 1ª compra todas las demás compras han sido realizadas por el cliente.
  3. Inactivo: Si el cliente no ha realizado ninguna compra después de 30 días de estado 'Activo' hasta que llegue el siguiente estado 'Activo'.
  4. Perdido: Si el cliente no ha realizado compras durante 60 días.

He hecho esto creando una medida en esa columna recién creada.

(Español a Inglés)

Mesa:

Ventas = Sales

Columna

fecha = date,

Cliente = Cliente/Cliente

La siguiente imagen es de la columna recién creada

La medida es

También he creado otra medida para obtener el recuento de clientes activos / nuevos / inactivos / perdidos.



Ahora el problema es que cuando voy a buscar el cliente perdido el recuento de los datos es incorrecto.

Cuenta perdida =
DÓNDE MaxDate = ..MAX(Calendario[Fecha])
DEVOLUCIÓN
CALCULAR(
SI(Ventas[Medida de tipo de cliente] = "Perdido", 1),
Calendario[Fecha] = MaxDate
)
Han creado otra medida sobre esto (para medidas no aditivas)
Recuento Total perdido = SUMX(VALORES(Ventas[Cliente]),[Cuenta perdida])
He creado todas las medidas en la tabla 'Ventas'/'Ventas' y mostrando los datos en una tabla como aquella en la que

Las tres primeras columnas de la tabla Calendario y todas las demás se miden de la tabla 'Ventas'.

Tenga en cuenta que la condición de unión entre 'Ventas' y 'Calendario' es fecha y Calendario contiene todas las Fechas, pero Ventas contiene fecha donde los datos están disponibles.

1 Reply

  • @tanzeel_1 , Encuentre el ejemplo en el archivo . En caso de que necesite contar o filtrar, siga la segmentación dinámica en el video

    Archivo después de la firma

    New active = var _count = countrows(Sales)+ 0
    var _diff =Datediff(CALCULATE(Max(Sales[Sales Date]), Filter(ALL('Date'), 'Date'[Date] <= Max('Date'[Date]))), Max('Date'[Date]), day)
    return 
    Switch( True(),
    Max('Date'[Date]) = Max(Sales[Sales Date]) , "Active",
    Max('Date'[Date]) < Minx(ALLEXCEPT(Sales,Customer[Name]), Sales[Sales Date]), blank(),
    Max('Date'[Date]) = Minx(ALLEXCEPT(Sales,Customer[Name]), Sales[Sales Date]), "New",
    _diff<=30 , "Inctive",
    _diff >60 , "Lost", "Partially Lost")
    

    Retención de clientes con segmentación dinámica, número de clientes nuevos/perdidos/retenidos: https://youtu.be/EyL7KMw877Q