Bygga en datapipeline
Att använda fabriksmetoder gör inte bara koden lättare att läsa – den blir också enklare att använda. I det här exemplet får du öva på att skapa en datapipeline som hämtar data från en databas. Klassen DataPipeline implementerar ett fabriksmetodsdesignmönster och visas nedan. Dessutom är två konkreta produkter av klassen Database definierade åt dig: Postgres och 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
Den här övningen är en del av kursen
Objektorienterad programmering i Python – fortsättningskurs
Övningsinstruktioner
- Skapa en
items_pipelinemed klassenDataPipelineoch hämta en datamängd från en"Redshift"-databas med fråganSELECT * FROM items;. - Uppdatera
items_pipelineså att den hämtar från en"Postgres"-databas i stället, med samma fråga som tidigare. - Skapa en
etl_pipelinesom hämtar data från"Redshift".
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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;")