Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
¡Hola, chicos!
Necesito ayuda para resolver un problema en PowerBI/Powerquery. Necesito limpiar los datos y no puedo trabajar directamente en el origen de datos, por lo que debe hacerse con Powerquery. Básicamente tengo varios intervalos de tiempo que se superponen y me gustaría reemplazar la fecha de inicio / fecha de finalización para que dejen de superponerse.
Aquí hay una versión simplificada de mi conjunto de datos:
tipo de pertenencia de ID de usuario fecha de finalización de la fecha de inicio
1 1 02/01/2020 03/01/2020
1 2 02/20/2020 03/20/2020
2 3 02/05/2020 02/05/2021
3 2 etc.
Los usuarios tienen una membresía para un período determinado (fecha de inicio, fecha de finalización), hay varios tipos de membresías identificables por su tipo (1,2 o 3). Cada vez que se crea una pertenencia, se agrega una línea en la base de datos. En teoría, un usuario solo puede tener una pertenencia a la vez, pero esto no es lo que está sucediendo en la base de datos. Por ejemplo, en el ejemplo anterior cuando el usuario 1 compró una pertenencia de tipo 2 que ya estaba bajo una pertenencia 1, la base de datos creó una nueva línea. Como resultado en la base de datos leemos que entre el 20/02/2020 (fecha de inicio de la membresía 2) y el 03/01/2020 (fecha de finalización de la membresía 1), el usuario 1 tiene dos membresías (un tipo 1 y un tipo 2), pero en realidad esto no es lo que sucede, el nuevo toma el lugar del anterior y necesito que aparezca también en la base de datos. Por lo tanto, necesito limpiar los datos para tener la unicidad 1 usuario 1 membresía a la vez.
Veo dos opciones para lograr eso (tal vez hay más si los ves por favor no dudes en compartir!) :
1/ encontrar una manera con PowerQuery para identificar estos duplicados y reemplazar las fechas para que los intervalos de las membresías para un usuario dado nunca se solapen (en el ejemplo la fecha de finalización de la membresía 1 se convertiría en 19/02/2020 - un día antes del día de inicio de la membresía 2) --> No tengo ni idea de cómo lograrlo, que sería la mejor solución en mi opinión
2/ ya que en su mayoría son cambios ascendentes en los tipos de pertenencia (de la pertenencia 1 a 2 a 3 pero no 3 a 2 o 1), intenté crear una nueva columna que encontrara el valor máximo por usuario (creando una nueva tabla agrupada por ID de usuario con el valor máximo en el tipo de pertenencia) PERO no era dinámica en PowerBI. De hecho, utilizo un filtro de fecha basado en las columnas de fecha de inicio y fecha de finalización y el valor máximo creado no se adaptó a este filtro.
¿Alguien tiene una solución para limpiar los datos y tener una membresía unicity 1 usuario 1 en el momento T (fecha de inicio<T<fecha de finalización)?
Si necesita alguna precisión no dude en preguntar me doy cuenta de que el problema puede no estar bien descrito!
¡¡¡Muchas gracias!!!
Leah
@LéaGr , compruebe si este archivo puede ayudar a
https://www.dropbox.com/s/1mlq21o1xjuw8il/overlappingdates.pbix?dl=0
Hola @amitchandak ,
Muchas gracias por la respuesta.
Me ayuda a identificar las superposiciones, pero todavía no sé cómo limpiarlas. ¿Conoce una forma de reemplazar la fecha de finalización de un evento en conflicto con otra por la fecha de inicio de este otro evento, por ejemplo?
Muchas gracias
Mejor
Leah
Hola @amitchandak ,
Gracias por su respuesta! Sí, es porque me permite identificar claramente los solapamientos, pero ahora tendría que "limpiar" estos solapamientos reemplazando las fechas en que hay un conflicto. Tendría que ser capaz de reemplazar automáticamente la fecha de finalización del evento más antiguo por la fecha de inicio menos un día del otro evento. ¿Sabes cómo lograrlo?
¡Muchas gracias!
Mejor
Leah