Ayuda para encontrar la fecha más temprana

Un usuario Pregunto ✅

hoggwildd

Tengo una base de datos que necesito poder contar solo la primera vez que aparece una fila de datos. A continuación se muestra parte de la base de datos:

Fecha Identificación del cliente Conjunto apto Confirmado emitido senté Resultado Monto en ventas
27/02/2017 5:18:48 p.m. 397500 1 1 0 0 República de China
28/02/2017 9:03:05 p.m. 397500 1 1 1 0 1 pierna
27/02/2017 6:04:14 p.m. 397501 1 1 0 0 CTC
27/02/2017 5:48:22 p.m. 397502 1 1 1 1 3
6/3/2017 7:05:05 p.m. 397502 1 1 0 0 República de China
8/3/2017 2:39:46 p.m. 397502 1 1 0 0 Sin publicar
9/3/2017 10:08:13 a.m. 397502 1 1 1 1 3
27/02/2017 12:57:33 p.m. 397503 1 0 0 0 República de China
2/3/2017 4:09:14 p.m. 397503 1 1 0 0 CNC
27/02/2017 6:00:03 p.m. 397504 1 1 1 0 CTC
14/3/2017 5:14:40 p.m. 397504 1 0 0 0 Verif
27/02/2017 6:15:12 p.m. 397505 1 1 0 0 CTC
27/02/2017 6:01:54 p.m. 397506 1 0 1 0 1 pierna
27/02/2017 1:07:50 p.m. 397507 1 0 1 1 Venta 21170.6
6/3/2017 3:57:19 p.m. 397508 1 1 1 1 Venta 13387
7/3/2017 12:17:35 p.m. 397509 1 1 1 0 CAROLINA DEL NORTE
8/3/2017 9:38:57 a.m. 397509 1 1 1 1 3
18/03/2017 12:12:22 p.m. 397509 1 1 0 0 CTC
27/02/2017 5:55:42 p.m. 397510 1 0 0 0 República de China
6/3/2017 2:24:53 p.m. 397510 1 1 0 0 COC
27/02/2017 2:21:20 p.m. 397511 1 1 0 0 República de China
6/3/2017 2:10:11 p.m. 397511 1 1 1 1 Venta 12887
9/3/2017 4:11:31 p.m. 397511 1 1 1 1 3
27/02/2017 1:26:06 p.m. 397512 1 1 1 0 1 pierna
27/02/2017 1:27:45 p.m. 397513 1 1 0 0 República de China
1/3/2017 5:22:00 p.m. 397513 1 1 1 0 NUEVA HAMPSHIRE
27/02/2017 2:02:50 p.m. 397514 1 1 0 0 República de China
1/3/2017 1:42:26 p.m. 397514 1 1 0 0 COC
28/02/2017 8:01:00 a.m. 397515 1 1 1 1 5

Entonces, si quiero saber cuántos clientes (ID de cliente) nos contactaron en un mes, no querría contar cada vez que hablamos con ellos, solo la primera vez. ID de cliente de IE 397500 con el que hablamos el 27/2 y nuevamente el 28/2. Como es el mismo cliente, solo querría contarlo una vez, para el día 27. ¡Cualquier ayuda, sugerencia o idea es muy apreciada!

HW

Sean

En respuesta a chbraun

@hoggwildd

Si no desea utilizar DAX, puede obtener el mismo resultado en el Editor de consultas utilizando Agrupar por

1) Duplica tu tabla

2) luego Agrupar por – ID de cliente y la nueva columna «Primer contacto» que está creando en función de la fecha MIN para cada ID de cliente

3) Cerrar y aplicar

4) Cree una matriz: arrastre el primer contacto a las filas y la identificación del cliente a los valores.

(cambie a Distinct -aunque los valores ya son distintos porque hicimos el Group BY)

Siga la imagen de abajo …

Editor de consultas - Agrupar por.gif

OPCION 2

De hecho, puede lograr el mismo resultado con una simple columna DAX en su tabla actual

First Contact Column = CALCULATE ( FIRSTNONBLANK('Table'[Date],1), ALLEXCEPT('Table', 'Table'[Customer ID]) )

Entonces crea una matriz SIN EMBARGO

1) use la columna de primer contacto en las filas (mantenga solo el año y el mes de la jerarquía)

2) arrastre la columna de primer contacto nuevamente, pero esta vez a los valores

Y esta vez tienes que cambiar el valor predeterminado más temprano a un recuento distinto

Editor de consultas - Agrupar por ALT.gif

¡Espero que esto ayude! Smiley feliz

¡Hazme saber si tienes alguna pregunta!

Hola @hoggwildd,

Según su descripción, desea obtener el recuento de clientes distintos mensuales, ¿verdad?

Si este es un caso, puede consultar los pasos a continuación para lograr su requisito:

1. Agregue la columna de cálculo «año y mes» para almacenar el valor que solía agrupar.

Year&Month = [Date].[Year]*100+[Date].[MonthNo] 

2. Cree una tabla calculada para mostrar los registros agrupados.

Summary Table = SUMMARIZE(Sheet3,Sheet3[Year&Month],
    "Distinct Count",DISTINCTCOUNT(Sheet3[Customer ID]),
    "Count",COUNT(Sheet3[Customer ID]),
    "Detail Customer(Distinct)",
	CONCATENATEX(DISTINCT(SELECTCOLUMNS(FILTER(ALL(Sheet3),[Year&Month]=EARLIER(Sheet3[Year&Month])),"Custom ID",[Customer ID])),[Custom ID],","))

3. Cree una tabla visual para mostrar el resultado.

Capture.PNG

Saludos,

Xiaoxin Sheng

hoggwildd

En respuesta a v-shex-msft

Gracias a ambos por su consejo, tiempo y ayuda. ¡Me doy cuenta de que esto está muy por encima de mi cabeza! Ahora he pasado casi 3 días en esto y estoy más confundido que cuando comencé. ¡Parece tan simple en mi cabeza! jajaja

Todo este tiempo pensé que también me estaba volviendo bastante bueno en esto. Esto solo me muestra que realmente necesito tomar un curso.

Gracias de nuevo,

HW

chbraun

En respuesta a hoggwildd

Lamento escuchar eso, no te rindas, DAX es una herramienta increíble una vez que lo dominas.

Copié tus datos en un pbix y creé lo que creo que necesitas. Desafortunadamente, no sé cómo puedo compartir ese archivo contigo … ¿Quizás la siguiente captura de pantalla sea suficiente? Muestra el estado de cuenta que necesita para crear una tabla de clientes que contenga las fechas del primer contacto de cada cliente y todos los datos que se encuentran en esa tabla resumida. El gráfico de barras muestra el recuento de clientes por mes; observe que solo muestra 2 para marzo.

La columna DAX para el mes tiene este aspecto:

Mes = MES (Clientes[First contact])

¡Espero que esto ayude!

Salud,

cristiano

resumen tabla.JPG

Sean

En respuesta a chbraun

@hoggwildd

Si no desea utilizar DAX, puede obtener el mismo resultado en el Editor de consultas usando Agrupar por

1) Duplica tu tabla

2) luego Agrupar por – ID de cliente y la nueva columna «Primer contacto» que está creando en función de la fecha MIN para cada ID de cliente

3) Cerrar y aplicar

4) Cree una matriz: arrastre el primer contacto a las filas y la identificación del cliente a los valores.

(cambie a Distinct -aunque los valores ya son distintos porque hicimos el Group BY)

Siga la imagen de abajo …

Editor de consultas - Agrupar por.gif

OPCION 2

De hecho, puede lograr el mismo resultado con una simple columna DAX en su tabla actual

First Contact Column = CALCULATE ( FIRSTNONBLANK('Table'[Date],1), ALLEXCEPT('Table', 'Table'[Customer ID]) )

Entonces crea una matriz SIN EMBARGO

1) use la columna de primer contacto en las filas (mantenga solo el año y el mes de la jerarquía)

2) arrastre la columna de primer contacto nuevamente, pero esta vez a los valores

Y esta vez tienes que cambiar el valor predeterminado más temprano a un recuento distinto

Editor de consultas - Agrupar por ALT.gif

¡Espero que esto ayude! Smiley feliz

¡Hazme saber si tienes alguna pregunta!

hansen922

En respuesta a Sean

La opción 2 me ayudó a despejar el lugar donde estaba tratando de encontrar la fecha original de una lista de registros para un campo en particular. ¡Gracias!

JacksonAndrew

En respuesta a Sean

Muy agradable. Gracias.

un manipulador

En respuesta a Sean

bomb.com

poojik

En respuesta a Sean


Esto es realmente asombroso. Gracias por compartir. ¿Hay alguna manera de encontrar la diferencia entre el último y el primer punto de datos según la fecha de creación?

POWERbi-SAMPLEDATASET.png

chbraun

Si simplemente desea la cantidad de clientes únicos por mes calendario, puede tener una medida como esta:

clientes únicos = DISTINCTCOUNT (CustomerID)

Y luego usa el nombre del mes como contexto en sus visualizaciones; de esa manera, verá clientes únicos para enero, febrero, etc. Para mayor comodidad, agregaría el nombre del mes como columna calculada de su tabla usando la función DAX MES.

Sin embargo, por lo general, en lugar de mirar los meses calendario, las métricas mensuales se basan en una ventana móvil de 28 días, algo como esto:

clientes únicos que se mudan 28 días =
CALCULAR(
[unique customers],
DATESINPERIOD (
‘Fecha'[Date],
LASTDATE (‘Fecha'[Date]),
-28, DÍA
)
)

De esta manera, está normalizando para diferentes duraciones de meses y también obtiene una métrica mensual válida y completa todos los días.

¡Espero que esto ayude!

cristiano

hoggwildd

En respuesta a chbraun

Cristiano,,

Gracias por el tiempo y la respuesta.

Somos una organización de ventas y contactamos a los clientes repetidamente, mes tras mes. Si usamos la cuenta distinta, ¿volvería a contar al mismo cliente el próximo mes (o dentro de 6 meses) la primera vez que los contactamos en ESE mes?

En cuanto al período del mes, a veces miramos trimestres, años, etc. Tengo una línea de tiempo incorporada que nos permite establecer los parámetros como deseamos. El mes no era importante y debería haberlo omitido. Perdón por la confusion.

HW

chbraun

En respuesta a hoggwildd

Sí, lo haría, aunque todo depende del contexto.

Sin contexto, la medida que usa DISTINCTCOUNT contará a cada cliente en su tabla solo una vez. Pero la verdadera magia de DAX es que es sensible al contexto: si proporciona un contexto, la medida se evaluará en ese contexto.

Por ejemplo, si configura un gráfico de barras que muestra los recuentos de clientes por mes (meses en el eje x, medida en el eje y), el contexto es la lista de meses disponibles y la medida se evaluará por mes, es decir, se contarán los clientes. por separado por mes.

¿Tener sentido?

hoggwildd

En respuesta a chbraun

Cristiano,

He estado trabajando con esto y no puedo hacer que funcione. Usando los datos con una medida de recuento distinta, obtengo:

Conjunto apto recuento distinto
1 14
Gran total 14

Eso es usar una línea de tiempo que se divide solo en febrero, y eso es exacto. Pero cuando hago la línea de tiempo en marzo, obtengo:

Conjunto apto recuento distinto
1 9
Gran total 9

que solo debería ser 2.

Los números de identificación de cliente 397508 y 397509 son los únicos dos clientes que se comunicaron con nosotros FIRST en marzo de acuerdo con los datos. Por eso pensé que necesitaba escribir una medida que buscara la primera fecha para cada cliente y luego contara solo esa fila de datos.

La base de datos actual tiene muchas más columnas, una de las cuales sería «fuente» y así sería realmente como queremos configurar la tabla, pero no creo que eso cambie este problema. Te lo digo en caso de que lo creas, si es así, puedo agregar eso a la muestra para darte una mejor idea.

Una vez más, no puedo agradecerles lo suficiente por su tiempo y ayuda. ¡Esto me está pateando el trasero!

HW

chbraun

En respuesta a hoggwildd

Ah, ya veo, entendí mal su requisito: pensé que estaba buscando clientes únicos por mes (o cualquier otro período de tiempo) mientras que en realidad busca nuevos clientes únicos por mes (donde «nuevo» significa primer contacto).

En ese caso, su opción más fácil es usar una tabla de resumen, es decir, haga clic en «Nueva tabla» en la pestaña Modelado y cree una nueva tabla usando este tipo de declaración DAX:

Primer contacto del cliente = SUMMARIZE (Table, CustomerID, «FirstDate», MIN (Date))

Esto le dará una tabla donde cada cliente se empareja con la primera fecha de contacto. Si conoce SQL, la función Resumir es el equivalente en DAX de GROUP BY. Luego, esta tabla se puede cortar como se describió anteriormente.

Ahora, hay otra forma de hacer esto que es un poco más complicada, pero también más poderosa: si desea razonar sobre ambos, la primera cita y los datos de contactos posteriores (por ejemplo, para calcular el promedio tiempo transcurrido entre un primer contacto y un contacto de seguimiento), entonces querrá poner la primera fecha directamente en la tabla que contiene todos los contactos. Puede hacerlo utilizando la función EARLIER: ¡magia DAX realmente poderosa! 🙂

¡Espero que esto ayude!

cristiano

Deja un comentario

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