Een datapipeline bouwen
Factorymethoden maken code niet alleen makkelijker leesbaar, maar ook makkelijker te gebruiken. In dit voorbeeld ga je oefenen met het maken van een datapipeline die gegevens uit een database haalt. De klasse DataPipeline implementeert het factory method-ontwerppatroon en staat hier hieronder. Ook gedefinieerd zijn twee concrete producten van de klasse Database: Postgres en 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
Deze oefening maakt deel uit van de cursus
Gevorderde objectgeoriënteerde programmering in Python
Oefeninstructies
- Maak een
items_pipelinemet de klasseDataPipeline, en haal een gegevensset op uit een"Redshift"-database met de querySELECT * FROM items;. - Werk
items_pipelinebij zodat die in plaats daarvan uit een"Postgres"-database haalt, met dezelfde query als eerder. - Maak een
etl_pipelinedie gegevens uit"Redshift"extraheert.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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;")