データパイプラインを構築する
ファクトリメソッドを使うと、コードは読みやすくなるだけでなく、使いやすくもなります。この演習では、データベースからデータを抽出するデータパイプラインの作成を練習します。DataPipeline クラスはファクトリメソッドのデザインパターンを実装しており、以下に示しています。さらに、Database クラスの具体的なプロダクトとして Postgres と Redshift の2つも用意されています。
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 中級オブジェクト指向プログラミング
演習の手順
DataPipelineクラスを使ってitems_pipelineを作成し、"Redshift"データベースからSELECT * FROM items;のクエリでデータセットを抽出します。- 同じクエリを使い、
items_pipelineを"Postgres"データベースから取得するように更新します。 "Redshift"からデータを抽出するetl_pipelineを作成します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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;")