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

The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now

Reply
Syndicate_Admin
Administrator
Administrator

Ayuda con la búsqueda de la fecha más temprana

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

FechaID de clienteConjunto aptoConfirmadoEmitidoSentadoResultadoImporte de la venta
2/27/2017 5:18:48 PM3975001100Roc
2/28/2017 9:03:05 PM39750011101Leg
2/27/2017 6:04:14 PM3975011100Ctc
2/27/2017 5:48:22 PM39750211113
3/6/2017 7:05:05 PM3975021100Roc
3/8/2017 2:39:46 PM3975021100Unissued
3/9/2017 10:08:13 AM39750211113
2/27/2017 12:57:33 PM3975031000Roc
3/2/2017 4:09:14 PM3975031100Cnc
2/27/2017 6:00:03 PM3975041110Ctc
3/14/2017 5:14:40 PM3975041000Verif
2/27/2017 6:15:12 PM3975051100Ctc
2/27/2017 6:01:54 PM39750610101Leg
2/27/2017 1:07:50 PM3975071011Venta 21170.6
3/6/2017 3:57:19 PM3975081111Venta 13387
3/7/2017 12:17:35 PM3975091110Nc
3/8/2017 9:38:57 AM39750911113
3/18/2017 12:12:22 PM3975091100Ctc
2/27/2017 5:55:42 PM3975101000Roc
3/6/2017 2:24:53 PM3975101100Coc
2/27/2017 2:21:20 PM3975111100Roc
3/6/2017 2:10:11 PM3975111111Venta 12887
3/9/2017 4:11:31 PM39751111113
2/27/2017 1:26:06 PM39751211101Leg
2/27/2017 1:27:45 PM3975131100Roc
3/1/2017 5:22:00 PM3975131110Nh
2/27/2017 2:02:50 PM3975141100Roc
3/1/2017 1:42:26 PM3975141100Coc
2/28/2017 8:01:00 AM39751511115

Por lo tanto, si quiero saber cuántos clientes (ID de cliente) se puso en contacto con nosotros en un mes no me gustaría contar cada vez que hablamos con ellos, sólo la primera vez. Es decir, el ID de cliente 397500 con el que hablamos el 2/27 y otra vez el 2/28. Ya que es el mismo cliente, sólo quiero contarlo una vez, para el día 27. Cualquier ayuda, sugerencias o ideas son muy apreciados!

Hw

1 ACCEPTED SOLUTION
Sean
Community Champion
Community Champion

@hoggwildd

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

1) Duplica tu mesa

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) Crear una matriz - arrastre Primer contacto a las filas y el ID de cliente a los valores

(cambiar a Distinct -aunque los valores ya son distintos porque hicimos el Grupo BY)

Siga la imagen de abajo...

Query Editor - Group By.gif

OPCIÓN 2

En realidad, puede lograr el mismo resultado con una columna DAX simple en su tabla actual

Columna de primer contacto: CALCULATE ( FIRSTNONBLANK('Table'[Date],1), ALLEXCEPT('Table', 'Table'[Customer ID]) )

A continuación, cree una matriz SIN EMBARGO

1) utilizar la primera columna de contacto en las filas (mantener sólo año y mes de la jerarquía)

2) arrastre la primera columna de contacto de nuevo, pero esta vez a los valores

Y esta vez tienes que cambiar el valor por defecto primero a un recuento distinto

Query Editor - Group By ALT.gif

¡Espero que esto ayude! Smiley Happy

¡Avísame si tienes alguna pregunta!

View solution in original post

13 REPLIES 13
v-shex-msft
Community Support
Community Support

Hola @hoggwildd,

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

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

1. Agregue calcular la columna "año y mes" para almacenar el valor que se utilizó para agrupar.

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

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

Tabla de resumen: RESUMEN(Sheet3,Sheet3[Año y mes],
    "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 un objeto visual de tabla para mostrar el resultado.

Capture.PNG

saludos

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

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 empecé. ¡Parece tan simple en mi cabeza! lol

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

Gracias de nuevo,

Hw

Lamento escuchar eso - no te rindas, DAX es una herramienta impresionante una vez que te des cuenta!

He copiado sus datos en un pbix y creé lo que creo que necesita. Por desgracia, no sé cómo puedo compartir ese archivo con usted ... ¿Quizás la siguiente captura de pantalla sea suficiente? Muestra el extracto que necesita para crear una tabla de clientes que contiene fechas para el primer contacto para cada cliente y todos los datos que se encuentran en esa tabla resumida. El gráfico de barras muestra los recuentos de clientes por mes: tenga en cuenta cómo solo muestra 2 para marzo.

La columna DAX para el mes tiene este aspecto:

Mes - MES(Clientes[Primer contacto])

¡Espero que esto ayude!

Salud

Cristiano

summarize table.JPG

Sean
Community Champion
Community Champion

@hoggwildd

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

1) Duplica tu mesa

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) Crear una matriz - arrastre Primer contacto a las filas y el ID de cliente a los valores

(cambiar a Distinct -aunque los valores ya son distintos porque hicimos el Grupo BY)

Siga la imagen de abajo...

Query Editor - Group By.gif

OPCIÓN 2

En realidad, puede lograr el mismo resultado con una columna DAX simple en su tabla actual

Columna de primer contacto: CALCULATE ( FIRSTNONBLANK('Table'[Date],1), ALLEXCEPT('Table', 'Table'[Customer ID]) )

A continuación, cree una matriz SIN EMBARGO

1) utilizar la primera columna de contacto en las filas (mantener sólo año y mes de la jerarquía)

2) arrastre la primera columna de contacto de nuevo, pero esta vez a los valores

Y esta vez tienes que cambiar el valor por defecto primero a un recuento distinto

Query Editor - Group By ALT.gif

¡Espero que esto ayude! Smiley Happy

¡Avísame si tienes alguna pregunta!

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

Muy bonito. Gracias.

Anonymous
Not applicable

bomb.com


Esto es realmente increíble. Gracias por compartir. ¿Hay alguna manera de encontrar la diferencia entre el último y el primer punto de datos en función de la fecha creada?

POWERbi-SAMPLEDATASET.png

chbraun
Helper I
Helper I

Si simplemente desea el número de clientes únicos por mes calendario, puede tener una medida como esta:

clientes únicos: DISTINCTCOUNT(CustomerID)

Y luego usas el nombre del mes como contexto en tus visualizaciones - de esa manera, verás clientes unqiue para enero, febrero, etc. Para mayor comodidad, agregaría el nombre del mes como columna calculada de la tabla utilizando la función DAX MONTH.

Normalmente, sin embargo, 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 mueven 28 días
CALCULATE(
[clientes únicos],
FECHASINPERIOD(
'Fecha'[Fecha],
LASTDATE( 'Fecha'[Fecha]),
-28, DÍA
)
)

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

¡Espero que esto ayude!

Cristiano

Cristiano

Gracias por el tiempo y la respuesta

Somos una organización de ventas y nos ponemos en contacto con los clientes repetidamente, mes tras mes. Si usamos el distintocount sería contar el mismo cliente el próximo mes (o 6 meses a partir de ahora) de nuevo la primera vez que nos contactamos con ellos en ese mes?

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

Hw

Sí, sin embargo, todo depende del contexto.

Sin contexto, la medida que usa DISTINCTCOUNT contará todos los clientes de la tabla una sola 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 eje X, medida en el eje Y), el contexto es la lista de meses disponibles y la medida se evaluará por mes, es decir, los clientes se cuentan por separado al mes.

¿Tiene sentido?

Cristiano

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

Conjunto aptoconteo distinto
114
Gran Total14

Eso es usar un corte de línea de tiempo sólo a febrero, y eso es preciso. Pero cuando hago la línea de tiempo marzo que obtengo:

Conjunto aptoconteo distinto
19
Gran Total9

que sólo debería ser 2.

El ID de cliente 397508 y 397509 son los únicos dos clientes que PRIMERO se puso en contacto con nosotros en marzo de acuerdo con los datos. Es por eso que 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 real tiene muchas más columnas, una de las cuales sería "fuente" y eso sería realmente cómo queremos configurar la tabla, pero no creo que eso va a cambiar este problema. Te lo digo en caso de que creas que lo haría, si es así puedo añadir eso a la muestra para darte una mejor idea.

Una vez más no puedo agradecerle lo suficiente por su tiempo y asistencia. ¡Esto me está dando una paliza!

Hw

Ah, ya veo - He entendido mal su requisito: Pensé que estaba buscando clientes únicos por mes (o cualquier otro período de tiempo) mientras que en realidad está buscando nuevos clientes únicos por mes (donde "nuevo" significa primer contacto).

En ese caso, su opción más fácil es utilizar una tabla Resumir, es decir, haga clic en "Nueva tabla" en la pestaña Modelado y crear una nueva tabla utilizando este tipo de instrucció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 Summarize es el equivalente DAX de GROUP BY. A continuación, esta tabla se puede segmentar como se describió anteriormente.

Ahora, hay otra manera de hacer esto que es un poco más complicado, pero también más potente: si quieres razonar sobre ambos, la primera fecha, así como los datos de contactos posteriores (por ejemplo, con el fin de averiguar el tiempo promedio transcurrido entre un primer contacto y un contacto de seguimiento) entonces usted querría poner la primera fecha a la derecha en la tabla que contiene todos los contactos. Usted puede hacer eso mediante el uso de la función EARLIER - magia DAX realmente potente! 🙂

¡Espero que esto ayude!

Cristiano

Helpful resources

Announcements
Fabric Community Conference

Microsoft Fabric Community Conference

Join us at our first-ever Microsoft Fabric Community Conference, March 26-28, 2024 in Las Vegas with 100+ sessions by community experts and Microsoft engineering.

February 2024 Update Carousel

Power BI Monthly Update - February 2024

Check out the February 2024 Power BI update to learn about new features.

Fabric Career Hub

Microsoft Fabric Career Hub

Explore career paths and learn resources in Fabric.

Fabric Partner Community

Microsoft Fabric Partner Community

Engage with the Fabric engineering team, hear of product updates, business opportunities, and resources in the Fabric Partner Community.

Top Solution Authors