title: dbtのベストプラクティスまとめ date: 2025-01-15 authors: [tanuuuuuuu] tags: [dbt, BigQuery, データモデリング] summary: dbtを使ったデータ変換のベストプラクティスについて、実際のプロジェクト経験から学んだことをまとめました。 draft: false
はじめに
データ基盤チームでは、データ変換ツールとしてdbtを採用しています。本記事では、実際のプロジェクトで得られたベストプラクティスを紹介します。
モデルの命名規則
ステージング層
ステージング層のモデルは、データソースの構造をそのまま反映しつつ、基本的なクレンジングを行います。
-- models/staging/stg_orders.sql
with source as (
select * from {{ source('raw', 'orders') }}
),
renamed as (
select
id as order_id,
user_id,
created_at,
updated_at,
status
from source
)
select * from renamed
マート層
マート層では、ビジネスロジックを適用した分析用のデータを提供します。
-- models/marts/fct_daily_orders.sql
with orders as (
select * from {{ ref('stg_orders') }}
),
daily_orders as (
select
date(created_at) as order_date,
count(*) as order_count,
count(distinct user_id) as unique_users
from orders
group by 1
)
select * from daily_orders
テストの重要性
dbtのテスト機能を活用して、データ品質を担保しましょう。
# models/staging/schema.yml
version: 2
models:
- name: stg_orders
columns:
- name: order_id
tests:
- unique
- not_null
- name: status
tests:
- accepted_values:
values: ['pending', 'completed', 'cancelled']
まとめ
dbtを効果的に活用することで、データ変換のコードを保守しやすく、信頼性の高いものにできます。ぜひ皆さんのプロジェクトでも試してみてください。