8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-09-27

著者 Adam Tworkiewicz
最終更新日 2021年12月28日

警告
本記事はTeradata CorporationのサイトGetting Startedに掲載された内容を抄訳したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。

概要

このチュートリアルでは、Teradata Vantageでdbt (Data Build Tool)を使用する方法について説明します。オリジナルのdbt Jaffle Shopチュートリアルをベースにしています。いくつかのモデルは、VantageでサポートされるSQLに調整されています。

前提条件

・Teradata Vantageインスタンスにアクセスできること。
・Python 3.7、3.8、3.9のいずれかがインストールされていること。

メモ!
Vantageの新しいインスタンスが必要な場合は、Google CloudAzureAWSのクラウドにVantage Expressという無料版をデプロイメントすることができます。また、VMwareVirtualBox、またはUTMを使用して、ローカルマシン上でVantage Expressを実行することもできます。

dbtのインストール

① チュートリアルリポジトリをクローンしプロジェクトディレクトリにcdします。

CloneRepository
git clone https://github.com/Teradata/jaffle_shop-dev.git jaffle_shop
cd jaffle_shop

② dbtとその依存関係を管理するために新しいPython環境を作成し、環境をアクティブにします。

CreatePythonEnvironment
python3 -m venv env
source env/bin/activate

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

InstallDbt
pip install dbt-teradata

dbt の構成

Vantageに接続するためにdbtを設定します。
以下の内容で $HOME/.dbt/profiles.ymlファイルを作成します。
お使いのVantage環境に合わせて<**host**>, <**user**>, <**password**> を変更してください。

データベースの設定
次の dbtプロファイルはjaffle_shopという名前のデータベースを指しています。スキーマ値を変更してご利用のTeradata Vantageのデータベースを指すようにするか、jaffle_shopデータベースを作成してご利用ください。

Profile
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
CreateJaffleShop.sql
CREATE DATABASE jaffle_shop
AS PERMANENT = 110e6,
    SPOOL = 220e6;

さて、プロファイルができたのでセットアップを検証してみましょう。

Debug
dbt debug

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

ジャッフルショップの倉庫について

jaffle_shopは架空のEコマースストアです。このdbtプロジェクトはアプリのデータベースからの生データを分析に適した顧客と注文のデータを持つディメンションモデルに変換します。

アプリからの生データは、顧客、注文、支払いで構成されており、以下のようなエンティティ関係図があります。

画像1.png

dbtはこれらの生データのテーブルから、分析ツールに適した以下のような次元モデルを構築します。

画像2.png

dbtを実行する

生データテーブルの作成

実際の業務では、Segment、Stitch、FivetranなどのETLツールから生データを取得することになります。今回は、dbtのseed機能を使って、csvファイルからテーブルを作成します。csvファイルは、./dataディレクトリにあります。dbtはファイルを検査し、型推論を行い、どのデータ型をカラムに使用するかを決定します。
では、生データのテーブルを作成してみましょう。

Seed
dbt seed

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

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

生データを持つテーブルが手に入ったので、dbtにディメンジョンモデルを作成するように指示することができます。

Run
dbt run

CREATE TABLE/VIEW FROM SELECT SQLを使用してdbtは追加のテーブルを作成しました。最初の変換でdbtは生データのテーブルを取り出し、customer_ordersorder_paymentscustomer_paymentsという非正規化された結合テーブルを作成しました。これらのテーブルの定義は、./marts/core/intermediateに記載されています。2番目のステップでは、dbtはdim_customersテーブルとfct_ordersテーブルを作成しました。これらはBIツールに公開したいディメンジョンモデルテーブルです。

データをテストする

dbtはデータに対して複数の変換を適用しました。どうすれば次元モデルのデータが正しいことを確認できるでしょうか? dbtではデータに対してテストを定義し実行することができます。テストは ./marts/core/schema.yml で定義されています。このファイルにはすべてのリレーションシップにおける各カラムが記述されています。各カラムは tests key の下に複数のテストを設定することができます。例えば、fct_orders.order_id カラムには、一意でNULLでない値が含まれることが期待されます。生成されたテーブルのデータがテスト条件を満たしていることを検証するために以下を実行します。

Test
dbt test

ドキュメントを生成する

このモデルは、ほんの数個のテーブルで構成されています。もっと多くのデータソースがありもっと複雑なディメンジョンモデルがある場合を想像してください。また、Data Vault 2.0の原則に従って、生データとディメンションモデルの間に中間領域を設けることも可能でしょう。もし、入力、変換、出力が何らかの形で文書化されていれば、便利だと思いませんか? dbtでは、設定ファイルから文書を生成することができます。

DocsGenerate
dbt docs generate

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

独自のサーバーを起動して、ドキュメントを閲覧することができます。次のコマンドは、サーバーを起動し、ブラウザーのタブにドキュメントのランディングページを開きます。

DocsServe
dbt docs serve

まとめ

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

さらに詳しく

dbt documentation

dbt-teradata plugin documentation

Teradata Vantageへのお問合せ

Teradata Vantage へのお問合せ

8
1
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
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?