メインコンテンツまでスキップ

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

概要

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

前提条件

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

    注記

    Vantage のテストインスタンスが必要な場合は、 https://clearscape.teradata.com で無料でプロビジョニングできます

  • Python 3.73.83.93.10、または 3.11 がインストールされていること。

dbtをインストールする

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

  2. dbt とその依存関係を管理するための新しい Python 環境を作成します。

    環境を有効化します。

Run in Powershell:

  1. dbt-teradataモジュールをインストールします。dbtのコアモジュールも依存関係のあるモジュールとして含まれているので、別にインストールする必要はありません。

    注記

    dbt 依存関係

    dbt-core モジュールは、dbt-teradata のバージョン 1.7.x まで依存関係として含まれていました。 dbt-teradata 1.8.0 以降では、 dbt-core は依存関係としてインストールされません。したがって、 dbt-teradataのインストールに加えて、 dbt-core を明示的にインストールする必要があります。dbt アダプターを dbt-core から分離する方法の詳細については、https://github.com/dbt-labs/dbt-core/discussions/9171 を参照してください。

dbtを構成する

Vantage データベースに接続するように dbt を構成します。以下の場所に profiles.yml ファイルを作成します。

Run in Powershell:

次の設定を profile.yml ファイルに追加します。 <host><user><password> を Teradata Vantage インスタンスに合わせて調整します。

注記

データベースを設定する

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

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

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

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

jaffle_shop は、アプリ データベースの生データを、分析可能な顧客データと注文データを含むディメンションモデルに変換します。

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

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

dbtを実行する

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

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

jaffle_shop データベースに raw_customersraw_ordersraw_paymentsの 3 つのテーブルが表示されます。テーブルには csv ファイルからのデータが入力されているはずです。

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

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

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

データをテストする

dbt はデータに複数の変換を適用しました。ディメンション モデル内のデータが正しいことをどのように確認すればよいでしょうか。dbt を使用すると、データに対してテストを定義して実行できます。テストは ./marts/core/schema.ymlで定義されます。ファイルには、すべての関係の各列が記述されています。各列には tests キーの下に複数のテストを設定できます。たとえば、 fct_orders.order_id 列には一意の null 以外の値が含まれることが予想されます。生成されたテーブル内のデータがテスト条件を満たしていることを検証するには、次を実行します。

ドキュメントを生成する

このモデルは、ほんの数個のテーブルで構成されています。データ ソースがさらに多く、次元モデルがはるかに複雑になるシナリオを想像してみてください。生データと、Data Vault 2.0 の原則に従った次元モデルの間に中間領域を設けることもできます。入力、変換、出力を何らかの方法で文書化できれば便利ではないでしょうか。dbt では、構成ファイルからドキュメントを生成できます。

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

独自のサーバーを起動してドキュメントを参照できます。次のコマンドはサーバーを起動し、ドキュメントのランディング ページを含むブラウザー タブを開きます。

まとめ

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

さらに詳しく

注記

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

興味深い記事