Teradata VantageでData Build Tool(dbt)を使用する
概要
このチュートリアルでは、Teradata Vantage で dbt (データ構築ツール) を使用する方法を説明します。これは、オリジナルの dbt Jaffle Shop チュートリアル に基づいています。いくつかのモデルは、Vantage がサポートする SQL Dialectに合わせて調整されています。
前提条件
-
Teradata Vantageインスタンスへのアクセス。
Vantage のテスト インスタンスが必要な場合は、 https://clearscape.teradata.com. で無料でプロビジョニングできます。 -
Python 3.7、3.8、3.9、3.10、または 3.11 がインストールされていること。
dbtをインストールする
-
チュートリアル リポジトリのクローンを作成し、プロジェクト ディレクトリに移動します。
git clone https://github.com/Teradata/jaffle_shop-dev.git jaffle_shop cd jaffle_shop
-
dbt とその依存関係を管理するための新しい Python 環境を作成します。環境を有効化します。
-
dbt-teradata
モジュールとその依存関係をインストールします。dbtのコアモジュールも依存関係のあるモジュールとして含まれているので、別にインストールする必要はありません。pip install dbt-teradata
dbtを構成する
ここで、dbtを設定してVantageデータベースに接続します。以下の内容のファイル $HOME/.dbt/profiles.yml
を作成します。Teradata インスタンスに一致するように`<host>`、<user>
、<password>
を調整します。
データベースを設定する
以下の dbt プロファイルは、 |
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 プロジェクトは、アプリ データベースの生データを、分析可能な顧客データと注文データを含むディメンションモデルに変換します。
アプリからの生データは、顧客、注文、支払いで構成され、以下のエンティティリレーションシップ図が示されます。
dbt は、これらの生データ テーブルを取得して、分析ツールにより適した以下のディメンションモデルを構築します。
dbtを実行する
生データテーブルを作成する
実際には、Segment、Stitch、Fivetran、または別の ETL ツールなどのプラットフォームから生データを取得することになります。この例では、dbtの seed
機能を使用して、csvファイルからテーブルを作成します。csvファイルは、./data
ディレクトリにあります。各 csv ファイルによって 1 つのテーブルが作成されます。 dbt はファイルを検査し、型推論を行って列に使用するデータ型を決定します。
生データ テーブルを作成しましょう。
dbt seed
これで、jaffle_shop`データベースに`raw_customers
、raw_orders
、`raw_payments`の3つのテーブルが表示されるはずです。テーブルには、csvファイルからのデータを入力する必要があります。
ディメンションモデルを作成する
生のテーブルができたので、dbt にディメンション モデルを作成するように指示できます。
dbt run
では、ここで何があったのか? dbtは CREATE TABLE/VIEW FROM SELECT
SQLを使用して追加のテーブルを作成した。最初の変換では、dbtは生のテーブルを取得し、customer_orders
、order_payments
、customer_payments
と呼ばれる非正規化結合テーブルを構築しました。これらのテーブルの定義は ./marts/core/intermediate
に記載されています。
2番目のステップでは、dbtは dim_customers
と fct_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 generate
、 dbt docs serve
)。
さらに詳しく
ご質問がある場合、またはさらにサポートが必要な場合は、コミュニティ フォーラムにアクセスしてサポートを受け、他のコミュニティ メンバーと交流してください。 |