Imagen

Teradata VantageでData Build Tool(dbt)を使用する

概要

このチュートリアルでは、Teradata Vantage で dbt (データ構築ツール) を使用する方法を説明します。これは、オリジナルの dbt Jaffle Shop チュートリアル に基づいています。いくつかのモデルは、Vantage がサポートする SQL Dialectに合わせて調整されています。

前提条件

  • Teradata Vantageインスタンスへのアクセス。

    Vantage のテスト インスタンスが必要な場合は、 https://clearscape.teradata.com. で無料でプロビジョニングできます。
  • Python 3.73.83.93.10、または 3.11 がインストールされていること。

dbtをインストールする

  1. チュートリアル リポジトリのクローンを作成し、プロジェクト ディレクトリに移動します。

    git clone https://github.com/Teradata/jaffle_shop-dev.git jaffle_shop
    cd jaffle_shop
  2. dbt とその依存関係を管理するための新しい Python 環境を作成します。環境を有効化します。

    • Windows

    • MacOS

    • Linux

    python -m venv env
    source env/Scripts/activate
    python3 -m venv env
    source env/bin/activate
    python3 -m venv env
    source env/bin/activate
  3. dbt-teradata モジュールとその依存関係をインストールします。dbtのコアモジュールも依存関係のあるモジュールとして含まれているので、別にインストールする必要はありません。

    pip install dbt-teradata

dbtを構成する

ここで、dbtを設定してVantageデータベースに接続します。以下の内容のファイル $HOME/.dbt/profiles.yml を作成します。Teradata インスタンスに一致するように`<host>`、<user><password> を調整します。

データベースを設定する

以下の dbt プロファイルは、 jaffle_shop`というデータベースを指します。データベースがTeradata Vantageインスタンスに存在しない場合は、作成されます。インスタンス内の既存のデータベースを指すように `schema 値を変更することもできます。

jaffle_shop:
  outputs:
    dev:
      type: teradata
      host: <host>
      user: <user>
      password: <password>
      logmech: TD2
      schema: jaffle_shop
      tmode: ANSI
      threads: 1
      timeout_seconds: 300
      priority: interactive
      retries: 1
  target: dev

プロファイル ファイルが適切に配置されたので、セットアップを検証できます。

dbt debug

デバッグ コマンドがエラーを返した場合は、 `profiles.yml`の内容に問題がある可能性があります。

Jaffle Shopウェアハウスについて

jaffle_shop 架空のEコマースストアです。この dbt プロジェクトは、アプリ データベースの生データを、分析可能な顧客データと注文データを含むディメンションモデルに変換します。

アプリからの生データは、顧客、注文、支払いで構成され、以下のエンティティリレーションシップ図が示されます。

Diagram

dbt は、これらの生データ テーブルを取得して、分析ツールにより適した以下のディメンションモデルを構築します。

Diagram

dbtを実行する

生データテーブルを作成する

実際には、Segment、Stitch、Fivetran、または別の ETL ツールなどのプラットフォームから生データを取得することになります。この例では、dbtの seed 機能を使用して、csvファイルからテーブルを作成します。csvファイルは、./data ディレクトリにあります。各 csv ファイルによって 1 つのテーブルが作成されます。 dbt はファイルを検査し、型推論を行って列に使用するデータ型を決定します。

生データ テーブルを作成しましょう。

dbt seed

これで、jaffle_shop`データベースに`raw_customersraw_orders、`raw_payments`の3つのテーブルが表示されるはずです。テーブルには、csvファイルからのデータを入力する必要があります。

ディメンションモデルを作成する

生のテーブルができたので、dbt にディメンション モデルを作成するように指示できます。

dbt run

では、ここで何があったのか? dbtは CREATE TABLE/VIEW FROM SELECT SQLを使用して追加のテーブルを作成した。最初の変換では、dbtは生のテーブルを取得し、customer_ordersorder_paymentscustomer_payments と呼ばれる非正規化結合テーブルを構築しました。これらのテーブルの定義は ./marts/core/intermediate に記載されています。 2番目のステップでは、dbtは dim_customersfct_orders のテーブルを作成しました。これらは、BI ツールに公開するディメンション モデル テーブルです。

データをテストする

dbt はデータに複数の変換を適用しました。ディメンションモデル内のデータが正しいことを確認するにはどうすればよいでしょうか? dbt を使用すると、データに対するテストを定義して実行できます。テストは /marts/core/schema.yml で定義されています。このファイルには、すべてのリレーションシップの各列が記述されています。各列には、tests キーの下に複数のテストを構成できます。例えば、 fct_orders.order_id 列には固有な非 NULL 値が含まれることが予想されます。生成されたテーブルのデータがテスト条件を満たしていることを検証するには、以下のコマンドを実行します。

dbt test

ドキュメントを生成する

このモデルは、わずか数個のテーブルで構成されています。さらに多くのデータ ソースと、より複雑なディメンションモデルがあるシナリオを想像してください。また、生データと Data Vault 2.0 の原則に従ったディメンションモデルの間に中間ゾーンを設けることもできます。入力、変換、出力を何らかの方法でドキュメント化できたら便利ではないでしょうか? dbt を使用すると、構成ファイルからドキュメントを生成できます。

dbt docs generate

これにより、./target ディレクトリにhtmlファイルが生成されます。

独自のサーバーを起動してドキュメントを参照できます。以下のコマンドはサーバーを起動し、ドキュメントのランディング ページが表示されたブラウザ タブを開きます。

dbt docs serve

まとめ

このチュートリアルでは、Teradata Vantage で dbt を使用する方法を説明しました。サンプルプロジェクトでは、生データを受け取り、ディメンションデータマートを作成します。複数の dbt コマンドを使用して、csv ファイルからテーブルにデータを入力し (dbt seed)、モデルを作成し (dbt run)、データをテストし (dbt test)、モデルドキュメントを生成して提供します (dbt docs generatedbt docs serve)。

さらに詳しく

ご質問がある場合、またはさらにサポートが必要な場合は、コミュニティ フォーラムにアクセスしてサポートを受け、他のコミュニティ メンバーと交流してください。
このページは役に立ちましたか?