🤖

dbt Power Userの快適さについて

2023/07/13に公開

先週あたりTwitterでdbt Power Userが便利だという呟きを見つけて、よく見てないけど便利そうだからブックマークしとくか〜って思ってて。
で、さっき実際に設定したらすんごい便利だったって話です。

dbt Power Userとは

主な特徴

  • ソース定義からモデルを生成する
  • クエリ結果セットの視覚化
  • 現行モデルの系譜
  • すべてまたは個々のモデルのテストを実行する
  • モデル、マクロ、ソース、ドキュメントの定義に移動する

などなど、詳しくは以下Githubをご参照ください。
https://github.com/innoverio/vscode-dbt-power-user

それじゃ、設定していくよ〜

その前に今回の環境やら前提について

  • macのVSCodeを使ってます
  • dbt環境はクラウドのUbuntuインスタンス上に構築してます

ローカルのdbt環境かクラウドのdbt環境かを使うのかは大きな設定の違いはないので、ローカルで設定される際は適宜読み換えて設定してみてください。

dbt Power Userのインストール

事前にdbt環境をインストールしているインスタンスにSSH接続しておきます。

その画面状態で拡張機能からdbt Power Userをインストールします。
すると下図のように画面左のバーにdbtのアイコンが出現していればOKです。

拡張機能の設定をしていく

「command」キー + 「,」キー を押下し、Settings画面を表示させ、検索バーに「associations」と入力し、下図赤枠のように以下値を設定する。
この際設定先がRemote SSHであることを確認しておく。

  • Item欄:*.sql
  • Value欄:jinja-sql

dbtがインストールされているPythonインタープリターを選択する

Settings画面の検索バーより、「python interpreter」と入力し、下図赤枠の通りに設定する。
このように設定することで、常にPythonインタープリターの選択が表示されるようにしている

続けて、dbtがインストールされているインタープリターを選択します。

まず、which dbtコマンドを実行し、dbtのインタープリターを確認します。
下図では/usr/bin/配下にdbtがインストールされていることが分かります。
次に、コマンドパレットを開き、select interpreterと入力し、先ほど確認したdbtのインタープリターと同じパスが表示されているので、そちらを選択します。
※別に同じパスでなくてもOKです。

以上で設定は完了です。

dbt Power Userの使い方

VSCode上でリネージを見る

これまでリネージを見ようと思うと、dbt docsコマンドを実行し、ブラウザ上で見ていましたが、dbt Power Userを使うことでVSCode上で確認できちゃいます。
使い方としては、適当なモデルファイルをクリックします。
ターミナル画面左タブに「LINEAGE VIEW」があるのでそれをクリックするだけです。

VSCode内でモデルの実行

モデルを構築する際に、参照元のテーブル構造どうなってたっけ?ってなったり、モデル構造を確認する際にデータと一緒に確認したくなる時にVSCodeでデータを確認できちゃいます。
使い方としては、見たいSELECT句を選択し、「Command」+ ENTERでターミナルの「QUERY RESULTS」から確認できます。
もちろんモデルファイル内のクエリを丸ごと選択することもできます。

ref や source先のファイルにすぐにアクセスできる

refやsourceで定義したファイルにすぐにアクセスできちゃいます。
使い方としては、「Command」キーを押しながらrefの参照先文字列にマウスカーソルを合わせるとクリックできるようになります。
下図はカーソルを合わせて参照先ファイルの情報がポップアップ画面に表示されている状態です。

モデルファイル毎にtest や runを実行できちゃう

適当なモデルファイルを参照した状態にし、下図左バー最下部のdbtアイコンをクリックする。
すると、上から「MODELS TESTS」、「PARENT MODELS」、「CHILDREN MODELS」とある。

「MODELS TESTS」はモデルに記載したテスト項目が一覧で表示されており、単独テスト実行でも一括テスト実行でも行える。

また、「PARENT MODELS」はモデルの参照元のみのrunやモデルファイル単位でのrunも実行可能だ。

「CHILDREN MODELS」は、今回のテストデータには存在しないが、ordersモデルの先にあるモデルが存在すれば、ここに表示され、「PARENT MODELS」と同じことができる。

コンパイル結果に即アクセスできちゃう

「Command」+「'」でコンパイルファイルにアクセスできます。

紹介した機能だけでも、dbtでの開発が捗るのは間違いないと感じました!
もっと早くに気づけていれば。。。。
他にもいい機能があればぜひコメントで教えてください!!

documentationの記載をサポート

気づいたらDocumentationもdbt power userから書けるようになっていました。
任意のSQLファイルをVSCodeで開き、ターミナルのタブで「DOCUMENTATION EDITOR」をクリック。

次に、エディター枠にDocumentを記載する。
今回は適当に「stg_customers」と入力し、画面下部の「Save Documentation」をクリックする。
YAMLファイルを確認すると、descriptionに「stg_customers」と設定されていることがわかる。

ソース定義からモデルを生成

モデルから自動生成できることは公式ドキュメントで知っていたのですが、うまく動かなくて放置してましたが、
今やったら普通にできたので、あの時できなかった理由が分かんないですね〜。。なんでだろ?
ソース定義(ソースYAMLファイル)を開くと、以下スクショの赤枠の部分をクリックできるようになっており、
ソース定義でされているモデル(テーブル)ごとの単位で「Generate model」が表示されます。

「Generate model」をクリックすると、以下スクショのようにモデルが生成されます。

Discussion