0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dbt v1.9の新機能まとめ

Posted at

dbt1.9の内容まとめ

新機能と変更点

1. マイクロバッチ (microbatch incremental_strategy)

概要:
incremental_strategyにマイクロバッチが追加。従来の方法では全データを一度に処理するため、パフォーマンスに問題が発生することがあったが、マイクロバッチではデータを小さなバッチに分けて処理することで、この問題を解消できるようになった

コード例

{{ config(
    materialized='incremental',
    incremental_strategy='microbatch',
    unique_key='sales_id',
    event_time='transaction_date',
    begin='2023-01-01',
    batch_size='day',
    concurrent_batches=true,
    lookback=3
) }}

select
    sales_id,
    transaction_date,
    customer_id,
    product_id,
    total_amount
from {{ source('sales', 'transactions') }}

主な機能:

  • クエリ設計の簡素化: モデルクエリをバッチ単位で書くだけで、event_timelookbackbatch_size に基づいて自動でフィルタを生成
  • 独立したバッチ処理: 指定した batch_size に基づきデータを自動分割。各バッチは独立して処理されるため、効率が上がりクエリタイムアウトのリスクが減少。失敗したバッチのみをリトライできる
  • ターゲット再処理: CLI 引数 --event-time-start--event-time-end を使って、特定のバッチをロードすることが可能になった
    dbt run --event-time-start "2024-09-01" --event-time-end "2024-09-04"
    
  • 自動並列バッチ実行: 複数のバッチを同時に処理。dbt が並列実行可能かを自動検出し、必要に応じて concurrent_batches 設定を手動で上書き可能

対応アダプター:

  • PostgreSQL
  • Redshift
  • Snowflake
  • BigQuery
  • Spark
  • Databricks

2. スナップショットの改善 (Snapshots improvements)

概要:
スナップショット機能が強化され、設定がより柔軟で一貫性のあるものに。設定、実行、カスタマイズが簡単に。

snapshot/schema.yml
snapshots:
  - name: <snapshot_name>
    config:
      hard_deletes: 'ignore' | 'invalidate' | 'new_record'

主な改善点:

  • 新しいスナップショット仕様:
    • YAML ファイルで設定可能になり、クリーンで一貫性のある設定が実現した
  • snapshot_meta_column_names 設定:
    • 自動追加されるメタフィールド(例: dbt_valid_fromdbt_valid_to)の名前をカスタマイズ可能
    • メタデータをニーズに合わせて調整できる
  • target_schema のオプション化:
    • target_schema を省略すると、現在の環境で定義されたスキーマが使われる
  • 標準的なスキーマおよびデータベース設定のサポート:
    • 他の dbt リソースタイプと一貫性があり、環境ごとのスナップショット保存場所を指定できる
  • updated_at データ型の警告:
    • updated_at フィールドが適切なデータ型でない場合に警告が表示される
  • dbt_valid_to のカスタムインジケーター設定:
    • dbt_valid_to_current を使って dbt_valid_to をカスタムインジケーター(例: 未来の日付)に設定可能
    • デフォルトは NULL
  • ハードデリートの管理オプション (hard_deletes):
    • 削除された行の処理方法を制御
    • ignore(デフォルト)、invalidatenew_record が選べる
    • new_record を設定すると、削除時に新しいレコードが追加される

既存のスナップショットを安全に移行する方法は、Snapshot configuration migration を参照

3. state:modified の改善

概要:
state:modified の動作が向上し、誤検出や見逃しのリスクが減少した

主な改善点:

  • 環境依存の強化: プロダクションではテーブル、開発ではビューといった環境ごとに異なるロジックでも誤検出が減るように強化
  • state_modified_compare_more_unrendered_values フラグ: ソース解析中に unrendered_databaseunrendered_schema を保持し、state:modified チェック時に環境依存ロジックによる誤検出を減少。デフォルトは無効

4. レガシー動作管理 (Managing changes to legacy behaviors)

概要:
レガシー動作の変更を管理する新しいフラグが追加。既存の動作を維持しつつ新機能を導入することができる

主な機能:

  • 新しいフラグの導入: dbt_project.yml でフラグを True / False に設定し、最近の変更(デフォルトで無効)を有効化、または既存の変更(デフォルトで有効)を無効化
  • 具体的なフラグ一覧:
フラグ名 説明
state_modified_compare_more_unrendered_values 未レンダリングの設定を保持し、state:modified チェック時に比較。
skip_nodes_if_on_run_start_fails on-run-start フックが失敗した場合、選択されたすべてのノードをスキップ。
require_nested_cumulative_type_params 累積メトリクスが適切にフォーマットされていない場合にエラー。
require_batched_execution_for_custom_microbatch_strategy カスタムマイクロバッチマクロ使用時にバッチ実行を有効化。
restrict_direct_pg_catalog_access(Redshift 用) Redshift API を使うか、information_schema をクエリ。

5. 各DWH固有の機能の改善

アダプター 機能 説明
Redshift IAM ロール認証のサポート Redshift への接続に IAM ロールを使用可能。セキュリティと管理が強化。
Snowflake Iceberg テーブルフォーマットのサポート tableincrementaldynamic tables の3つのマテリアライゼーションで Iceberg フォーマットを利用可能。大規模データの管理が効率化。
BigQuery ・キーボード割り込みでのクエリキャンセル
・インクリメンタルモデルによる中間テーブルの自動削除
・ 実行中のクエリを Ctrl+C などでキャンセルできる。
・インクリメンタルモデルが使う中間テーブルを自動でドロップし、リソースを節約。
Spark ODBC ドライバー接続文字列の上書きサポート カスタム接続が可能になり、接続の柔軟性が向上。

6. Quick hits

  • データ品質の維持: コントラクトされたモデルを削除、リネーム、無効化すると、バージョン管理されたモデルではエラー、されていないモデルでは警告が出る
  • データテストのドキュメント化: データテストのドキュメントが自動生成され、管理がしやすくなった。
  • 外部キー制約での refsource の使用: 外部キー制約に refsource を使えるようになり、データモデル間の関係性が明確に
  • テストの包括・除外が可能なフラグの追加: --resource-type--exclude-resource-type フラグで、データテスト(test)やユニットテスト(unit_test)を含めたり除外したりできるようになった

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?