🤖
【dbt Docs】Building a dbt Project - Packages
Packages
What is a package?
ソフトウェアエンジニアは、コードをライブラリにモジュール化することがよくあります。これらのライブラリは、プログラマーが活用して操作するのに役立ちます。プログラマーは、独自のビジネスロジックに集中できる。
How do I add a package to my project?
(プロジェクトにパッケージを追加するにはどうすればいい?)
-
packages.yml
をトップレベルディレクトリ(dbt_project.yml
と同じ階層)に作成する。
packages.yml
packages:
- package: dbt-labs/snowplow
version: 0.7.0
- git: "https://github.com/dbt-labs/dbt-utils.git"
revision: 0.1.21
- local: /opt/dbt/redshift
-
dbt deps
をつかって、パッケージをインストールする。dbt_packages
ディレクトリにインストールされる。このディレクトリは、Gitには上がらない(ignore
される)
How do I specify a package?
(パッケージを指定するにはどうすればいい?)
Hub packages (recommended)
dbt Hub を使うのが良き
packages.yml
packages:
- package: dbt-labs/snowplow
version: 0.7.3 # version number
バージョンは指定したほうがいい。(下記のように範囲的に指定することもできる)
packages.yml
packages:
- package: dbt-labs/snowplow
version: [">=0.7.0", "<0.8.0"]
dbt Hubを介して入れたほうがいい。パッケージの依存関係も自動で判別してくれるし、同じパッケージを重複していれる必要もない。
Prerelease versions
デフォルトでは正式版までしか入らない。プレリリースのものを試したいこともあるだろうから、できる方法はある
プレリリースのバージョニング 0.4.5a2
みたいなのを指定する
packages:
- package: brooklyn-data/dbt_artifacts
version: 0.4.5a2
install-prerelease
フラグを有効にする
packages:
- package: brooklyn-data/dbt_artifacts
version: [">=0.4.4", "<0.4.6"]
install-prerelease: true
Git packages
packages.yml
packages:
- git: "https://github.com/dbt-labs/dbt-utils.git" # git URL
revision: 0.1.21 # tag or branch name
リリース名を指定して、パッケージを特定のリリースに「固定」することを強くお勧めします。
Private packages
SSH Key Method
packages.yml
packages:
- git: "git@github.com:dbt-labs/dbt-utils.git" # git SSH URL
Git Token Method
環境変数を介してGitTokenを渡すことができる。
packages.yml
packages:
- git: "https://{{env_var('DBT_ENV_ECRET_GIT_CREDENTIAL')}}@github.com/dbt-labs/awesome_repo.git" # git HTTPS URL
他にも色々やり方はあるみたい・・・
Project subdirectories
packages.yml
packages:
- git: "https://github.com/dbt-labs/dbt-labs-experimental-features" # git URL
subdirectory: "materialized-views" # name of subdirectory containing `dbt_project.yml`
Local packages
packages:
- local: /opt/dbt/redshift # use a local path
What packages are available?
(どんなパッケージがある?)
dbt Hub で調べるといいです
Advanced package configuration
Updating a package
packages.yml
を更新しても、パッケージは自動更新されない。dbt deps
コマンドでパッケージを更新する。
Uninstalling a package
packages.yml
から削除しても、自動的には削除されない。dbt_packages/
ディレクトリに残る。もししっかり削除したい場合は
-
dbt_packages/
ディレクトリを削除する -
dbt clean
を実行し、パッケージを削除、その後dbt deps
を実行する
Configuring packages
dbt_project.yml
ファイルからパッケージ内のモデルやシードを設定することができます。
dbt_project.yml
vars:
snowplow:
'snowplow:timezone': 'America/New_York'
'snowplow:page_ping_frequency': 10
'snowplow:events': "{{ ref('sp_base_events') }}"
'snowplow:context:web_page': "{{ ref('sp_base_web_page_context') }}"
'snowplow:context:performance_timing': false
'snowplow:context:useragent': false
'snowplow:pass_through_columns': []
models:
snowplow:
+schema: snowplow
seeds:
snowplow:
+schema: snowplow_seeds
Discussion