ETL、ELT、データラングリングの違い
データエンジニアリングについて勉強していて、ETLとELTの違いに関する記事は調べると色々出てきましたが、データラングリングにも言及している記事はあまりありませんでした。
多分需要がないからそのような記事が書かれていないんだろうと思いますが、せっかくなので自分なりにまとめて書いてみます。
ETL / ELT
分析向けにデータを加工・整形するプロセス全般を指します。
ETL
Extract, Transform, Load の略称。この順番で処理を行うということ。
つまり、
データを抽出 -> 加工・整形 -> データウェアハウスなどに格納
という順序で実施します。
ELT
Extract, Load, Transform の略称。抽出 -> 格納 -> 加工・整形 の順序で実施します。
ETL と ELT の違い
ETL の場合、抽出されたデータのみに対して処理を行なっているので、バッチ処理のようなデータ取り込み手法の場合、加工のためのジョブが分散される形になります。
つまり、格納されたデータ全てに対して処理を実行するELTと比較すると、各ジョブのコストはそれほど大きくはなりません。
一見するとELTは加工ジョブの負担が大きいようですが、Apache Hadoop のような分散処理フレームワークの発展により、処理速度は向上しました。
AWS ですと Amazon Redshift が ELT 処理に適しています。
ELTの方が抽出からデータウェアハウスへの格納のタイムラグが小さく、さらに生データに対してデータマイニングを容易に行うことが可能です。
ただし、当然データ処理にかかるコストは増加する可能性があります。
また、ETLの場合はデータウェアハウスに格納する前に、個人情報のマスクや暗号化などの処理を行えることから、セキュリティやコンプライアンスの面でもメリットがあります。
ETL/ELT とデータラングリングの違い
データラングリング (data wrangling) は非構造化データまたは半構造化データを構造化データに変換することです。
- 非構造化データ...スキーマが決まっていない (e.g., 画像)
- 半構造化データ...データの配置場所が決まっている (e.g., JSON)
- 構造化データ...データの型・配置場所が決まっている (e.g., RDB)
また、単なる構造化 (data structuring) だけでなく、データクレンジング (data cleansing; 重複や欠損の処理)、データエンリッチング (data enriching; 情報の付加) を含む場合もあります。
ETL/ELTはデータ処理のパイプラインに組み込まれシステマティックに実行されるものであるのに対して、データラングリングはアドホックに構造化方法を考えていきます。
基本的には、データラングリングによってデータ処理のプロセスをマニュアル化し、それをETL/ELTとしてパイプラインに実装するという流れとなります。
そのような点から、データラングリングがデータサイエンティストの領域である一方で、ETL/ELTの実装はデータエンジニアの領域であるとも言えます。