それ、ETLですか?ELTですか?
ETLとELTの違い、本当に分かっていますか?
データサイエンティスト・データエンジニアの仕事を数年やってきましたが、今までETLだと思っていたものが実はELTだったと気がつきました。
反省の意味も込めて改めてここにまとめます。
勘違いしていたこと
この図はETLとELTの比較でよく使われています。
つまり―
ETLは色んなデータソースからデータを取って(E)、加工して(T)、データウェアハウスに入れる(L)。
ELTは色んなデータソースからデータを取って(E)、まずはデータレイクに無加工のまま入れて(L)、それを加工しつつデータウェアハウスに入れる(T)。
ということです。
私は今まで後者をETLだと思っていました。
データソースから取ってきてデータレイクにいれるところまでがExtract、それを加工することがTransform、そしてデータウェアハウスにいれるのがLoad。
そもそも前者のデータレイクがないパターンは全く頭にありませんでした。
でもおかしくない?
ETLの説明でのLは「データウェアハウスにいれる」なんですよね?
一方ELTの説明でのTは「加工しつつデータウェアハウスに入れる」ですよと。
…「入れる」がLだったりTの一部だったりでおかしくないですか?
ELTは正確には「ELTL」ですよね。
さらにいうと、TLの部分はデータクリーニングと基礎集計とデータマート作成と…というように数段階に分けられるのが一般的です。
そうすると「ELTL」でもまだ正確ではなくて、「EL+(TL)×n」ということになります。
…ややこしいですね。
だから単純化してELTと呼ばれるに至ったのでしょうか。
まとめ
「ELTはETLの順番を変えたものです!」と言われますが、そのようなざっくり解釈だと誤解してしまいます。
ETLと比べてELTにはデータレイク層が追加されています。
でもその辺りを正確に表現するとややこしい名称になるのでELTに落ち着いた、と解釈しました。
参考
https://aws.amazon.com/jp/compare/the-difference-between-etl-and-elt/