dbtというツールの名前をきいたことはあるだろうか?もしあなたがデータエンジニアもしくはデータアナリストで、まだdbtに手を出していないとしたらぜひこの記事を読んでほしい。dbtは大規模な資金調達やユーザコミュニティに支えられ、もはやモダンデータスタックの一つの部品として様々な企業に活用されるようになった。
あなたとあなたの企業は、このトレンドに乗るべきだろうか?
この記事では、dbtの簡単な歴史と機能の特徴について述べる。データプラクティショナーが実力を最大限に発揮するまでに乗り越えなければならない面倒な作業を、dbtはどのように負担してくれるだろうか。この記事が、dbtについてのあなたの理解を深める一助になれば幸いだ。
目次
推奨される読者
- 分析業務までに長いSQLを書かなければならずうんざりしているデータエンジニア
- 細かいデータ品質のチェック作業で疲れているデータエンジニア
- SELECT文には抵抗がないが、ステップアップしたいデータアナリスト
- 組織をハッピーにしたいデータチームのリーダー
以下は、Seattle Data Guyのこちらの記事を、許諾のもとで邦訳したものです。
(Review: Brett Torenvlied of primeNumber, Inc.)

ハーバード大の記事が「データサイエンスこそ21世紀で最もセクシーな職種だ」と押し売りしてから、十数年になる。だから僕らは「データが新たな石油だ」と語ってる場合じゃなくて、ちゃんと維持可能なデータスタックを構築し始める必要がある。
僕が最近、モダンデータスタックにフォーカスした記事を執筆し、この技術が未来にわたって持続可能なシステムを構築する際に、ツールとしていかに役立つかを説明したのも、これが理由だ。
Astronomerだろうが、Fivetran、Snowflake、Starburst Dataだろうが、こうしたツールは全てデータエンジニアが過去数年間悪戦苦闘していた重い作業をツールで実現することを目的としている。
あなたは、Fishtown Analyticsという企業をご存じだろうか。この企業もデータワークフローをシンプルにすることに機運を見出した一社だ。もしかすると偶然この名前をきいたことがあるかもしれない。
あるいは、この略語ならきいたことがあるだろうか。
dbt
dbt(Data Build Tool)はデータを変換して、データパイプラインを構築する際に非常に便利に使えるツールだ。このツールを使うことによってデータ処理プロセスが扱いやすくなり、構築スピードもより早くなる。
しかし、dbtとはそもそも何だろうか?どんなことが可能なツールで、どうしてあなたの企業はdbtを採用すべきなのだろうか?
こうしたことについてちょっと説明しつつ、もう少し付け加えよう。
dbtとは何か?
dbtを作ったのはFishtown Analyticsという企業だ。(今はdbt Labsに名称変更した。)
dbtは、データアナリストがExtract-Load-Transform(ELT)パイプラインの「変換(Transform)」ステップを実行できるようにするコマンドラインツールだ。
dbtでは、アナリストが好きなテキストエディタでdbtコードを記述して、馴染みのあるコマンドラインでdbtでジョブを実行することができる。
dbtはコードをSQLに変換して、企業のデータベースに対してクエリを実行する。
例を下図で示してみよう。

「分析エンジニアリングツール」と呼ばれるdbtはオープンソース(OSS)でもあり、モダンデータスタックの一つの部品として多くの企業で使用されるようになった。
しかも、信頼できる盤石なサポートコミュニティも形成されている。
dbtの直近の資金調達
dbtを開発したdbt Labsは、Sequoia Capital、Anderson Horowitz、Altimeterから150 million USDの資金調達をした。Cラウンドでは1.5 billion USDの評価額を得ている。このラウンドでは、優先株の販売を通じて資金を調達した。その結果、株主が将来、企業の一般株式と優先株を交換する権利がある。
直近の資金調達の前に、dbt Labsは42 million USDを2回に分けて調達した。資金が注入されたdbt Labsは、以前の倍の企業努力で自社のOSSのプラットフォーム開発に力を入れると宣言した。そのプラットフォームが、dbtだ。
※記事の情報は、執筆当時(2021年10月17日)のものです。記事が書かれてから、dbt Labsは222 million USDの資金調達を完了しています。
この当時の雰囲気はdbt Labsの創業者かつCEOのTristan Handyからも感じることができた。
Handyは語った。
「今我々がフォーカスするのは、当社の企業価値提供のコア部分だ。エンタープライズソフトウェアのなかで最も成長率の高い領域の収益基盤を、そのコア部分の指数関数的成長ととらえている。
また、我々は実験的な新規領域にも開発の目を向けている。まだシェアできるものは無いけれどね。」
dbtを構成する基本的な技術ステップとは?
dbtのユーザーがプロジェクトを作成するときは、.ymlフォーマットでプロジェクトファイルを構成し、さらに1個以上の.sqlファイル(モデル)を構成する。(.sqlファイル(モデル)には、いずれにもSELECT文が入っていることが必要だ。)
このプロジェクトはデータウェアハウス上で必要なオペレーションを実行する。
dbtは、スタンダードでBigQuery、Postgres、Redshift、Snowflakeに対応している。また、ユーザーは「アダプター」を構築して共有し、他のウェアハウスにも対応させたりしている。
最後に、dbtは必要なデータを必要なフォーマットでアウトプットし、分析の準備が整った状態で目の前に提供してくれるというわけだ。
dbtの基本的な特徴は?
dbtは、ユーザビリティと生産性向上のための重要な特徴を複数備えている。
活発なユーザーコミュニティがTIPSやより便利な使用方法を共有してくれる。Slackのコミュニティに至っては15000人規模のメンバーがいる。
タスク図解(DAG)

dbtは自動的にグラフを作成し、プロジェクト内の異なるモデル間の依存関係を図式してくれる。これは、DAG(Directed Acylic Graph: 有向非巡回グラフ)と呼ばれる。
このグラフがもたらす恩恵の一つは、データアナリストにとって依存関係を把握し、エラーを発見し、何が問題の背景にあるのかを理解するのがシンプルになるということだ。
もう一つの恩恵としては、専門的なデータスキルを持たない別部門のプロジェクトスタッフや監督者に対してプロジェクトを説明したり示したりするのがシンプルになるということだ。
このグラフを使えば、アナリストが何をしているのかを説明し、直感的に理解してもらうことができる。
品質テスト
dbtには、データ品質をテストする機能が備わっている。ある特定のクエリを実行不可能にしたり、出力の品質を低下させたりするような問題を検出してくれる。
このテストには結構シンプルなものも多く、例えば不要なnullや重複している結果を探索するというものだったりするが、それでも作業をスムーズにさばいてくれる。なぜならテストを実行すると、前述の.ymlファイルを使用して、各プロジェクトの各テストに対して一個ずつ自動的にクエリを作成してくれるからだ。
バージョンコントロール
ここまでは、ある一人の分析官がdbtを操る場面を想定して書いたが、実際のビジネスではある一つのプロジェクトに対して複数人の分析官が協力して、別々のステージにおいて同時に作業をしている場合も多いだろう。
バージョンコントロール機能はこうしたワークフローにおいて、フローを細分化し、ロジカルなステップに分解して作業の進捗を管理することに役立つ。単純に前のバージョンまで戻せるから、計画どおりにいった作業まで全消去する必要がなくなり、間違いやコンフリクトが致命的にならなくなる。
サンドボックス
以前「環境マネジメント」として知られていたものが、サンドボックスだ。サンドボックスを活用すれば、他のユーザーの干渉を受けることなく切り離した環境でデータと向き合える。
環境を分離することによって意図しない形でオリジナルの生データや誰かが今見ているアウトプットを変更してしまったりしなくて済むし、分析官が他の人間のプロジェクトでコードをレビューしたときにしばしば起きるような混乱・困惑を防ぐこともできる。
あなたはdbtを使うべきか?
あなたもしくはあなたのスタッフがデータ分析を行う際に、dbtは手動と比べて時間の無駄や技術的混乱を気にすることなくデータを処理することができる点で、非常に効率的な手段だ。
これはつまり、ビジネス上分析に特化した人材を雇用し、能力をフル活用できるということを意味する。
SQLやSELECT文を扱うことに問題がないデータアナリストなら、ほとんど誰でも比較的早くdbtを使いこなせるようになるだろう。Gitの知識があることも、ワークフローを管理する上で大きな助けになる。
dbtはあくまでツールであって、なぜこのデータを分析をするのか、何を解決したいのかということの明確な理解まで差し出してくれるわけではない。dbtは、あなたが最大限の実力を発揮する前にしなければならない面倒な作業を取り去ってくれるだけだ。
究極的に、dbtはデータの変換(Transformation)についてのツールだ。dbtは、データパイプラインを障害から機会に変え、データの可能性を最大化する作業へとアナリストを解き放ってくれるものなのだ。
動画 (英語)
最後に (翻訳者から)
いかがでしたでしょうか?
SELECT文に抵抗が無い方ならエンジニアやアナリストの別を問わず使いこなせる可能性のあるdbt。非常に魅力的なツールです。
この他にも、迷路と化したSQL構造をすっきりとまとめて、一定の処理をテンプレート化するようなオペレーションに向いています。長い構文をテンプレートで整理することによって作業の品質が保たれ、オペレーション属人化のリスクからある程度エンジニアを解放してくれる点でも、大量のデータを扱う企業になくてはならない存在となるでしょう。
trocco®︎はdbtとの連携によってより強力なデータマネジメントツールとしてご活用いただけます。
dbtジョブをtrocco®︎経由で呼び出すことができるだけでなく、ETLジョブやマート作成と一緒にワークフローに組み込むことも可能です。
dbt連携機能は2022年11月現在プレビュー版として公開しており、無償のトライアルが可能です。始めてみてください。
今回の記事は以上です。Have a Happy Data Engineering Day!!
Credit: Seattle Data Guy (https://www.theseattledataguy.com/)
Thanks for letting us translate this article!