Power Query combina varios archivos en una carpeta: otro método

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp

Contenidos

Nivel: principiantes

He escrito en un blog antes sobre cómo combinar varios archivos en una carpeta usando Power Query. La forma en que siempre lo he hecho es usar una función, y esto no es difícil de hacer si sigues las instrucciones que proporcioné en mi último blog sobre este tema en PowerPivotPro.com.

Recientemente, tuve un requisito específico en el que necesitaba hacer una verificación de validación rápida sobre algunos archivos CSV para asegurarme de que no faltaran datos. Podría haber pasado 2 minutos escribiendo una función rápida y luego importar todos los archivos, pero se me ocurrió que hay otra forma.

¿Por qué es difícil combinar varios archivos?

Power Query tiene una función incorporada que le permite importar datos desde una carpeta (que se muestra a continuación), entonces, ¿por qué es esto un problema?

image_thumb6-1403539

Bueno, hay 2 razones.

  1. En primer lugar, es común para los archivos que desea combinar. tener una fila de encabezado en cada archivo. Si no fuera por esta fila de encabezado, simplemente podría combinar el contenido de una carpeta en una sola importación y estaría listo (siempre que todos los archivos tengan la misma forma).
  2. El segundo problema es que Power Query solo carga unos pocos miles de filas de datos en la ventana de vista previa. Entonces, a veces ni siquiera puede ver la siguiente fila de encabezado para filtrarla. Todo se ve bien cuando escribe la consulta, pero luego falla al actualizar.

¿Entonces lo que hay que hacer? – bueno, hay un par de trucos que puedes usar

He creado algunos datos de muestra: tengo 3 archivos csv, todos del mismo formato, todos en la misma carpeta. Cada uno de estos archivos de muestra tiene 100.000 filas de datos: ventas durante 1 día en cada archivo. Puede descargar los archivos de muestra aquí si desea utilizarlos para solucionarlo usted mismo.

image_thumb7-8807893

Abro un libro en blanco y selecciono Power QueryFrom FileFrom Folder y navego a la carpeta donde están almacenados mis archivos.

image_thumb8-9385618

Luego selecciono expandir la columna «Contenido» que muestra «Binario» en las filas. image_thumb9-5101541

Como puede ver a continuación, Power Query solo carga alrededor de 1,000 filas (se muestra como 1 a continuación) e indica que la lista de valores puede estar incompleta (se muestra como 2 a continuación). Así que hago clic en cargar más (se muestra como 3 a continuación).

image_thumb10-7062636

Y recibo un mensaje de error. » [DataFormat.Error] No pudimos analizar la entrada proporcionada como un valor de fecha. » El problema es que Power Query cambió automáticamente los tipos de datos de mis columnas por mí en función de las primeras 1,000 filas. Pero mis archivos tienen 100.000 filas de datos y la primera fila del archivo siguiente y los archivos subsiguientes siempre serán otro encabezado. Es este segundo (y los siguientes) encabezados los que causan el error.

image_thumb11-1602758

Entonces, lo siguiente es eliminar * este paso de «Tipo cambiado» haciendo clic en la cruz junto al paso en la ventana Pasos aplicados.

Ahora, cuando hago clic en el botón «cargar más», obtengo una lista completa de valores, incluido el siguiente registro de encabezado. Todo lo que necesito hacer es anular la selección de «fecha» y todos los archivos se cargarán correctamente. En mis datos de muestra, mi fila de encabezado tiene «fecha» como encabezado en esta columna. Podría aplicar este mismo paso en cualquiera de las otras columnas para filtrar la fila del encabezado, pero, por supuesto, tendría que filtrar la palabra «Producto» de la segunda columna o «Cantidad» de la tercera columna.

image_thumb12-1795642

Después de anular la selección de Fecha, debe volver atrás y aplicar manualmente el paso «Tipo cambiado» nuevamente para cambiar los tipos de datos.

* Nota: Si lo prefiere, puede mantener el paso de «tipo cambiado» original y simplemente insertar un paso en el proceso antes de que se cambiaran los tipos de datos; depende de usted.

Pero, ¿qué sucede si tiene muchos archivos grandes que tardan en cargarse?

A veces, los archivos tardan en cargarse en Power Query, especialmente cuando tiene muchos archivos de Excel muy grandes / anchos. Cuando esto sucede, hacer clic en «cargar más» puede ser un proceso bastante lento. Hay un truco alternativo que puede usar en lugar de los pasos que se muestran arriba.

Primero anule la selección de cualquier elemento de la lista. no importa cuál, simplemente haga esto para forzar a Power Query a crear la línea de código que editaré manualmente.

image_thumb13-7459935

Una vez que haya completado el paso anterior, podrá ver el código de lenguaje de fórmulas de Power Query en la barra de fórmulas (que se muestra como 1 a continuación). Si no puede ver la barra de fórmulas, puede activarla seleccionando Ver barra de fórmulas (pasos 2 y 3 a continuación).

image_thumb14-9589739

En mi muestra, el código generado por Power Query es.

= Table.SelectRows(#"Promoted Headers", each ([Date] <>

«15 de agosto»

))

Lo único importante a tener en cuenta es el bit después de «no igual a», es decir, después de «». El último paso entonces es reemplazar el valor «15-Ago» en esta línea de código con el valor que desea excluir; en este caso, es el texto «Fecha» (porque este es el texto en la fila del encabezado que quiero excluir).

= Table.SelectRows(#"Promoted Headers", each ([Date] <>

«Fecha»

))

También es posible utilizar este truco para eliminar entradas nulas de sus datos. Para hacer esto, usaría la palabra clave nulo sin comillas como sigue

= Table.SelectRows(#"Promoted Headers", each ([Date] <> null))

Envolver

Y ahí lo tienes. Un método para combinar rápidamente varios archivos en una carpeta con Power Query sin tener que escribir una función.

Si desea una lección completa sobre cómo usar Power Query, consulte mi curso de capacitación aquí https://exceleratorbi.com.au/power-query-online-training/

!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window,document,’script’,
‘https://connect.facebook.net/en_US/fbevents.js’);
fbq(‘init’, ‘639916389503636’);
fbq(‘track’, ‘PageView’);

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.