
dbt Projects on SnowflakeのDocs generateを使用しSnowflakeのStreamlitで確認してみた
かわばたです。
タイトルの通りでありますが、dbt Projects on SnowflakeのDocs generateを使用しSnowflakeのStreamlitで確認してみました。
現状の確認方法としては下記が主流かと思っております。
- Gitリポジトリと紐づけてローカルで確認する
- GitHub ActionsとPagesを使用する。
なんとかdbtのdocsをSnowflake上で確認できれば良いと思い試してみました。
【参考資料】
こちらそのまま流用させていただいております。
dbt Projects on Snowflakeの設定は下記を参考にしました。
対象読者
dbt docsをSnowflake上で確認したい方dbt docsでどのようなものが確認できるか気になる方
検証環境
- Snowflakeトライアルアカウント
事前準備
下記資料を参考にワークスペースとGitHubの連携をしています。
また、データはdbtのサンプルでも使用されているjaffle_shopを使用しています。
Streamlitまでの流れ
Docs generateを実行- GitHubへプッシュ
- GitHub連携済みのStreamlitでプル
- Streamlitの確認
Docs generate
各種モデルを作成し、下記のようにDocs generateをプルダウンメニューから選択します。

実行ボタンの横の▽ボタンを押下すると下記ポップアップします。
表示されたエディターに下記入力します。
--static

--staticを使用すると、ドキュメントをクラウドストレージプロバイダーでホスティングするための静的ページとして生成することができます。

上記のようにtargetフォルダにstatic_index.htmlが作成されます。
GitHubへプッシュ
変更タブをクリックし、プッシュを押下しGitHubへ最新情報を反映させます。


Streamlit
Streamlitについて、この記事では詳細には触れないため、下記弊社のStreamlitに関する記事をご確認いただければと思います。
Streamlitの画面から「+ Streamlitアプリ」ボタンを押下しStreamlitアプリを作成していきます。

- Gitリポジトリを接続します。

dbt Projects on SnowflakeでGitHub連携した時と同様に記載していきます。

- 下記のようにGitリポジトリが反映されます。リポジトリ内に
streamlit_app.pyを作成しています。

streamlit_app.pyの内容は下記になります。
import json
import streamlit as st
import streamlit.components.v1 as components
# HTMLファイルのパス
html_file_path = 'target/static_index.html'
st.set_page_config(
page_title="dbt App",
page_icon="🧊",
layout="wide",
initial_sidebar_state="expanded",
menu_items={
'Get Help': 'https://dev.classmethod.jp/',
'Report a bug': "https://classmethod.jp/",
'About': "Classmethod,Inc"
}
)
st.markdown(
r"""
<style>
.stDeployButton {
visibility: hidden;
}
</style>
""", unsafe_allow_html=True
)
# StreamlitでHTMLを表示
with open(html_file_path, 'r', encoding='utf-8') as file:
html_content = file.read()
components.html(html_content, height=1024, scrolling=False)
dbt docs
下記のような形でStreamlitのアプリ上でdbt docsを確認することができました。

リネージも確認できます。

検索も問題なさそうです。

下記のようなテストに関する項目を押下すると、エラーとなってしまいます。


ページの下部に移動するとエラーとなるページもあるため注意が必要です。
【小ネタ】Docs generateのデフォルト値で出来ないかの検討
結論から言うと、私の環境では実現できませんでした。
下記記事にあるmanifest.json,catalog.jsonをhtmlにインサートして単一ファイルを生成してくれるコードを使用してみましたが、manifest.json,catalog.jsonがうまく読み込むことができませんでした。
index.html,manifest.json,catalog.jsonを使用すれば、dbt docs generateコマンドの--staticオプションなしでも可能だと考えましたが、私の環境では難しかったです。
もし出来た方がいらっしゃいましたらご連絡いただけると嬉しいです!
最後に
dbt Projects on SnowflakeではSnowflake上でdbt docsを直接Snowflake上で確認する機能は現時点ではありませんが、プレビュー版のため、近いうちに何らかの方法で確認できるようになるのではないかと期待しています。
当記事の方法では確認できない項目もあるため、Snowflake上で確認したいというケースで活用いただければと思います。
この記事が何かの参考になれば幸いです!







