pydantic-validation について
ETLパイプラインでレコードを検証するデータエンジニア向けの、再利用可能なPydanticパターン集です。単一レコード、バッチ、ネストされたデータの検証モデルとヘルパーを含みます。
主な機能
- 01Pydanticモデルによるレコード検証
- 02バッチ検証と無効レコードの分類
- 03ネストしたデータ構造のモデル化
- 04辞書とJSONの変換
- 05フィールド制約の適用
活用シーン
- 01ETL処理中のレコード検証
- 02APIリクエストやレスポンスの確認
- 03ネストした顧客住所データの検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ majesticlabs-dev/ majestic-marketplace --skill pydantic-validationインストール後、Claude Code で/pydantic-validationを入力して読み込まれたか確認します。
同梱ファイルscripts/validators.py
詳細
Pydantic による検証
対象読者: ETL パイプラインでレコードを検証するデータエンジニア。
目標: レコード単位の検証に再利用できる Pydantic のパターンを提供します。
スクリプト
scripts/validators.py の検証関数を実行します。
from scripts.validators import (
UserRecord,
Customer,
Order,
Address,
validate_records,
print_validation_errors,
PositiveInt,
Email
)
使用例
基本的なモデル検証
from scripts.validators import UserRecord
# Validate single record
user = UserRecord(
id=1,
email="[email protected]",
status="active",
created_at="2024-01-15",
age=25
)
print(user.email) # [email protected] (lowercased)
バッチ検証
from scripts.validators import validate_records, print_validation_errors
raw_data = [
{"id": 1, "email": "[email protected]", "status": "active", "created_at": "2024-01-01", "age": 25},
{"id": -1, "email": "invalid", "status": "bad", "created_at": "2024-01-01", "age": 200},
]
valid, invalid = validate_records(raw_data)
if invalid:
print_validation_errors(invalid)
ネストされたモデル
from scripts.validators import Customer, Address
customer = Customer(
id=1,
name="John Doe",
billing_address=Address(
street="123 Main St",
city="NYC",
postal_code="10001"
)
)
# shipping_address defaults to billing_address
フィールド制約のリファレンス
| 制約 | 例 | 説明 |
|---|---|---|
gt, ge | Field(gt=0) | より大きい/以上 |
lt, le | Field(le=100) | より小さい/以下 |
pattern | Field(pattern=r'^\d+$') | 正規表現に一致 |
min_length, max_length | Field(min_length=1) | 文字列の長さ |
JSON/Dict 変換
# Parse from dict
customer = Customer(**data_dict)
# Parse from JSON
customer = Customer.model_validate_json(json_string)
# Export to dict/JSON
data = customer.model_dump()
json_str = customer.model_dump_json()
Pydantic を使用する場合
| ユースケース | Pydantic | 代替手段 |
|---|---|---|
| API のリクエスト/レスポンス | ✓ | FastAPI との統合 |
| レコード単位の ETL | ✓ | - |
| DataFrame 全体の検証 | - | pandera |
| パイプラインの期待値 | - | Great Expectations |
依存関係
pydantic>=2.0
pydantic-settings # For config validation
コメント
Markdown 対応