Construyendo una canalización de datos
Usar métodos de fábrica no solo hace que el código sea más fácil de leer, también facilita su uso. En este ejemplo, vas a practicar la creación de una canalización de datos que extrae información de una base de datos. La clase DataPipeline implementa el patrón de diseño de método de fábrica y se muestra aquí. También tienes definidas dos implementaciones concretas de la clase Database: Postgres y Redshift.
class DataPipeline:
def _get_database(self, provider):
if provider == "Postgres":
return Postgres()
elif provider == "Redshift":
return Redshift()
def extract_data(self, provider, query):
database = self._get_database(provider)
dataset = database.query_data(query)
print(f"Extracted dataset from {provider} database")
return dataset
Este ejercicio forma parte del curso
Programación orientada a objetos intermedia en Python
Instrucciones del ejercicio
- Crea un
items_pipelineusando la claseDataPipeline; extrae un conjunto de datos de una base de datos"Redshift"con la consultaSELECT * FROM items;. - Actualiza
items_pipelinepara extraer de una base de datos"Postgres"en su lugar, usando la misma consulta que antes. - Crea un
etl_pipelineque extraiga datos de"Redshift".
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Create an ETL DataPipeline, query using Redshift
items_pipeline = ____()
____.extract_data("____", "SELECT * FROM items;")
# Now, switch the pipeline to Postgres
____
# Finally, create an etl_pipeline with Redshift
____ = ____()
____.____("____", "SELECT * FROM sales;")