🐕
GitHub Actionsでdbtを定期実行する ことはじめ
はじめに
dbt cliを使用していると定期実行をどのように実装するか悩むのかなと思います。実行方法は数多ありますが、今回はシンプルなGitHub Actionsを使用していきます。
やりたいこと
- dbt の models 配下のクエリをGitHub Actionsを使用して定期実行したい
コード
name: schedule_dbt_job
on:
workflow_dispatch:
schedule:
# run at 7AM every single day
# https://crontab.guru <-- for generating CRON expression
- cron: "0 7 * * *"
jobs:
schedule_dbt_job:
name: schedule_dbt_job
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@master
- uses: actions/setup-python@v1
with:
python-version: "3.8.x"
- name: Install dependencies
run: |
pip install dbt-snowflake
python3 -m pip install --upgrade pip
- name: set profiles
run: |
mkdir ~/.dbt
cat << EOF > ~/.dbt/profiles.yml
dbt_demo:
target: dev
outputs:
dev:
type: snowflake
account: ${{ secrets.SF_ACCOUNT }}
database: ${{ secrets.SF_DATABASE }}
warehouse: ${{ secrets.SF_WAREHOUSE }}
schema: ${{ secrets.SF_SCHEMA }}
role: ${{ secrets.SF_ROLE }}
threads: 8
user: ${{ secrets.SF_USERNAME }}
password: ${{ secrets.SF_PASSWORD }}
EOF
cat ~/.dbt/profiles.yml
# dbt related commands here - run use --target prod/dev to run for specific environments
- name: Run dbt models
working-directory: dbt_demo
run: |
dbt debug
dbt run
課題
今後は下記を主に改善したいです
- profiles.ymlに書き込む内容をsecretsを使用したい
- 解決済み) secretsの設定で可能
- profiles.ymlの認識がうまくいっておらず、exportで一時対応をしていることを解決したい
- 解決済み) プロジェクトは配下にサンプルのprofiles.ymlを置いていたためそちらを見に行っていた
- dbt docsをgithub pagesでホストしたい
- 監視周りも組み込んでいきたい
Discussion