data-validation について
独自のビジネスルールで検証パイプラインを構築するデータエンジニア向けのスキルです。再利用可能なチェックと pandas によるパイプラインのパターンを提供し、用途に応じた専用フレームワークの選択も案内します。
主な機能
- 01重複と参照整合性の検査
- 02日付範囲と許可値の検証
- 03チェックを組み合わせた検証パイプライン
- 04設定駆動の検証実行
- 05スキーマ・NULL・一意性のアサート
活用シーン
- 01データパイプラインの業務ルールを検証
- 02ETL 処理中にレコードを検査
- 03pytest テストにデータ品質アサートを追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ majesticlabs-dev/ majestic-marketplace --skill data-validationインストール後、Claude Code で/data-validationを入力して読み込まれたか確認します。
同梱ファイルscripts/validators.py
詳細
データ検証
対象読者: 検証パイプラインを構築するデータエンジニア。
目標: カスタムビジネスルールの検証パターンを提供します。
フレームワーク固有のスキル:
pydantic-validation- Pydantic によるレコード単位の検証pandera-validation- DataFrame スキーマの検証great-expectations- パイプラインの期待値とモニタリング
スクリプト
scripts/validators.py の検証関数を実行します:
from scripts.validators import (
ValidationResult,
DataValidator,
validate_no_duplicates,
validate_referential_integrity,
validate_date_range,
validate_value_in_set,
run_validation_pipeline,
validate_with_schema_version,
assert_schema_match,
assert_no_nulls,
assert_unique,
assert_values_in_set
)
フレームワークの選択
| 使用例 | フレームワーク |
|---|---|
| API リクエスト/レスポンス | Pydantic |
| レコード単位の ETL | Pydantic |
| DataFrame の検証 | Pandera |
| DataFrame の型ヒント | Pandera |
| パイプラインのモニタリング | Great Expectations |
| データウェアハウスのチェック | Great Expectations |
| カスタムビジネスルール | カスタム関数(このスキル) |
使用例
基本的な検証
from scripts.validators import validate_no_duplicates, validate_referential_integrity
# Check duplicates
result = validate_no_duplicates(df, cols=['id'])
if not result.passed:
print(f"Error: {result.message}")
print(result.failed_rows)
# Check referential integrity
result = validate_referential_integrity(df, 'user_id', users_df, 'id')
検証パイプライン
from scripts.validators import DataValidator, validate_no_duplicates, validate_date_range
validator = DataValidator()
validator.add_check(lambda df: validate_no_duplicates(df, ['id']))
validator.add_check(lambda df: validate_date_range(df, 'created_at', '2020-01-01', '2025-12-31'))
results = validator.validate(df)
if not results['passed']:
for check in results['checks']:
if not check['passed']:
print(f"Failed: {check['message']}")
設定駆動型パイプライン
from scripts.validators import run_validation_pipeline
config = {
'unique_columns': ['id'],
'date_ranges': {
'created_at': ('2020-01-01', '2025-12-31'),
'updated_at': ('2020-01-01', '2025-12-31')
}
}
clean_df, results = run_validation_pipeline(df, config)
テストのアサーション
from scripts.validators import assert_schema_match, assert_no_nulls, assert_unique
# In pytest
def test_data_quality():
assert_schema_match(df, {'id': 'int64', 'email': 'object'})
assert_no_nulls(df, ['id', 'email'])
assert_unique(df, ['id'])
依存関係
pandas
コメント
Markdown 対応