VSCodeでSQLMesh
はじめに
先日、「SQLMesh入門」したばかりですが、Get started には、CLI 以外にも Notebook と Browser UI があります。
まぁ、Notebook は、CLI とあまり変わりはないと思うので、Browser UI を見てみると、
となっていたので、こちらもやってみることにしようと思いますが、
「まだ、プレビューだからねっ!」だそうです。
(そういえば、dbt も VSCode 拡張でしたね。SQLパーサーとかバチバチですね)
やってみた
インストール
Tobiko社純正の拡張を入れます。ちなみに Tobiko
は、トビウオの卵のトビコです。sushi
というサンプルがあったりして、そこでも公式が書いてます。
私は CLI も VSCode でやっていたので、前回から追加で実施したのは、以下の1コマンドでした。
uv add sqlmesh[lsp]
一応、前回実行したコマンドも記載しておきます。こちらをやってから、上記をやります。
uv init sqlmesh-example
cd sqlmesh-example
uv venv
uv add sqlmesh
uv run sqlmesh init duckdb
この状態で、macros/__init__.py
のような空でも良いので Python ファイルを開くと、VSCode のステータスバーの右下に使用されている Python インタープリタが表示されていると思います。
ここをクリックすると、タイトルバー側で選択ができますので、uv venv
で作ったものを選択します。そうしないと依存関係でエラーがでたりします。
機能
Lineage
データ変換屋さんは、データウェアハウス内に View をパイ生地のように積み重ねるので、リネージが欲しいという人が多いですね。システム開発のように要件としてゴールが設定されていれば、ゴールにたどり着けるように設計して、設計に従って開発するのですが、イイ感じのデータを作るというお題だと試行錯誤が多くなるのでしょう。(ラザニア?泥団子?)
見えにくいと思います(実物でもよく見えない😂)が、前回やった初期化時に作成されるサンプルのとおりです。seed_model -> incremental_model -> full_model
レンダリング
SQLMesh は、SQL の変形を内蔵しているので、瞬時に最終形を表示できます。これは「おおっ」と思います。
エディタ
補完
プログラマーさんには、おなじみのやつです。Ctrl + Space
ホバー
モデル名にマウスをオーバーすると、モデルの説明を含むツールチップが表示されます。(重なっちゃうからなぁ。上の補完後です。)
診断
SQLMesh Linter の警告表示です。これもプログラマーさんには、おなじみですが、表示できるサンプルがなく画像は、公式のものをどうぞ。
フォーマット
これも、おなじみ。Shift + Alt + F
動画でないと分かりにくいので、差分で代用します。
コマンド
コマンドは増えてましたが、期待する結果がわからなかったので評価しませんでした。
おわりに
VSCode 拡張を使う場合は、状態データベースに DuckDB を使わないように。とあったので、PostgreSQL も準備したのですが、ここまでのマニュアルをなぞるだけなら問題は発生しないようです。
他に、VSCode がマルチプロジェクトのワークスペースで、複数の SQLMesh プロジェクトが、それぞれ VSCode のプロジェクトになっている場合、ひとつのプロジェクトで動くからといって、必ずしも他のプロジェクトでも同時に同じように動くということではなさそうです。(何が原因かは調査が必要ですが。)
SQLMesh の VSCode 拡張は、最初のリリースからまだ数か月なので、生暖かく見守ってあげたいです。
SQLMesh は、ソースツリーに VSCode 拡張の LSP(Language Server Protocol)の実装も含んでいます。(dbt は … )SQLMesh 本体のソースコードも公開されていますし、SQL 変換を行っている SQLGlot のソースコードも公開されていますので、もう少し勉強してみようと思います。
Discussion