dbtを使った数値型カラムのDATE型変換とテーブル自動生成の手順

データパイプラインで、数値型カラムからDATE型へ変換し、常に最新の変換済みデータを持つテーブルを維持するシステム構築について、dbtでの実装方法を紹介します。本記事では、dbtプロジェクトのセットアップ、データ型変換、そして変換済みデータを保持するためのテーブル生成までの流れを解説します。

目次

はじめに

データパイプラインで、数値型カラムからDATE型へ変換し、常に最新の変換済みデータを持つテーブルを維持するシステム構築について、dbtでの実装方法を紹介します。本記事では、dbtプロジェクトのセットアップ、データ型変換、そして変換済みデータを保持するためのテーブル生成までの流れを解説します。

前提設定

以下のような構成で進めます。

  • 元データのスキーマとテーブル名source_data_schemaスキーマにtransaction_infoテーブル
  • 変換後のビューとテーブル:ビューを作成し、それを基に永続的なテーブルを生成

ディレクトリ構造

dbtプロジェクト全体のディレクトリ構造は以下のようになります

my_new_project/
├── dbt_project.yml # プロジェクト設定ファイル
├── models/
│ ├── schema.yml # ソース設定ファイル
│ ├── transaction_info_transformed_view.sql # 変換用のビュー
│ └── transaction_info_final_table.sql # 最終テーブル生成モデル
└── other folders (seeds, tests, macros) # 他の補助ディレクトリ

1. dbt プロジェクトのセットアップ

schema.ymlの設定

まず、schema.ymlファイルを作成して、Snowflake内のテーブルをsourceとして設定します。

models/schema.ymlの内容
version: 2

sources:
- name: data_warehouse # データベース名
schema: source_data_schema # スキーマ名
tables:
- name: transaction_info # 元テーブル名

 

dbt_project.yml の設定

次に、プロジェクト設定ファイルのdbt_project.ymlに必要な構成を記述します。

dbt_project.yml の内容

 

name: 'my_new_project'

config-version: 2

profile: 'my_new_project'

model-paths: ["models"]
seed-paths: ["seeds"]
test-paths: ["tests"]
analysis-paths: ["analysis"]
macro-paths: ["macros"]

target-path: "target"
clean-targets:
- "target"
- "dbt_modules"
- "logs"

models:
my_new_project:
+materialized: table # デフォルトの素材化をテーブルに設定
transaction_info_transformed_view:
+materialized: view
transaction_info_final_table:
+materialized: table

2. 数値型からDATE型への変換

数値型カラムをDATE型に変換するビューを作成します。transaction_info_transformed_viewビューが変換を担当し、DATE型のカラムを持つデータセットを生成します。

models/transaction_info_transformed_view.sql
WITH source AS (
SELECT *
FROM {{ source('data_warehouse', 'transaction_info') }}
)

SELECT
TO_DATE(TO_CHAR(TRANSACTION_MONTH), 'YYYYMM') AS TRANSACTION_MONTH_DATE,
TO_DATE(TO_CHAR(RECORD_DATE), 'YYYYMM') AS RECORD_DATE_DATE,
*
FROM source

3. 変換されたデータを永続化するテーブルの生成

変換されたデータを持つtransaction_info_transformed_viewビューを基に、transaction_info_final_tableというテーブルを作成します。

models/transaction_info_final_table.sql
SELECT *
FROM {{ ref('transaction_info_transformed_view') }}

 

この設定により、dbt runを実行するたびに、変換済みデータがtransaction_info_final_tableテーブルに保存され、最新のデータが常に保持されるようになります。

 

実行手順

設定が整ったら、以下のコマンドでモデルの実行が可能です。

dbt test --テスト

dbt run --実行

このコマンドにより、DATE型に変換されたカラムを持つビューと、そのデータを永続化するテーブルが自動的に生成されます。

おまけ: dbt Power User 拡張機能

効率的なdbtプロジェクト管理には、VS Codeのdbt Power User拡張機能を活用するのが便利です。この拡張機能により、dbt testコマンド実行時に直接テーブル内容のクエリ結果やリネージの可視化が可能です。型変換やデータ構造を素早く確認でき、特にテストやデバッグ作業が容易になります。

クエリ結果の見方について、select句を選択して「Command」+ ENTERでターミナルの「QUERY RESULTS」から確認できます。

リネージの可視化は「LINEAGR」から確認できます。

まとめ

この記事では、dbtを用いて数値型のデータをDATE型に変換し、最新の変換済みデータを持つテーブルを生成する方法を紹介しました。これにより、変換作業の効率化とデータの最新性が維持できます。

CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次