Estructurar sentence para carga de datos de S3 a Redshift
Clase 16 de 25 • Curso de Fundamentos de ETL con Python y Pentaho
¡Hola! En la clase anterior definimos esta función de carga de archivos en nuestra notebook de Python:
💡Dentro de esta función esta la variable
sentence, que es una secuencia de texto con una instrucción para copiar los registros de los archivos CSV, que están dentro del bucket de S3, hacia la base de datos dev que está en un schema.
Esta sentencia debe configurarse específicamente para el schema de tu base de datos y la dirección de tu bucket en S3.
Revisitemos tres componentes principales dentro de la sentencia:
-
Schema en DB en Redshift: es el schema de nuestra base de datos donde están las tablas a donde se copiarán los registros de los archivos CSV. Este debe ser remplazado por ese schema, que en tu caso debería ser
publicen lugar deetl_test -
Nombre de bucket de S3: dirección del bucket donde se guardan temporalmente los archivos CSV. En tu caso debe remplazarse
's3://platzi-etl/course_etl_target/{}'por el nombre único de tu bucket. Si tu bucket se llamara nombre-unico-bucket-curso-platzi en la sentencia debería estar's3://nombre-unico-bucket-curso-platzi{}' -
Región elegida de AWS: es esa región donde creaste el clúster de Redshift. En caso de que no lo hayas hecho en la región us-west-2 escribe el código de la región que elegiste.
Tu sentence debería verse de forma similar a la siguiente, pero recuerda que no será idéntica porque el nombre de tu bucket es único en el mundo:
sentence = '''copy public.{} from 's3://nombre-unico-bucket-curso-platzi/{}' credentials 'aws_access_key_id={};aws_secret_access_key={}' csv delimiter '|' region 'us-west-2' ignoreheader 1'''.format(table_name, file_name, os.environ.get('AWS_ACCESS_KEY_ID'), os.environ.get('AWS_SECRET_ACCESS_KEY'))
¡Listo! Aplica estos ajustes a tu sentence y úsalos durante la próxima clase donde usaremos la función load_file() para cargar los registros en Redshift. ⚙️👏🏽