
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上で確認したいというケースで活用いただければと思います。
この記事が何かの参考になれば幸いです!