「ETL と ELT、どちらを使えばいいですか?」という質問をよくいただきます。クラウドデータウェアハウス(BigQuery や Redshift など)の普及で ELT という言葉を聞く機会が増えましたが、どちらが優れているという話ではなく、データの量・変換の複雑さ・チームのスキルによって使い分けるものです。
ETL とは何か ¶
ETL は Extract(抽出)・Transform(変換)・Load(ロード)の順で処理します。データをソースから取り出し、中間処理で変換・クレンジングを行ってから、目的のデータベースや DWH に書き込みます。変換処理をロードの前に行うため、書き込み先のストレージを節約できます。一方、変換ロジックが複雑になると処理時間が長くなる傾向があります。
ELT とは何か ¶
ELT は Extract・Load・Transform の順です。まずデータをそのまま書き込み先(主にクラウド DWH)にロードし、その後 DWH 内で変換処理を行います。BigQuery や Redshift のような大規模並列処理が得意な DWH を使う場合、変換処理を DWH 側に任せることで高速化できます。ただし、生データをそのまま書き込むため、ストレージコストが増える場合があります。
どちらを選ぶべきか ¶
データ量が少なく、変換ロジックが複雑な場合は ETL が向いています。データ量が多く、変換処理を DWH の計算能力に任せたい場合は ELT が向いています。また、チームに SQL の知識が豊富にある場合は ELT の方が運用しやすいことが多いです。多くの中規模事業会社では、最初は ETL から始めて、DWH への移行とともに ELT を取り入れるという段階的なアプローチが現実的です。
Nexflow Core での対応 ¶
Nexflow Core は ETL と ELT の両方のフローを設計できます。バージョン 3.4 から追加された BigQuery・Redshift への直接書き込みコネクタを使うと、ELT 構成を GUI で設計できます。変換処理を DWH 側に任せるか、Nexflow Core 内で行うかは、フローごとに選択できます。
ETL と ELT の選択は、ツールの問題というより、データの量と変換の複雑さ、チームのスキルによって決まります。迷っている場合は、よくある質問のページも参考にしてください。デモで実際の構成を確認することもできます。