[PowerQuery] Descomprimir archivos .zip

Tras el reciente post sobre descomprimir archivos con Power Query para poder obtener datos de comprimidos gzip me han estado consultado sobre la posibilidad de hacerlo contra archivos zip. Cierto es que Microsoft hoy está relacionado con otras herramientas con el formato gzip puesto que un Azure Data Lake puede tener dichos archivos y ser leído o utilizado con otras herramientas como Azure Data Factory.

En este artículo vamos a ver, de forma muy parecida al anterior, como realizar la descompresión de un archivo .zip para poder explorar sus archivos y datos con el motor Power Query dentro de nuestro editor de consultas de Power Bi.

Lo primero que necesitamos saber antes de continuar es que en caso de esta extensión la cuestión es más complicada. La extensión es más compleja y contiene distintos métodos de compresión lo cual dificulta su lectura. La realidad es que voy a facilitarles una función que ayudará a leer archivos zip el 90% de los casos pero no creo que funcione siempre. 

Para poder leerlos vamos a utilizar una función custom dado que Power Bi por defecto no tiene asociada una descompresión de este tipo.

Vamos a mi github donde encontraremos el código.

https://github.com/ibarrau/PowerBi-code/blob/master/PowerQuery/ExtractZIP.pq

Luego obtengamos datos de una consulta en blanco para pegar el código en ella y crear nuestra función. 

image

Para ejecutarlo contra un archivo comenzamos de la misma forma que el post anterior pero vamos a cambiar el segundo paso del editor para agregar este toque.

Primer paso, la lectura del archivo. Podemos obtener datos de csv y elegir "todos los archivos" en la ventana para seleccionarlo o modificar el código power query para que quede de la siguiente manera:

= File.Contents("C:\Datasets\Energy Data.zip")

image

Segundo paso el siguiente código en un nuevo paso personalizado (custom).

= DecompressZip(Origen)

image

De esta manera obtenemos un resultado semejante a cuando leemos una carpeta en un file system que nos permite explorar su contenido para combinar los archivos o simplemente tomar uno de ellos para utilizarlo en el motor.

Lo siguiente que hagan con el archivo ya pasaría por sus cuentas. Espero que no les falle y puedan leer los archivos .zip cuando necesiten.