Chapter 04

チュートリアル:テストとドキュメント

dbt-tokyo
dbt-tokyo
2021.12.02に更新

モデルへテストとドキュメントの追加をしよう

プロジェクトにYAMLファイルで定義を追加することでモデルが期待通りに動作しているか検証するテストを行ったり、モデルのドキュメンテーションを残すことが出来るようになります。

  1. models/schama.ymlというYAMLファイルを作成します。
  2. そこに以下のコンテンツを追加してください。
models/schema.yml
version: 2

models:
  - name: customers
    columns:
      - name: customer_id
        tests:
          - unique
          - not_null

  - name: stg_customers
    columns:
      - name: customer_id
        tests:
          - unique
          - not_null

  - name: stg_orders
    columns:
      - name: order_id
        tests:
          - unique
          - not_null
      - name: status
        tests:
          - accepted_values:
              values: ['placed', 'shipped', 'completed', 'return_pending', 'returned']
      - name: customer_id
        tests:
          - not_null
          - relationships:
              to: ref('stg_customers')
              field: customer_id
  1. 下部の入力欄にdbt testと入力しEnterを押すとテストが実行されます

どのようなスキーマテストが出来るのか

標準では以下の4つのスキーマテストが利用できます。
このスキーマテストは自分で拡張することも可能で、dbt-utils packageといった外部のパッケージ化されたものを使用することも可能です。
詳しくは「テストのドキュメント(後日公開)」を参照してください

version: 2

models:
  - name: orders
    columns:
      - name: order_id
        tests:
          - unique
          - not_null
      - name: status
        tests:
          - accepted_values:
              values: ['placed', 'shipped', 'completed', 'returned']
      - name: customer_id
        tests:
          - relationships:
              to: ref('customers')
              field: id
  • unique: order_idのカラムがユニークな値になっているか
  • not_null: order_idのカラムがnullを含んでいないか
  • accepted_values: statusのカラムが決められた4つの値(placed,shipped,completed,returned)になっているか
  • relationships: ordersにあるcustomer_idcustomersのモデルから生成されるテーブルのidというカラムの値と結合できるか

モデルのドキュメントを作る

モデルのドキュメントを定義することでチームで情報を共有することができます。

  1. 先程テストで作成したYAMLファイルを以下のように更新します
models/schema.yml
version: 2

models:
  - name: customers
    description: One record per customer
    columns:
      - name: customer_id
        description: Primary key
        tests:
          - unique
          - not_null
      - name: first_order_date
        description: NULL when a customer has not yet placed an order.

  - name: stg_customers
    description: This model cleans up customer data
    columns:
      - name: customer_id
        description: Primary key
        tests:
          - unique
          - not_null

  - name: stg_orders
    description: This model cleans up order data
    columns:
      - name: order_id
        description: Primary key
        tests:
          - unique
          - not_null
      - name: status
        tests:
          - accepted_values:
              values: ['placed', 'shipped', 'completed', 'return_pending', 'returned']
  1. 下部の入力欄にdbt docs generateと入力しEnterを押すとドキュメントの生成タスクが実行され、完了すると画面左上に「view docs」というリンクが有効になり、そこからドキュメントが見れるようになります