Создание пайплайна данных
Фабричные методы не только делают код более читаемым, но и упрощают его использование. В этом упражнении вы попрактикуетесь в создании пайплайна данных, который извлекает данные из базы данных. Класс DataPipeline реализует паттерн проектирования «фабричный метод» и показан ниже. Также для вас определены два конкретных продукта класса 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;")