Carga de datos con Python

Clase 15 de 25Curso de Fundamentos de ETL con Python y Pentaho

Resumen

¿Cómo guardar datasets limpios en formato CSV?

Comenzar guardando nuestros datasets limpios y transformados en archivos CSV es crucial. Aquí usamos la función to_csv() de Pandas para realizar esta tarea. Guardamos los archivos en una carpeta llamada target, especificando el nombre del archivo como traits.csv. Para evitar problemas con caracteres comunes como las comas, utilizamos un separador más raro, el "pipe", con la opción sep='|'.

df_traits_clean_final.to_csv('target/traits.csv', index=False, sep='|')

Este proceso se repite para otros dataframes, como dfcountries, dfcode, dfquantity, dfflow, y dfyear, generando archivos CSV correspondientes.

¿Cómo conectar Python a servicios AWS S3?

El siguiente paso es configurar la conexión con AWS S3, utilizando la biblioteca Boto3, que facilita la interacción con los servicios de AWS. Inicialmente creamos un cliente de Boto3 especializado en S3, configurando la conexión mediante variables de entorno para asegurar nuestras credenciales.

import boto3
s3_client = boto3.client('s3', 
    aws_access_key_id=os.environ['AWSAccessKeyID'], 
    aws_secret_access_key=os.environ['AWSSecretAccessKey'])

Este método mantiene nuestras credenciales seguras. Las variables de entorno previenen que la información sensible esté directamente expuesta en el código.

¿Cómo hacer la conexión con una base de datos RefShed?

Conectar a una base de datos en RefShed requiere el uso de una librería específica, RefShedConnector. Configuramos detalles como host, puerto, y credenciales de usuario. Igual que antes, utilizamos variables de entorno para manejar la información sensible de la conexión.

connection = RefShedConnector.connect(
    host=os.environ['RefShedHost'], 
    database=os.environ['RefShedDatabase'], 
    port=5439, 
    user=os.environ['RefShedUser'], 
    password=os.environ['RefShedPassword'])

Estos pasos son cruciales para garantizar una conexión segura y confiable con las bases de datos que utilizamos.

¿Cómo subir archivos a S3 y copiar datos a RefShed?

Subir nuestras CSV a S3 y luego copiarlas a RefShed es esencial para manejar grandes volúmenes de datos eficientemente. Creamos una función cargar_archivo que recibe el nombre de un archivo y lleva a cabo la subida a S3. Luego, hacemos un COPY desde S3 a RefShed.

def cargar_archivo(fileName):
    tableName = fileName.split('.')[0]
    s3_client.upload_file(
        Filename=f'target/{fileName}',
        Bucket='platzi-etl',
        Key=f'course-etl-target/{fileName}'
    )

    copy_command = """
    COPY etl.table_name FROM 's3://platzi-etl/course-etl-target/{fileName}'
    CREDENTIALS 'aws_access_key_id={};aws_secret_access_key={}'
    DELIMITER '|' REGION 'us-west-2' IGNOREHEADER 1
    """.format(tableName, os.environ['AWSAccessKeyID'], os.environ['AWSSecretAccessKey'])

    cursor.execute(copy_command)

Esta función automatiza el proceso de carga, garantizando que los datos se transfieran de manera rápida y fiable desde S3 a nuestra base de datos en RefShed.

Mediante esta preparación, estamos listos para manipular y analizar nuestros datos en entornos controlados, maximizando seguridad y eficiencia. Continuar aprendiendo sobre estas herramientas y técnicas no solo refina tus habilidades de ETL, sino que te posiciona como un experto en manejo de datos.