Se necesita ayuda: Eliminar duplicados – mantener los datos más recientes

Un usuario Pregunto ✅

IPGeorgiev

Hola a todos,

Tengo el siguiente problema:

Tengo una carpeta donde se cargan archivos de Excel con datos sin procesar. Cada archivo tiene datos que se incluyen también en los otros archivos. Así funciona:

FileNumberOne29.03.2020 – tiene datos para el período 24.03 – 28.03

FileNumberOne30.03.2020 – tiene datos para el período 25.03 – 29.03

y así…

Aquí una instantánea con datos ficticios para ilustrar cómo se ve:

El primer archivo tiene:

imagen.png

El segundo archivo tiene:

imagen.png

Cuando, en PowerQuery, selecciono las columnas en amarillo (todas a la vez) y luego hago clic en Eliminar duplicados y hago clic en cerrar y aplicar, obtendré el siguiente resultado:

imagen.png

Todo bien aquí. Actualización del valor de retroalimentación positiva a 2 desde 1 para las primeras 2 filas desde el 28.03. SIN EMBARGO, la fila en naranja formaba parte del archivo de 28.3, pero no en el archivo de 29.3. Por lo tanto, esta fila es única y se está agregando, sin embargo, lo que necesito es asegurarme de que si una fila tiene un duplicado basado en las columnas en amarillo, debe eliminarse y conservar solo los datos más recientes.

Si una fila está presente en una versión anterior, pero no en la más nueva, debe eliminarse (en este caso, la fila naranja), ¡por favor ayúdenme!

¡Gracias!

Atentamente,
Iván

ImkeF

En respuesta a IPGeorgiev

Hola @IPGeorgiev

por favor revise el archivo adjunto.

He falsificado la experiencia «desde la carpeta» para poder usar la técnica de combinación de binarios.

Primero extraje el contenido del archivo más nuevo y luego filtré el primer archivo de la tabla de carpetas antes de expandir su columna «Contenido». Eso generó todas las demás consultas que ves en el archivo.

greg_deckler

Por lo tanto, parece que primero debe ordenar los datos y luego eliminar los duplicados. Me parece recordar que se necesita un paso Table.Buffer para que la clasificación se «pegue». @ImkeF y @edhans probablemente puedan ser más específicos.

ImkeF

En respuesta a greg_deckler

Hola @IPGeorgiev

No estoy seguro de entender completamente su solicitud, pero anule la selección de la columna Fecha de las columnas amarillas y verifique si eso ofrece lo que desea.

Si no, explique exactamente lo que quiere decir con su última oración. «Si una fila está presente en una versión anterior, pero no en la más nueva, debe eliminarse (en este caso, la fila naranja)… » Si ese es el caso, solo tienes que mantener la fecha más reciente.

Si tiene que ordenar sus datos antes de eliminar duplicados, asegúrese de usar un búfer para estar seguro: https://community.powerbi.com/t5/Community-Blog/Bug-warning-for-Table-Sort- y-eliminando-duplicados-i…

IPGeorgiev

En respuesta a ImkeF

Hola @ImkeF,

Realmente aprecio su apoyo en este! ¡muchas gracias!

1. Lo he intentado con la fecha y la hora: eliminarlo empeora las cosas.

«Si una fila está presente en una versión anterior, pero no en la más nueva, debe eliminarse (en este caso, la fila naranja)… » – Me refiero a lo siguiente:

Como fuente de datos, he seleccionado una «CARPETA» en esta carpeta. Los archivos con datos sin procesar se cargan diariamente; cada archivo tiene datos continuos de 7 días, lo que significa que los datos de los 6 días anteriores deben sobrescribirse y los datos completamente nuevos son para el anterior. solo dia SIN EMBARGO, también puede haber cambios durante los últimos 6 días, por eso, cuando se carga un nuevo archivo en la carpeta, necesitamos obtener los datos del nuevo archivo y sobrescribir completamente los datos de los últimos 6 días antes del día anterior:

Por ejemplo:

En el archivo llamado – RAW1 – tenemos datos para 25.03 – 31.03 – archivo cargado en la carpeta el 01.04

En el archivo llamado – RAW2 – tenemos datos del 26.03 al 01.04 – archivo subido en la carpeta el 02.04

En el archivo llamado – RAW3 – tenemos datos para 27.03 – 02.04 – archivo cargado en la carpeta el 03.04

Entonces, en este caso, los datos para 25.03 permanecerán desde RAW1

Los datos del 26.03 permanecerán en el archivo RAW2.

Los datos para el período 27.03-02.04 permanecerán desde RAW3

y así..

No, en mi caso tengo una fila en uno de los archivos para una fecha específica que al recibir el archivo más nuevo ya no está y así permanece ya que no tiene duplicado (la fila naranja en mi primer ejemplo).

¿Hay alguna manera de lograr lo que estoy buscando?

¡Gracias!

Atentamente,
Iván

ImkeF

En respuesta a IPGeorgiev

Lo siento @IPGeorgiev

pero esto ahora me queda claro.

Publique datos de muestra antes y después que coincidan exactamente con lo que busca y que contengan todos los casos relevantes.

Asegúrese de seguir estas pautas: https://community.powerbi.com/t5/Community-Blog/How-to-provide-sample-data-in-the-Power-BI-Forum/ba-…

IPGeorgiev

En respuesta a ImkeF

Hola @ImkeF,

muchas gracias por tu tiempo!

Los datos a continuación son un ejemplo: no son datos reales, ya que los reales son confidenciales; sin embargo, estos datos representan completamente el problema:

Entonces, los datos se cargan en formato .xlsx en una carpeta llamada Test/DailyQuality

el informe de Power BI obtiene datos de esta carpeta.

El 31.03.2020 se sube el archivo con datos hasta el 30.03.2020. Aquí fingiremos que tenemos datos de solo 1 empleado, cuando en realidad hay cientos de empleados. El la hoja se llama 31.03.2020

Luego, al día siguiente (01.04.2020) cargamos también el archivo más reciente con datos hasta el 31.03.2020 – Ficha denominada 01.04.2020.

Al marcar algunas de las columnas (Aquellas en Amarillo en la publicación anterior) y hago clic en eliminar duplicados termino con el resultado en la hoja «Salida actual»

Donde está la salida deseada en la hoja DesiredOutput

Enlace al archivo: https://drive.google.com/file/d/1413E47UNahdpLaPLa7fCdPvopp-zB7Cb/view?usp=sharing

¡¡Muchas gracias de antemano!!

Atentamente,

Iván

ImkeF

En respuesta a IPGeorgiev

Gracias, creo que ahora entiendo.

Antes de expandir el contenido del archivo, «dividiría la tabla de carpetas de origen»:

1) Anule la selección del archivo más reciente y seleccione solo aquellas filas donde la Fecha.Desde([Upload Date]) – Fecha de([Time Date]) = #duración(7,0,0,0).

AComo alternativa, podría determinar la fecha más antigua de cada archivo y mantener solo esas filas.

2) Agregar 1 al contenido completo del último archivo. Con este método, no debería tener que eliminar duplicados en absoluto, si mi entendimiento es correcto.

IPGeorgiev

En respuesta a ImkeF

Hola @ImkeF,

Muchas muchas gracias por el apoyo! ¡Resolver este problema realmente significaría mucho para mí!

Sé que esta puede ser una pregunta tonta, pero sería posible ser más específico sobre cómo ejecutar esos dos pasos, me temo que mi conocimiento no me permite hacerlo. 😞

Antes de expandir el contenido del archivo, tengo las siguientes columnas: Contenido, Fuente. Nombre, Extensión, Fecha de acceso, Fecha de modificación, Fecha de creación, Atributos, Ruta de la carpeta, Archivo de transformación, Archivo de transformación (2)

¡Muchas gracias de antemano!

PD

AComo alternativa, podría determinar la fecha más antigua de cada archivo y mantener solo esas filas.

¿Es posible mantener solo la fecha más antigua de todos los archivos, pero la última (última creación)? Esto también seguramente resolverá este problema.

¡Muchas gracias, realmente aprecio su tiempo y apoyo!

Mejor Saludos,

Iván

ImkeF

En respuesta a IPGeorgiev

Hola @IPGeorgiev

por favor revise el archivo adjunto.

He falsificado la experiencia «desde la carpeta» para poder usar la técnica de combinación de binarios.

Primero extraje el contenido del archivo más nuevo y luego filtré el primer archivo de la tabla de carpetas antes de expandir su columna «Contenido». Eso generó todas las demás consultas que ves en el archivo.

IPGeorgiev

En respuesta a ImkeF

Hola @ImkeF,

muchas gracias por la respuesta y el archivo de muestra! ¡Lo aprecio!

He intentado reproducirlo con el siguiente código:

imagen.png

Sin embargo, luego me sale esto:

imagen.png

Definitivamente estoy haciendo algo mal, sin embargo no puedo resolverlo. 😞

¡Muchas gracias!

Atentamente,

Iván

ImkeF

En respuesta a IPGeorgiev

Hola @IPGeorgiev,

parece que tiene un archivo que no es csv en su carpeta.

Tal vez tenga que filtrar en filtype = «csv» justo al principio. Luego, asegúrese de que este sea el paso de referencia en lugar de «FakeFromFolder».

IPGeorgiev

En respuesta a ImkeF

Hola @ImkeF,

muchas gracias por la respuesta rapida!

Sí, todos los archivos (los datos sin procesar) están en formato xlsx. He convertido los archivos a .csv y la vista previa es correcta, sin embargo, tengo nuevos problemas 😞 :

1. Error OLE DB u ODBC: [Expression.Error] La clave no coincidía con ninguna fila de la tabla. Investigué un poco sobre la nueva y encontré varias razones por las que podría ocurrir este error.

2.Error OLE DB u ODBC: [DataFormat.Error] La tabla externa no está en el formato esperado. – Aquí he intentado arreglar el formato de cada columna para cumplir con los datos reales debajo de la columna. Verifiqué los archivos de origen y no encontré ningún valor inusual.

En general, ¿es posible usar el mismo enfoque pero usar los archivos xlsx en su lugar y no convertirlos a csv?

¡Muchas gracias!

Atentamente,
Iván

ImkeF

En respuesta a IPGeorgiev

Hola @IPGeorgiev

No veo ninguna razón por la que esto no debería funcionar con el archivo xlsx.

Sugeriría comenzar de nuevo desde cero: importe sus archivos xlsx de la carpeta y verifique si todos los datos ingresan correctamente antes de aplicar más transformaciones.

IPGeorgiev

En respuesta a ImkeF

Hola @ImkeF,

Lo intentaré; sin embargo, ¿puede aconsejarme cómo debo modificar el código para que funcione con archivos xlsx?

Y especialmente esta fila:

GetContentFromFirstFile = Csv.Document(GetFirstFile,[Delimiter=»,», Columns=20, Encoding=1252, QuoteStyle=QuoteStyle.None]),

¡¡Muchas gracias!!

Atentamente,
Iván

ImkeF

En respuesta a IPGeorgiev

Hola @IPGeorgiev,

si comienza desde cero y usa los binarios combinados, las fórmulas coincidentes para xlsx se deben aplicar automáticamente.

Si encuentro el tiempo, crearé un video el fin de semana que describa y explique todos los pasos para su ejemplo.

IPGeorgiev

En respuesta a ImkeF

Hola @ImkeF,

¡Muchas gracias! ¡Un video sería genial!

He intentado reproducir todo el proceso y obtuve este código:

imagen.png

y también otra versión:

imagen.png

Sin embargo, supongo que algo está mal aquí, ya que esto no da el resultado deseado: básicamente elimina el archivo más nuevo y mantiene el resto con valores duplicados. 😞

Creo que mi error está en la primera fila y aparentemente haciendo esto:

Fecha de([Upload Date]) – Fecha de([Time Date]) = #duración(7,0,0,0).

¡¡¡Gracias por adelantado!!!

Atentamente,
Iván

IPGeorgiev

En respuesta a IPGeorgiev

Hola @ImkeF,

Estuve probando las últimas 2 horas y finalmente logré adaptarlo y ahora FUNCIONA!!!!!!

¡MILLONES DE GRACIAS por el apoyo! ¡¡Realmente lo valoro mucho!!

Atentamente,
Iván

ImkeF

En respuesta a IPGeorgiev

Hola Iván,
¡Eso es genial! muy contento de escuchar 🙂

Deja un comentario

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