Importar un archivo CSV contenido en un archivo Zip

R es uno de los lenguajes script más populares dentro de las comunidades de análisis avanzados y estadística. Dispone de una numerosa comunidad trabajando en distintos entornos, tanto empresariales como científicos y tiene un repositorio de funciones con millares de referencias. Además, posee capacidades propias de un lenguaje script de propósito general.

Dentro de esta segunda parte de sus capacidades, podemos aprovecharlo para multitud de tareas como la que hoy nos ocupa: la capacidad de importar dentro de Power BI un archivo de datos (en nuestro ejemplo un archivo CSV) que está contenido dentro de un archivo zip.

La descripción del ejemplo la podéis encontrar en este vídeo. Aquí veréis que antes de empezar es necesario disponer del entorno de R instalado en nuestro PC puesto que son dos paquetes distintos al de la instalación de Power BI, se trata del entorno propiamente dicho (Microsoft R Open) y de la herramienta de programación (R Studio).

El script en cuestión es el siguiente:


# Declaramos variable 'temp' como un archivo temporal
temp <- tempfile()


# Asignamos a la variable 'temp' el archivo en cuestión
ArchivoZip = "http://blog.blauservices.com/wp-content/uploads/2017/04/PIB.zip"
download.file(ArchivoZip, temp)


# Utilizamos la función 'unz' para extraer el archivo CSV y lo asignamos a la variable 'temp'
ArchivoCsv = unz(temp, "PIB.csv")


# Introducimos los datos del CSV en la tabla PIB. Aqui le indicamos a la función
# que el archivo tiene cabecera y que el separador de campos es una coma.
PIB <- read.csv(file=ArchivoCsv, header=TRUE, sep=",")


# Eliminamos la referencia al archivo temporal y eliminamos los archivos
unlink(temp)
remove(ArchivoCsv)
remove(temp)
remove(ArchivoZip)

Este script puede debugarse en el entorno de R Studio pero para utilizarlo en Power BI como origen de datos deberemos ir a Power BI Desktop y hacer un Get Data del tipo R Script.

Pegamos el código aquí

Y procedemos como cualquier otro origen de datos

 

 

 

Deja un comentario

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