Вступить в клуб →
сложнаяpythonPython для ETL: загрузка, валидация и версии записей

Применение нового снимка справочника к таблице SCD2

Напишите apply_scd2(current, snapshot, load_date).

  • current — версии записей: {"id", "attrs": {...}, "valid_from", "valid_to"}, у открытой версии valid_to равно None.
  • snapshot — новый снимок источника: {"id", "attrs": {...}}.
  • Для записи из снимка без открытой версии — добавить версию с valid_from = load_date и valid_to = None.
  • Если attrs не изменились — ничего не менять. Если изменились — закрыть открытую версию (valid_to = load_date) и добавить новую.
  • Записи, отсутствующие в снимке, не трогать.
  • Вернуть новый список, отсортированный по (id, valid_from). Входные данные не менять.

заготовка решения

def apply_scd2(current, snapshot, load_date):
    # ваш код
    return None

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела