Lista de clientes por primera vez

Un usuario Pregunto ✅

klew31

Hola, todos,

Tengo un gráfico de columnas en el que muestro un recuento de nuevos clientes por mes con «mes año» a lo largo del eje x.

Del mismo modo, me gustaría crear una matriz / lista que muestre el nombre de los nuevos clientes en cada mes (en lugar de contar).

A continuación se muestra una imagen de lo que ya tengo.

pbi nuevos usuarios por mes.PNG

Hice una búsqueda en la comunidad, pero no tuve mucha suerte con las palabras clave.

Algun consejo,

Gracias

Rico

TomMartens

En respuesta a klew31

Oye,

sí, se podría hacer, pero es necesario un poco de esfuerzo …

EXCEPTO devuelve una tabla, en lugar de usar esto como el primer argumento de concatenatex almacenar esto en una variable.

Entonces usa algo como esto

CONCATENATEX (
FILTRO (TODOS (‘ ‘)
, ‘ ‘[customer key] IN variable de tabla
)
, concatenar todos los valores de la columna
, separador de nueva línea
)

Ojalá sea esto lo que usted está buscando.

Saludos,
Tomás

En respuesta a klew31

Hola @ klew31,

Intente cambiar la coma a «IN» u otros operadores.

Capture.PNG

La sintaxis de Filter es la siguiente. Necesitamos escribir una expresión booleana para . Puede consultar el documento para obtener más información.

2.PNG

Atentamente,

Xue Ding

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.

TomMartens

Hola @ klew31,

puedes lograr lo que buscas creando una medida como esta:

List of New Customer = 
var theseCustomers = VALUES('Fact Sale'[Customer Key])
var CurrentMinDate = MIN('Dimension Date'[DATE])
var theseCustomerBeforeMinDate = 
    CALCULATETABLE(VALUES('Fact Sale'[Customer Key]),FILTER(ALL('Dimension Date'[Date]),'Dimension Date'[RunningMonthIndex] < CurrentMinDate),ALL('Dimension Date'))
return 
CONCATENATEX(
EXCEPT(theseCustomers,theseCustomerBeforeMinDate )
, 'Fact Sale'[Customer Key]
, " | " 
)

  • La variable estos clientes contiene los clientes actuales
  • se determina la fecha mínima
  • entonces todos los clientes están determinados que compraron algo antes de la fecha mínima
  • los clientes que no están en la «tabla» theseCustomerBeforeMinDate tienen que ser los nuevos clientes, esto se determina utilizando la función excepto
  • CONCATENATEX se usa para crear una cadena donde los nuevos clientes están separados por «|»

Ojalá sea esto lo que usted está buscando. De lo contrario, cree un archivo pbix que contenga datos de muestra, pero que refleje su modelo de datos, cargue el pbix en onedrive o dropbox y comparta el enlace.

Saludos,

Tomás

klew31

En respuesta a TomMartens

Agradezco la respuesta, pero estoy luchando con el DAX proporcionado. Sigo recibiendo errores alrededor del índice del mes.

A continuación se muestra el DAX que estoy tratando de usar después de cambiar algunas de las fórmulas para que coincidan con mis tablas, columna …

List of New Customer = 
var theseCustomers = VALUES(Invoices[Customer])
var CurrentMinDate = MIN(CalendarDate[Date])
var theseCustomerBeforeMinDate = 
    CALCULATETABLE(VALUES(Invoices[Customer]),FILTER(ALL(CalendarDate[Date]),CalendarDate[MonthIndex] < CurrentMinDate),ALL(CalendarDate))
return 
CONCATENATEX(
EXCEPT(theseCustomers,theseCustomerBeforeMinDate )
, Invoices[Customer]
, " | " 
)

El error que veo ahora es alrededor del «índice del mes» …

Todo lo mejor,

Rico

TomMartens

En respuesta a klew31

Oye,
Por favor disculpe.

Simplemente reemplace la referencia a la columna MonthIndex con la columna Fecha de la tabla Calendario.

Saludos,
Tomás

klew31

En respuesta a TomMartens

Hola Tom,

El DAX que proporcionó funcionó como se describe. Cambié el separador que sugirió que fuera un salto de línea y ahora aparece como una lista.

Sin embargo, esto me lleva a mi siguiente pregunta, ¿sería posible usar un DAX similar para poder agregar información adicional? ¿Como el nombre del cliente y el país del cliente?

Probé una nueva columna, que concatenó el nombre del cliente y el país del cliente en la hoja maestra del cliente, y luego lo agregué al DAX que sugirió, pero no me permitirá hacerlo.

¿Alguna idea?

TomMartens

En respuesta a klew31

Oye,

sí, se podría hacer, pero es necesario un poco de esfuerzo …

EXCEPTO devuelve una tabla, en lugar de usar esto como el primer argumento de concatenar x almacenar esto en una variable.

Entonces usa algo como esto

CONCATENATEX (
FILTRO (TODOS (‘ ‘)
, ‘ ‘[customer key] IN variable de tabla
)
, concatenar todos los valores de la columna
, separador de nueva línea
)

Ojalá sea esto lo que usted está buscando.

Saludos,
Tomás

klew31

En respuesta a TomMartens

Hola Tom,

En primer lugar, agradezco tu ayuda con esto. Todavía soy relativamente nuevo en PBI y estoy tratando de aprender todo lo que pueda al respecto, pero claramente esta última pregunta está por encima de mi nivel de habilidad. La primera solución que proporcionó funciona suficientemente por ahora.

Mi intento de su última sugerencia se encuentra a continuación. No conozco DAX lo suficientemente bien como para solucionar el problema con él todavía. Si pudiera ayudar, sería genial, pero lo entendería si no.

power bi 3.PNG

Todo lo mejor,

Rico

En respuesta a klew31

Hola @ klew31,

Intente cambiar la coma a «IN» u otros operadores.

Capture.PNG

La sintaxis de Filter es la siguiente. Necesitamos escribir una expresión booleana para . Puede consultar el documento para obtener más información.

2.PNG

Atentamente,

Xue Ding

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.

klew31

En respuesta a v-xuding-msft

Hola a todos,

Les mando buenos deseos en este momento de Covid-19.

Mis disculpas por la demora en responder en este camino, pero todavía tengo problemas. Creo que he utilizado la función IN correctamente, pero sigo recibiendo un error. Consulte a continuación y ayude si es posible.

power bi 4.PNG

¿Hay algún problema con el número de elementos que intento concatenar?

Gracias

Rico

Amitchandak

En respuesta a klew31

Corregí la fórmula. Pero busque un nuevo enfoque diferente al final

//date getting compared with Month, Moved to Date
List of New Customer = 
var theseCustomers = VALUES(Invoices[Customer])
var CurrentMinDate = MIN(CalendarDate[Date])
var theseCustomerBeforeMinDate = 
    CALCULATETABLE(VALUES(Invoices[Customer]),FILTER(ALL(CalendarDate[Date]),CalendarDate[Date] < CurrentMinDate),ALL(CalendarDate))
return 
CONCATENATEX(
EXCEPT(theseCustomers,theseCustomerBeforeMinDate )
, Invoices[Customer]
, " | " 
)

//calculated month index
List of New Customer = 
var theseCustomers = VALUES(Invoices[Customer])
var CurrentMinDate = mixx(filter(CalendarDate,CalendarDate[Date]<=MIN(CalendarDate[Date])),CalendarDate[MonthIndex])
var theseCustomerBeforeMinDate = 
    CALCULATETABLE(VALUES(Invoices[Customer]),FILTER(ALL(CalendarDate[Date]),CalendarDate[MonthIndex] < CurrentMinDate),ALL(CalendarDate))
return 
CONCATENATEX(
EXCEPT(theseCustomers,theseCustomerBeforeMinDate )
, Invoices[Customer]
, " | " 
)

Nuevo enfoque de columna. En esto encontramos la fecha mínima para ese cliente y le damos un valor uno o identificación de cliente. Ahora puede utilizar este campo para obtener nuevos clientes.

//new column
Is first Purchase = if(Invoices[Invoice date] = minx(filter(Invoices,Invoices[Customer]=earlier(Invoices[Customer])),Invoices[Invoice date]),1,0)

VasTg

@ klew31

Rico, feliz de ayudar. ¿Podrías publicar algunos datos de muestra en lugar de una captura de pantalla?

¿Qué sucedió cuando probó con matrix o table visual?

klew31

En respuesta a VasTg

No estoy seguro de cuál es la mejor manera de compartir los datos. Tendré que encontrar una forma de ocultar algunos de los detalles del cliente …

Mientras tanto, para responder a su otra pregunta … cuando pruebo una matriz, parece que obtengo todos los pedidos del mes. Sé con certeza que algunos de nuestros clientes realizan pedidos todos los meses, generalmente varias veces, pero cuando hago clic en cualquier columna del gráfico para filtrar la lista y ver los «nuevos clientes» de ese mes, aparecerán los clientes habituales junto con el nuevos clientes. Aún más frustrante para mí, es que el mismo cliente aparecerá varias veces en el mismo mes.

Mi recuento por mes de pedidos por primera vez se realiza mediante un cálculo DAX, no estoy seguro de si eso importa. Parece funcionar en el gráfico pero no en una tabla.

Gracias

Deja un comentario

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