Pydantic для валидации данных на собеседовании Data Engineer

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем Pydantic в ETL

ETL pipelines принимают raw data из APIs, files, queues. Без validation — bad data flows downstream.

Pydantic — schema validation + type coercion. Catch errors early.

Models

from pydantic import BaseModel

class Order(BaseModel):
    id: int
    amount: float
    status: str
    created_at: datetime

# automatic validation
order = Order(**raw_dict)  # raises ValidationError если bad

При validation:

  • Type checked.
  • Required fields enforced.
  • Coerced where reasonable ("42"42).

Type coercion

class Event(BaseModel):
    timestamp: datetime
    user_id: int
    amount: Decimal

raw = {"timestamp": "2026-05-07", "user_id": "42", "amount": "100.50"}
event = Event(**raw)  # все coerced правильно

В strict mode coercion отключается.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Validators

from pydantic import BaseModel, field_validator

class User(BaseModel):
    email: str
    age: int

    @field_validator('age')
    def age_positive(cls, v):
        if v < 0:
            raise ValueError('age must be positive')
        return v

    @field_validator('email')
    def email_valid(cls, v):
        if '@' not in v:
            raise ValueError('invalid email')
        return v.lower()

Custom logic для сложных rules.

Pydantic v1 vs v2

V2 — major rewrite (2023):

  • 5-50× faster (Rust-based core).
  • Better error messages.
  • Different API (some breaking).
# v1
class Model(BaseModel):
    @validator('field')
    ...

# v2
class Model(BaseModel):
    @field_validator('field')
    ...

В новых проектах — v2. Legacy — миграция через bump-pydantic tool.

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на документации Pydantic v2.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.