建立資料管線
使用 factory methods 不僅讓程式碼更易讀,也更好用。這個練習中,你會實作一個從資料庫擷取資料的資料管線。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 物件導向程式設計進階
練習說明
- 使用
DataPipeline類別建立items_pipeline,並以查詢SELECT * FROM items;從"Redshift"資料庫擷取資料集。 - 將
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;")