dbtとは?The Data Build Toolの解説
dbt (data build tool) は、データチームがバージョン管理されテストされたSQLを使ってwarehouseのデータを変換できるようにし、ソフトウェアエンジニアリングの実践をアナリティクスに適用します。
dbtは「as code」の考え方をアナリティクスにもたらしました。場当たり的なSQLスクリプトの代わりに、dbtは各変換をmodel - ファイル内のSELECT文 - に変え、それがバージョン管理され、テストされ、ドキュメント化され、data warehouse内で依存関係の順にbuildされます。
dbtとは
dbtはELTのTを実行する変換ツールです。SQLのSELECT文をmodelとして書くと、dbtがそれを適切なCREATE TABLEまたはCREATE VIEW文でラップし、warehouseに対して実行します。dbtが依存関係を処理するため、modelは正しい順序でbuildされます。
テストとドキュメント
dbtでは、テスト - not null、unique、accepted values、relationships - をカラムに直接宣言でき、ドキュメントとmodel同士の依存関係を示すlineageグラフを生成できます。これにより、warehouseの変換レイヤーがアプリケーションコードのようにテスト可能になります。
modelのDAG
dbtはmodel間の参照からDAGを構築します。「dbt build」を実行するとSQLをコンパイルし、依存関係の順にmodelを実行し、テストを実行して、いずれかのテストが通らなければ実行を失敗させます - まさにCIが依存するquality-gateの振る舞いです。
CIにおけるdbt
一般的なパターンでは、すべてのpull requestでCI用のschemaに対してdbtを実行し、変更されたmodelのみをbuildしてテストするため、壊れた変換がmergeされる前に検出されます。
steps:
- run: pip install dbt-snowflake
- run: dbt deps
- run: dbt build --select state:modified+ --target ciLatchkeyに関する注記
dbtのCIのjobは、何が変わったかを把握するためにadapterをインストールし、過去の実行からartifactをダウンロードします。Latchkeyでは、実行間でPython環境とdbtのartifactをキャッシュすることでこれらのjobが高速化され、warehouseへの接続が実行の途中で途切れたときにauto-retryが役立ちます。
重要なポイント
- dbtはバージョン管理されテストされたSQLのmodelでwarehouseのデータを変換し、依存関係の順にbuildします。
- 組み込みのテストとlineageにより、変換レイヤーがアプリケーションコードと同じくらいレビュー可能になります。
- CIで変更されたmodelに対して「dbt build」を実行すると、壊れた変換がmergeされる前に検出されます。