Potencial de ventas y nuevos clientes

Un usuario Pregunto ✅

enexius

Hola a todos,

Tengo la siguiente tarea entre manos, pero todavía no he podido encontrar una solución.

Me gustaría calcular dos cosas:

1. Potencial de ventas para un año específico (por ejemplo, 2022). El potencial se define como: «El cliente tiene un contrato (s) en el año anterior al año seleccionado, pero no en el año seleccionado (además definido por el estado del contrato = válido) o después». En el próximo ejemplo, esto sería: Potencial para 2022 = 15 $ (el Cliente 2 tiene un contrato para 2022 pero no es válido)

Una solución que encontré fue pivotar el año del contrato con el valor, donde definí una medida como esta:

Revelación

Potencial 2022 =
CALCULAR (SUMA (Potencial[2021]),
Potencial[2022]= EN BLANCO (),
Potencial[2023]= EN BLANCO (),
Potencial[2024]= EN BLANCO (),
‘Potencial'[State of Contract]<> «caducado»,
‘Potencial'[State of Contract]<> «desconocido»)

Potencial 2022 = CALCULAR (SUMA (Potencial[2021]),Potencial[2022]= EN BLANCO (), potencial[2023]= EN BLANCO (), potencial[2024]= EN BLANCO (), ‘Potencial'[State of Contract]<> «caducado», ‘Potencial'[State of Contract]<> «desconocido»)

pero eso no ayudó con la segunda tarea.

2. Ventas para nuevos clientes: Cliente que no tenía contratos tres años antes del año seleccionado. En el siguiente ejemplo (para 2023), esto sería 10 $ (el Cliente 5 no tiene contrato de 2020-2022).

Espero que haya una solución para esto.

Departamento Cliente Fecha de orden Proceso Estado del contrato Posición Año del contrato Valor
A 1 01.01.2021 3 válido 1 2022 10 $
A 1 01.01.2021 3 válido 1 2023 10 $
A 1 01.01.2021 3 válido 1 2024 20 $
A 1 02.01.2021 4 Caducado 1 2025 30 $
A 2 04.05.2019 3 válido 1 2021 10 $
A 2 04.05.2019 3 válido 2 2021 5 $
A 2 10.12.2019 6 Caducado 1 2022 7 $
B 3 12.12.2020 9 válido 2 2022 8 $
A 2 08.01.2020 12 desconocido 2 2022 10 $
C 4 10.12.2020 7 válido 1 2021 15 $
A 4 05.07.2020 5 válido 1 2022 13 $
C 4 03.01.2019 1 válido 1 2022 12 $
B 5 02.03.2020 18 válido 2 2023 10 $

¡Gracias de antemano por su ayuda!

Salud,

Enno

claramente

Hola,

Aquí hay una solución con DAX (editado el 25.2.2021). Creo que tener un campo estático que diga quién es un cliente nuevo es valioso para muchos tipos de análisis de clientes.

Ver archivo de muestra: https://drive.google.com/file/d/1_tavilUUe9PSoE2PYlF9mKEOCZW4LghY/view?usp=sharing

Por debajo de 2023 es el año del informe. La lógica es que necesitamos saber el año de contrato anterior que un cliente tenía un contrato antes del año de informe. Entonces, el cliente es nuevo si este año faltan 3 años o si este año no está disponible.

2023 se puede reemplazar con un VAR que defina o, por ejemplo, YEAR (today ())

NEW COLUMNS:
1)
customer_last_contract_year = CALCULATE(Max(sales_customers[Contract Year]),ALLEXCEPT(sales_customers, sales_customers[Customer]))


2)
customer_prev_contract_year_before_reporting = CALCULATE(CALCULATE(MAX(sales_customers[Contract Year]),FILTER(sales_customers,2023>sales_customers[Contract Year])),ALLEXCEPT(sales_customers,sales_customers[Customer]))

3)
New_customer = IF(sales_customers[customer_last_contract_year]>= 2023 && ( ISBLANK(sales_customers[customer_prev_contract_year_before_reporting]) || (2023-sales_customers[customer_prev_contract_year_before_reporting] >= 3 && NOT ISBLANK(sales_customers[customer_prev_contract_year_before_reporting]))),TRUE,FALSE)

SALES VALUE NEW CUSTOMERS:
New_Customer_Sales = CALCULATE(SUM(sales_customers[Value]), sales_customers[new_customer] = TRUE)

Por lo general, haría esto para un cliente con SQL o Power Query, con pasos similares (la función de ventana SQL también ayudaría aquí)

Consulte mi Blog para obtener más información sobre el cálculo de fechas / qué usar y cuándo:

https://www.plainlyresults.com/blog/power-bi-dax-how-to-calculate-and-filter-based-on-dates/

https://www.plainlyresults.com/blog/when-to-use-dax-measure-vs-calculated-column-vs-other-tools/

Hola @enexius,

Por favor, comprueba el archivo adjunto,

SELECTED.JPG

Atentamente,

Icey

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Hola @enexius,

Por favor, comprueba el archivo adjunto,

SELECTED.JPG

Atentamente,

Icey

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

enexius

En respuesta a Icey

@Icey: Gracias por su solución, este fue un ejemplo muy bien descrito y funcionó a la perfección. Además, su conjunto de datos me mostró algunas mejoras en la estructura de mi tabla, lo que también ayudó en el rendimiento.

claramente

Hola,

Aquí hay una solución con DAX (editado el 25.2.2021). Creo que tener un campo estático que diga quién es un cliente nuevo es valioso para muchos tipos de análisis de clientes.

Ver archivo de muestra: https://drive.google.com/file/d/1_tavilUUe9PSoE2PYlF9mKEOCZW4LghY/view?usp=sharing

Por debajo de 2023 es el año del informe. La lógica es que necesitamos saber el año de contrato anterior que un cliente tenía un contrato antes del año de informe. Entonces, el cliente es nuevo si este año faltan 3 años o si este año no está disponible.

2023 se puede reemplazar con un VAR que defina o, por ejemplo, YEAR (today ())

NEW COLUMNS:
1)
customer_last_contract_year = CALCULATE(Max(sales_customers[Contract Year]),ALLEXCEPT(sales_customers, sales_customers[Customer]))


2)
customer_prev_contract_year_before_reporting = CALCULATE(CALCULATE(MAX(sales_customers[Contract Year]),FILTER(sales_customers,2023>sales_customers[Contract Year])),ALLEXCEPT(sales_customers,sales_customers[Customer]))

3)
New_customer = IF(sales_customers[customer_last_contract_year]>= 2023 && ( ISBLANK(sales_customers[customer_prev_contract_year_before_reporting]) || (2023-sales_customers[customer_prev_contract_year_before_reporting] >= 3 && NOT ISBLANK(sales_customers[customer_prev_contract_year_before_reporting]))),TRUE,FALSE)

SALES VALUE NEW CUSTOMERS:
New_Customer_Sales = CALCULATE(SUM(sales_customers[Value]), sales_customers[new_customer] = TRUE)

Por lo general, haría esto para un cliente con SQL o Power Query, con pasos similares (la función de ventana SQL también ayudaría aquí)

Consulte mi Blog para obtener más información sobre el cálculo de fechas / qué usar y cuándo:

https://www.plainlyresults.com/blog/power-bi-dax-how-to-calculate-and-filter-based-on-dates/

https://www.plainlyresults.com/blog/when-to-use-dax-measure-vs-calculated-column-vs-other-tools/

enexius

En respuesta a claramente

Hola @plainly, finalmente encontré el tiempo para probar tu solución. Resolvió mi problema y, con algunos ajustes menores, pude adaptar su fórmula para que se ajustara a mi división habilitada para el visor (pueden elegir qué año de contrato quieren ver).

¡Así que muchas gracias!

Amitchandak

@enexius, estos blogs proporcionan formas de conseguir nuevos clientes. Vea si pueden ayudar con alguna modificación.

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 tras período: https: //community.powerbi.com/t5/Community-Blog/Customer-Retention-Part-2-Period-over-Period-Retenti …

enexius

En respuesta a Amitchandak

Hola @amitchandak,

Gracias por su respuesta. Revisé la publicación de su blog y entendí que podía dividir algunas dimensiones en diferentes tablas, así como analizar las ventas de los clientes en función de la «fecha del pedido». Mi problema con eso es que la fecha del pedido para mí es irrelevante para dividir a los clientes en clientes nuevos y existentes, y además excluye ciertos estados del contrato.

Mi separación (cliente nuevo / existente) se basa en si un cliente tiene un contrato para el año X (2021) y no tiene un contrato válido tres años antes.

Lo siento mucho si no pude juntar 2 + 2 con la ayuda de tu blog, pero tal vez podrías empujarme hacia lo correcto. dirección de nuevo.

Salud,

Enno

Amitchandak

En respuesta a enexius

@enexius, prueba una medida como

medida =
var _1 = calcular (min (‘Tabla'[Year]), filter (ALLSELECTED (‘Tabla’), ‘Tabla'[Customer] regreso
if (está en blanco (_1) || _1

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *