【dbt】 dbt-snowflakeの1.8.2でSQL compilation errorになったときの対処法
hama-matcha
エラー解決IT奮闘ブログ
dbtの1.7.xが2024/11/1にEOLとなり1.8.xへとバージョンを上げる必要がでてきました。
普段のノリで pip install -U dbt-core dbt-snowflake
でアップデートできると思っていたのですが、
いざアップデート後dbtを動かすとエラーで動かない現象がありました。
そこで、バージョンを上げる際に発生したエラーとその回避方法を載せておきます。
最初は1.7.xがインストールされていることを確認します。
dbt --version
Core:
- installed: 1.7.10
- latest: 1.8.9 - Update available!
Your version of dbt-core is out of date!
You can find instructions for upgrading here:
https://docs.getdbt.com/docs/installation
Plugins:
- snowflake: 1.7.3 - Update available!
At least one plugin is out of date or incompatible with dbt-core.
You can find instructions for upgrading here:
https://docs.getdbt.com/docs/installation
この状態で1.8.xにアップデートしてみます。
pip install -U dbt-core dbt-snowflake
ここで再度 dbt --version
を叩いてみます。
dbt --version
Traceback (most recent call last):
~~~
from dbt.adapters.factory import adapter_management, register_adapter, get_adapter
ModuleNotFoundError: No module named 'dbt.adapters.factory'
これでエラーの再現ができました。
dbt-adapters
のアップデートが1.7から1.8にかけてうまくできていない。
(依存関係として一緒にアップデートできてないみたいです。)
参考:https://github.com/dbt-labs/dbt-core/issues/10135#issuecomment-2113728550
一度古いdbt-adapters
を削除して1.8.xと一緒に再インストールしてみます。
# 一度 dbt-adapters をアンインストール
pip uninstall -y dbt-adapters
# dbt-adaptersを含めて再度アップデート&インストール
pip install -U dbt-core \
dbt-snowflake \
dbt-adapters
dbt --version
を叩いて確認してみます。
dbt --version
Core:
- installed: 1.8.9
- latest: 1.8.9 - Up to date!
Plugins:
- snowflake: 1.8.4 - Up to date!
今回はdbtにおける1.7.xから1.8.xへのアップデートに関して、
そのまま pip install -U
を実行するとエラーになる現象の解決策を残しました〜
dbtのアップデートで困っている人がこの記事で問題解決できると幸いです。
以上hamaでした〜