Побудова конвеєра даних
Використання фабричних методів не лише робить код читабельнішим, а й спрощує його використання. У цьому прикладі ви потренуєтеся створювати конвеєр даних, що витягує дані з бази. Клас DataPipeline реалізує шаблон проєктування factory method і наведений нижче. Також для вас визначено два конкретні продукти класу Database: Postgres і 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
Ця вправа є частиною курсу
Середній рівень об'єктно-орієнтованого програмування в Python
Інструкції до вправи
- Створіть
items_pipelineза допомогою класуDataPipeline, витягніть набір даних з бази"Redshift"за запитомSELECT * FROM items;. - Оновіть
items_pipeline, щоб тепер дані забиралися з бази"Postgres", використовуючи той самий запит. - Створіть
etl_pipeline, який витягує дані з"Redshift".
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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;")