[PowerQuery] Descomprimir archivos .gzip

No muchos deben saber que Power Query tiene en su core de lenguaje dos descompresores de archivos. Con esto me refiero a que Power Bi es capas de tomar archivos comprimidos y extraer sus datos para explotarlos como cualquier otra extensión que estemos acostumbrados a utilizar.

Suele dar confusión por el simple hecho que si buscamos esta opción en "obtener datos" la realidad es que no existe un conector propiamente dicho sino que es una función del lenguaje Power Query la que nos permite llamar a métodos que interpreten el comprimido para que podamos leer el archivo.

Para este artículo vamos a tomar un ejemplo de archivos .tsv comprimidos como .gz que pueden ser leídos de forma web o local. En mi caso mostraré directamente contra la api de imdb que devuelve esa extensión. 

Archivos GZip

Lo cierto es que está de moda mantener el comprimido (últimamente se pregunta y ve mucho por internet) y el ejemplo es bastante sencillo. En lugar de conectar a un tipo de archivos tradicional como excel o csv, vamos a simplemente leer un archivo. En caso de leer local podemos usar File.Contents y si es web sería Web.Contents de la siguiente manera.

= File.Contents("C:\Datasets\MVP_test.csv.gz")

image

Luego podemos escribir en el editor avanzado de consultas o un nuevo paso custom del editor a la siguiente función:

= Binary.Decompress(Origen, Compression.GZip)

image

Dicha función descomprime archivos GZip para permitirnos leer su contenido. A partir de ese paso veremos el interior del comprimido para poder continuar con la lectura del csv con la función Csv.Document. También podría leer los otros tipos que tienen contectores en power bi como tsv, json, xlsx, etc.

Espero que les sea de utilidad para mantener los comprimidos en su lugar y aun así explotarlos para propósitos analíticos.