Extracción y transformación de datos del GCBA.
Buenos Aires Compras (BAC) es el sistema electrónico de compras y contrataciones del Gobierno de la Ciudad Autónoma de Buenos Aires. Es una herramienta de apoyo en la gestión de Compras y Contrataciones que llevan adelante las entidades gubernamentales, permitiendo la participación de los compradores, proveedores y la comunidad. De esta manera, la compra pública atraviesa los pasos necesarios para ofertar y adquirir los productos de forma online, ágil, transparente y segura.
Todas las jurisdicciones dependientes del Poder Ejecutivo de la Ciudad Autónoma de Buenos Aires publican en BAC sus avisos y gestionan procesos electrónicos de adquisición y contratación de bienes y servicios, en los que seleccionan a los proveedores en base a las ofertas cargadas a tal fin en el sistema.
El Gobierno de la Ciudad de Buenos Aires hace disponible el acceso a información sobre las contrataciones públicas que le permite saber cómo se gestionan las mismas. La política de datos abiertos del Gobierno de la Ciudad de Buenos Aires nos permite poder realizar análisis de datos sobre los distintos tipos de gastos por repartición.
Este trabajo consiste en la automatizacion de la extraccion de datos de Buenos Aires Compras para plasmar la informacion en un dashboard que nos muestre los siguientes items:
Docker es una herramienta de CI/CD que permite la implementación de código sin problemas desde los entornos de desarrollo hasta los de producción. Al crear virtualización a nivel de sistema operativo, puede empaquetar una aplicación y sus dependencias en un contenedor virtual. O, en otras palabras, el código que se desarrolló y probó en el entorno de desarrollo se ejecutará exactamente con el mismo entorno (por ejemplo, el mismo sistema operativo, compiladores, paquetes y otras dependencias) en prod. Docker puede ejecutarse de forma nativa en sistemas Linux y con Docker Desktop (o equivalente) en macOS y Windows OS.
Para correr el ETL se utilizo Airflow con Docker (Imagen apache/airflow:2.3.4). Los siguientes comandos instalan y corren Airflow en modo detach en el puerto 8080:
docker-compose up airflow-init
Levantando la arquitectura:
docker-compose up -d
Una vez ejecutado el DAG los archivos de salida se guardan dentro de la carpeta home.
Se utilizaron las siguientes librerias de R y Python para el ETL + el dashboard final:
Se hace lectura de un archivo .csv desde la siguiente página: GCBA utilizando pandas y Airflow para orquestar el flujo de trabajo y automatizar la tarea.
Hay que tener en cuenta los siguientes ítems:
Los montos en dólares fueron convertidos a pesos Argentinos utilizando el tipo de cambio del contracts/dateSigned (La fecha en que se firmó el contrato). Esto nos permite tener todos los valores expresados en pesos Argentinos.
El tipo de cambio utilizado es el dólar paralelo promedio entre comprador y vendedor informado por ambito.com.
Se hizo limpieza del DataFrame inicial y solo se seleccionaron las siguientes columnas:
tender/procuringEntity/name (Nombre de la Organización)
contracts/items/quantity (El número de unidades requerido)
contracts/items/unit/value/amount (Monto como una cifra)
tender/items/unit/value/currency (Moneda)
parties/roles (Roles de las partes)
tender/additionalProcurementCategories (Categorías adicionales de contratación)
contracts/dateSigned (Fecha de firma)
parties/name (Nombre común)
tender/procurementMethodDetails (Detalles del método de contratación)
A continuación se muestra la lista de las carpetas principales del repositorio:
.
│ .gitignore
│ bac.Rmd
│ docker-compose.yaml
│ README.md
│
├───dags
│ │ etl.py
│ │ my_dag.py
│ │
│ ├───data_csv
│ │ README.md
│ │
│ └───home
│ ejercicio1_all.csv
│ ejercicio2_all.csv
│ ejercicio3_all.csv
│ README.md
│
└───images
empresas.gif
montos.gif
En resumen:
.gitignore
no trackea documentos para el repositorio.bac.Rmd
es el script de R que contiene el código para el dashboard..docker-compose.yaml
se construye la imagen para ejecutar Airflow.etl.py
(Script de Python con el código para el ETL) y my_dag.py
(Script de Python con el código para ejecutar con Airflow).data_csv
se guardan los archivos de extract.home
se guardan los archivos del load.images
están las imágenes y gifs del repositorio.
Para observar los montos operados en el periodo por Rubro y Repartición podemos acceder a las siguientes hojas del dashboard:
En cada una de ellas podemos visualizar:
Para observar los montos operados por empresa:
Por último, para observar los montos operados por tipo de contratación tenemos que acceder a la ante ultima hoja del dashboard.
El trabajo de ETL + Visualización se puede continuar a futuro teniendo en cuenta los siguientes ítems:
Para las próximas actualizaciones se tendrán en cuenta cada uno de ellos.