Hola de nuevo a todos. He estado utilizando mucho Power Query últimamente y me tope con buenas cosas en él. En este caso, construí un modelo para un cierre de mes de uno de mis clientes, mismo que utiliza información de más de dos millones de registros de forma mensual para presentar su información. El caso es que una vez construido el modelo con la ayuda de Power Pivot me tope con el inconveniente de cómo hacer esto fácil para el cliente, y he aquí la solución.
Importando el TXT
Mi archivo para utilizar tenía ciertas modificaciones pendientes a realizar ya que no se podía importar de manera correcta, tuve que usar una macro anterior a este paso para hacer algunos arreglos (misma que les comparto en otro post).
Este paso es uno de los mas conocidos de todos, iremos a la ficha Datos de la cinta de opciones e iniciaremos la importación con la ayuda del editor de Power Query.
Una vez dentro, iremos a la herramienta “nuevo origen” en la pestaña Inicio y seleccionaremos “desde un TXT/CSV” y seleccionaremos nuestro TXT a utilizar como base del Query.
Haremos todos los pasos pertinentes para dejar nuestro TXT como queremos que salga en el resultado final y una vez listo, iremos a la pestaña inicio y seleccionaremos “cerrar y cargar”.
Si no queremos cargar toda la tabla, también tendremos la opción de seleccionar la opción “cerrar y cargar en” y agregarla como una tabla dinámica, grafico dinámico o simplemente generar la conexión para usarla más adelante.
Hacer la disposición del archivo cambiante.
Ahora aquí lo interesante. Una vez de regreso en las hojas de calculo de Excel, crearemos una tabla en la cual pondremos:
- El nombre del archivo a usar.
- La ruta (path) del archivo donde se encuentra almacenado.
- La función CONCAT para que genere una dirección concreta al archivo.
=CONCAT(ruta, “»\»,archivo) o =ruta&»\»&archivo
La tabla queda como la que sigue.
Le daremos formato de tabla con la opción “dar formato como tabla” en la ficha Inicio y le cambiaremos el nombre a uno que recordemos (en mi caso fue “PATH_TO_FILE” porque soy bilingüe jajaja).
Ahora, regresaremos a Power Query y nos dispondremos a modificar el Query en la opción “Editor Avanzado”.
Una vez dentro del editor Avanzado, es posible que veamos algo como esto:
let
Origen = Table.FromColumns({Lines.FromBinary(File.Contents(“C:\Users…”), null, null, 1252)}),
#»Dividir columna por delimitador» = Table.SplitColumn…,
in
#»Dividir columna por delimitador»
La modificación que haremos será agregar una variable que tome el valor CONCAT de la tabla para así hacer una ruta móvil, quedando como sigue:
let
PathtoFile = Excel.CurrentWorkbook(){[Name=»PATH_TO_FILE»]}[Content]{0}[CONCAT],
Origen = Table.FromColumns({Lines.FromBinary(File.Contents(PathtoFile), null, null, 1252)}),
#»Dividir columna por delimitador» = Table.SplitColumn…,
in
#»Dividir columna por delimitador»
Nota como la variable PathtoFile usa la tabla “PATH_TO_FILE” del libro actual con la fila {0} (ósea la 1) y la columna [CONCAT] que es precisamente la formula CONCATENAR que hicimos en la tabla, eso quiere decir que todo lo demás que hagamos en el Query se aplicara según se mueva la información de la tabla.
Este método de crear rutas móviles puede resultar bastante útil si usas un mismo template de TXT para todos tus análisis y ahorrarte mucho trabajo en el futuro. Pruébalo y me dices que tal en los comentarios. ¡Ahí nos leemos!