Nicolas_Schonau
¡Hola a todos!
Tengo un problema con mi conjunto de datos actual, he estado buscando en el foro pero no puedo encontrar algo similar a mi situación (si esto ya existe, ¡perdón por la publicación doble!), Así que aquí está:
En mi base de datos tengo, para cada cliente, la fecha de inicio de la actividad que ha adquirido. El conjunto de datos (simplificado aquí) contiene la identificación del cliente (A, B, C, …) en mi primera columna, y en la segunda columna la fecha de inicio, por ejemplo:
Cliente | Iniciar actividad |
A | 2018-07-30 00:00:00 |
B | 2018-08-06 00:00:00 |
C | 2018-07-23 00:00:00 |
A | 2019-07-08 00:00:00 |
C | 2019-07-15 00:00:00 |
D | 2019-07-22 00:00:00 |
Me gustaría poder calcular automáticamente la tasa de retención de mis clientes por año, es decir, saber que de mis tres clientes de 2019 (A, C, D), dos (A, C) ya compraron algunas actividades en 2018. Quizás es realmente fácil, pero honestamente, estoy un poco atascado en esto ahora mismo. ¡Gracias de antemano por tu ayuda!
Nicolas_Schonau
En respuesta a Nicolas_Schonau
Hola a todos,
Finalmente logré encontrar una solución aquí. Para que conste, así es como lo hice:
Primero, cree una nueva tabla de fecha Dim con la primera columna siendo:
Dim date = CALENDAR(MIN(Sheet2[Start activity]);MAX(Sheet2[Start activity]))
Y una segunda columna para calcular el año:
Year = YEAR('Dim date'[Date])
No olvide marcar la tabla como una tabla de fechas y vincularla a la tabla principal.
En segundo lugar, cree estas medidas en la tabla principal:
Customers = DISTINCTCOUNT ( Sheet2[Client] ) New Customers = COUNTROWS ( FILTER ( ADDCOLUMNS ( VALUES ( Sheet2[Client] ); "PreviousSales"; CALCULATE ( COUNTROWS ( Sheet2 ); FILTER ( ALL ( 'Dim date' ); 'Dim date'[Date] < MIN ( 'Dim date'[Date] ) ) ) ); [PreviousSales] = 0 ) ) Returning Customers = COUNTROWS ( CALCULATETABLE ( VALUES ( Sheet2[Client] ); VALUES ( Sheet2[Client] ); FILTER ( ALL ( 'Dim date' ); 'Dim date'[Date] < MIN ( 'Dim date'[Date] ) ) ) ) Customers Last Year = CALCULATE ( DISTINCTCOUNT ( Sheet2[Client] ); FILTER ( ALLSELECTED ( 'Dim date' ); 'Dim date'[Year] = SELECTEDVALUE ( 'Dim date'[Year] ) - 1 ) ) retention rate = [Returning Customers] / [Customers Last Year]
Esto le dará la siguiente matriz:
Nicolás
v-yulgu-msft
Hola @Nicolas_Schonau,
Nueva tabla de dimensión de fecha que está vinculada a la tabla de origen (‘Hoja2’ en mi prueba) basada en [Date] campo.
Dim date = CALENDAR(MIN(Sheet2[Start activity]),MAX(Sheet2[Start activity]))
Cree medidas similares a las que se muestran a continuación.
countclient TY = DISTINCTCOUNT(Sheet2[Client])
countclient LY = CALCULATE ( DISTINCTCOUNT ( Sheet2[Client] ), FILTER ( ALLSELECTED ( 'Dim date' ), 'Dim date'[Date].[Year] = SELECTEDVALUE ( 'Dim date'[Date].[Year] ) - 1 ) ) is purchased LY = CALCULATE ( COUNT ( Sheet2[Client] ), FILTER ( ALLSELECTED ( Sheet2 ), YEAR ( Sheet2[Start activity] ) = YEAR ( SELECTEDVALUE ( 'Dim date'[Date] ) ) - 1 && Sheet2[Client] = SELECTEDVALUE ( Sheet2[Client] ) ) ) retention client = COUNTROWS ( FILTER ( ALLSELECTED ( Sheet2[Start activity] ), [is purchased LY] >= 1 ) ) retention rate = [retention client]/[countclient LY]
Atentamente,
Yuliana Gu
Nicolas_Schonau
En respuesta a v-yulgu-msft
Hola @ v-yulgu-msft,
Gracias por su respuesta.
He podido crear la nueva tabla ‘Dim date’, y la primera medida cuenta el cliente TY, pero no la segunda, el contador LY. Esto me da una medida vacía. Creo que el problema proviene del hecho de que en la fórmula, Power Bi no me permite insertar el
.[Year]
Si lo uso, obtengo un error, y si no lo hago, obtengo una medida vacía. Esto me bloquea por el resto de las medidas.
¿Podría ser algún tipo de problema relacionado con el formato? ¿Recibiste esto también?
Gracias de antemano por su respuesta.
Atentamente,
Nicolás
v-yulgu-msft
En respuesta a Nicolas_Schonau
Hola @Nicolas_Schonau,
Modifique la fórmula a continuación para realizar una prueba.
countclient LY = CALCULATE ( DISTINCTCOUNT ( Sheet2[Client] ), FILTER ( ALLSELECTED ( 'Dim date' ), YEAR('Dim date'[Date]) = YEAR(SELECTEDVALUE ( 'Dim date'[Date])) - 1 ) )
Saludos,
Yuliana Gu
Nicolas_Schonau
En respuesta a v-yulgu-msft
Hola @ v-yulgu-msft,
Probé su nueva solución pero no pude obtener los resultados correctos.
He subido el archivo .pbix de prueba que utilizo para este ejemplo, ¿sería tan amable de echarle un vistazo rápido y ver qué hay de malo en lo que estoy haciendo?
https: //nschonau-my.sharepoint.com/: u: / g / personal / nschonau_nschonau_onmicrosoft_com / EbMUd2jPnEdIox6s …
Una vez más, muchas gracias de antemano.
Nicolás
Nicolas_Schonau
En respuesta a Nicolas_Schonau
Hola @ v-yulgu-msft,
Solo quería saber si tuvo la oportunidad de echar un vistazo al conjunto de datos.
Lo he intentado de nuevo con algunas modificaciones, pero todavía no funciona.
Muchas gracias de antemano.
Atentamente,
Nicolás
Nicolas_Schonau
En respuesta a Nicolas_Schonau
Hola a todos,
Finalmente logré encontrar una solución aquí. Para que conste, así es como lo hice:
Primero, cree una nueva tabla de fecha Dim con la primera columna siendo:
Dim date = CALENDAR(MIN(Sheet2[Start activity]);MAX(Sheet2[Start activity]))
Y una segunda columna para calcular el año:
Year = YEAR('Dim date'[Date])
No olvide marcar la tabla como una tabla de fechas y vincularla a la tabla principal.
En segundo lugar, cree estas medidas en la tabla principal:
Customers = DISTINCTCOUNT ( Sheet2[Client] ) New Customers = COUNTROWS ( FILTER ( ADDCOLUMNS ( VALUES ( Sheet2[Client] ); "PreviousSales"; CALCULATE ( COUNTROWS ( Sheet2 ); FILTER ( ALL ( 'Dim date' ); 'Dim date'[Date] < MIN ( 'Dim date'[Date] ) ) ) ); [PreviousSales] = 0 ) ) Returning Customers = COUNTROWS ( CALCULATETABLE ( VALUES ( Sheet2[Client] ); VALUES ( Sheet2[Client] ); FILTER ( ALL ( 'Dim date' ); 'Dim date'[Date] < MIN ( 'Dim date'[Date] ) ) ) ) Customers Last Year = CALCULATE ( DISTINCTCOUNT ( Sheet2[Client] ); FILTER ( ALLSELECTED ( 'Dim date' ); 'Dim date'[Year] = SELECTEDVALUE ( 'Dim date'[Year] ) - 1 ) ) retention rate = [Returning Customers] / [Customers Last Year]
Esto le dará la siguiente matriz:
Nicolás