ETLとは?Extract, Transform, Loadの解説
ETLはExtract, Transform, Loadの略で、ソースからデータを取り出し、望ましい形状に変換し、それから対象システムにロードすることを指します。
ETLは、運用系システムから分析系システムへデータを移動させる古典的なパターンです。何十年もの間、data warehouseを構築する標準的な方法でした。ソースから抽出し、専用のステップでデータを変換し、クレンジングされた結果を宛先にロードするのです。
ETLとは
ETLは3段階のプロセスです。Extractはデータベース、API、ファイルなどのソースからデータを読み取ります。Transformはデータをクレンジング、結合、再形成します - 不正な行のフィルタリング、フォーマットの標準化、カラムの導出などです。Loadは完成したデータを宛先、通常はwarehouseに書き込みます。
なぜロード前に変換するのか
古典的なETLでは、変換はデータがロードされる前に、多くの場合は専用の処理エンジン上で、warehouseの外部で行われます。これは、warehouseのコンピュートが高価で、クレンジングされモデル化されたデータだけを取り込みたかった時代には理にかなっていました。また、前もってスキーマを強制します。
ETLとELT
モダンな代替手段であるELTは、まず生データをロードし、その後warehouseの内部で変換することで、安価でスケーラブルなクラウドコンピュートを活用します。コンプライアンスや容量の理由からデータが取り込まれる前にクレンジングまたはマスキングされなければならない場合には、ETLが依然として好まれます。
CIにおけるETL
ETLのコードもコードです。変換をfixtureに対してユニットテストし、本番に触れる前にサンプルデータでjobをエンドツーエンドで実行してください。
steps:
- run: pytest tests/transform # test transform logic
- run: python etl.py --source sample.csv --dry-runLatchkeyに関する注記
ETLのテストjobはサンプルデータを取得し、データベースのservice containerを起動することがあります。Latchkeyでは、それらのfixtureや依存関係をcacheすることで実行が高速化され、auto-retryが抽出中に不調となるソースAPIやデータベースをカバーします。
重要なポイント
- ETLはソースからデータを抽出し、対象の外部で変換し、それからクレンジングされた結果をロードします。
- ロード前の変換はスキーマを強制し、データを先にクレンジングまたはマスキングする必要があるケースに適しています。
- ELTはモダンな代替手段で、生データをロードしてからwarehouseの内部で変換します。