
Разбор · 08.10.2026
ETL преобразует схемы источников: агенты пишут маппинг полей и очередь отвергнутых строк
Как заказать преобразование файлов разных поставщиков и принять код по сохранности полей, причинам отказа и повторной загрузке.
Материал подготовлен машиной агентов под надзором Евгения Шилова · факты проверены 8 октября 2026
ETL готов, когда данные поставщиков приведены к общей схеме, а каждый отказ можно разобрать. Агенты пишут код, инженер задаёт правила и принимает результат.
Клиентского кейса ETL у нас нет. Опираемся на поломки машины vibecoding.ru и документацию, а файлы для приёмки покажем на учебном примере.
Не хотите разбираться сами? Внедряем ИИ в ваш бизнес: задачи без лимита, одна цена в месяц, отмена в любой момент.
1. ETL нужен контракт результата, а не совпадение колонок.
Схема описывает имена, типы и обязательность полей. ETL извлекает данные, приводит их к целевой схеме и загружает результат: так процесс определяет Сбер2В.
В учебном прайсе поставщик А пишет «Код» и цену в рублях. Поставщик Б пишет sku и цену в копейках. Скопировать оба файла в одну таблицу недостаточно.
Контракт фиксирует, что означает цена, какая у неё валюта и учтён ли налог. Задача для агента должна содержать этот результат до написания загрузчика.
Что и как мы проверяли
| Факт | Что известно | Проверено |
|---|---|---|
| Наши поломки | Первичные записи журналов vibecoding.ru от 31 июля и 10 августа 2026. Проверены потеря поля на двух из четырёх путей, отказ записи после пропущенного await и отсутствие уведомления при сигнале на панели. Это машина сайта; клиентского ETL-кейса нет | 2026-10-08 |
| Механика ETL | Официальная документация AWS Glue о маппинге и записях ошибок, Microsoft Copy Activity о сопоставлении схем, Apache Airflow о повторяемых задачах. Проверено чтением первоисточников; рекомендации по приёмке сформулированы редакцией | 2026-10-08 |
| Условия подписки | Живая страница /services: «Один проект», 250 000 ₽ в месяц, один поток, одна задача в работе, пауза в любой месяц, изменения в репозитории клиента. Это цена месяца разработки, не смета готового ETL | 2026-10-08 |
| Учебные данные | Прайсы А и Б, запись отказа и импорт 1 000 строк с 980 принятыми и 20 отказами придуманы для постановки проверки. Это не клиентские данные и не замер качества или скорости агентов | 2026-10-08 |
2. Маппинг описывает смысл поля и поведение при отказе.
Маппинг связывает поле источника с полем результата и правилом преобразования. Агент пишет эту связь в коде, инженер утверждает единицы и допустимые значения.
Пропущенное поле может исчезнуть без ошибки. Документация AWS Glue говорит прямо: apply_mapping не включает в результат поля, которых нет в маппинге.
Агенту хватит искусственного прайса с теми же форматами и ошибками. Данные клиентов у агента не нужны для написания такой проверки.
У каждого поля есть правило и причина отказа.
Учебный контракт редакции, 8 октября 2026. Валюта и учёт налога согласованы для этих источников заранее. В автоматическом сопоставлении Microsoft Copy Activity имена сравниваются с учётом регистра; смысл поля задаёт владелец данных.
3. Отвергнутая строка остаётся задачей с причиной и владельцем.
Очередь отказов нужна для исправления, а не для счётчика ошибок. Запись должна позволять найти исходную строку и понять, какое правило она нарушила.
Цена «по запросу» не превращается в ноль. В учебном контракте это отказ INVALID_PRICE; коммерческий отдел просит у поставщика числовую цену.
AWS Glue умеет выдавать записи ошибок отдельно через errorsAsDynamicFrame. Сохранить их, назначить владельца и организовать повторную обработку нужно в вашем процессе.
Отказ объясняет, что исправить и куда вернуться.
Предложенная редакцией запись отказа, 8 октября 2026. Логическая запись может занимать несколько физических строк CSV. Учебные данные не относятся к клиенту.
4. Смена схемы и сбой записи требуют разных решений.
Переименование обязательного столбца нарушает контракт всего файла. Такую загрузку останавливают до согласования нового маппинга, а не отправляют каждую строку на ручной разбор.
Ошибка значения касается отдельной строки. Сбой записи касается доставки результата: он требует повторения операции, а не объявления данных поставщика бракованными.
Потеря поля на нескольких путях стала техническим долгом загрузчика нашей машины. Проверка и откат защищают выпуск кода, но ETL ещё должен объяснять, на каком этапе отказались данные.
Поломки машины подсказывают правила проверки результата.
31.07
Описание обложки терялось на двух из четырёх путей создания новости. Поля свели в общий маппинг; тест проверяет охват всех путей.
07.08
После пропущенного await результат превратился в пустой объект; валидатор отклонил запись. Правило приёмки: дождаться результата и видеть отказ до выполнения функции записи.
10.08
Нарушение было видно на панели, уведомления не доходили. Добавили сквозную пробу ленты и канал уведомлений при отказе.
Первичные журналы машины vibecoding.ru, записи 31 июля и 10 августа 2026; сверены 8 октября. Это обработка новостей на нашем сайте, не клиентский ETL.
5. Повторная загрузка не создаёт дублей и не меняет принятые правила.
Повтор того же файла должен дать тот же результат. Apache Airflow рекомендует фиксировать вход и использовать UPSERT вместо INSERT, который при повторе может создать дубли.
У цены товара нужен ключ, согласованный с бизнесом: поставщик, артикул и дата действия прайса. Название товара для такого ключа не подходит, оно меняется.
В завершённом учебном импорте 1 000 строк = 980 принятых + 20 отвергнутых. Дубли и строки в обработке должны учитываться отдельно, если они предусмотрены вашим контрактом.
Приёмку проходят неудобные файлы и повтор после сбоя.
Предлагаемые критерии приёмки, 8 октября 2026; принцип повторяемого запуска из Apache Airflow. Числа выше учебные, не показатель производительности машины.
6. Контроль загрузки связывает правила, очередь и сигнал человеку.
Очередь без ответственного копит нерешённые строки. В ней нужны возраст отказа и следующий шаг; лимит ожидания задаёт владелец процесса.
Код завершения запуска не заменяет сверку результата. Сторож сравнивает ожидаемые файлы, принятые строки и отказы, затем зовёт того, кто может исправить причину.
В курсе агентной разработки это объясняет урок «Руль, окно и сторож». Для ETL перенос тот же: правила задают поведение, очередь показывает работу, сигнал требует действия.
Каждый сигнал заканчивается решением.
Редакционный перенос урока на ETL, 8 октября 2026. Это предложение устройства контроля, не замер внедрения у клиента.
7. В подписке покупают проверяемый маппинг в своём репозитории.
Подписка на разработку «Один проект» стоит 250 000 ₽ в месяц на 8 октября 2026. Инженер ведёт машину агентов; одна задача в работе, пауза в любой месяц.
Первой задачей можно заказать маппинг одного источника и разбор отвергнутых строк. Изменения идут в репозиторий клиента, приёмка закрепляет поведение на контрольных файлах.
Если некому утвердить смысл полей, код эту неопределённость не снимет. Начать стоит с разбора задачи ETL и списка данных, за которые отвечает ваша команда.
Заказ закрывается материалами для следующего изменения схемы.
Предлагаемый состав заказа ETL; условия тарифа сверены на /services 8 октября 2026. Цена за месяц не определяет срок готовности или общую стоимость вашего ETL.
8. Частые вопросы
Что такое ETL данных простыми словами?+
Получить данные из источников, преобразовать их по правилам и загрузить в целевую систему. Разные прайсы должны стать записями с одинаковым смыслом полей, а неверные значения получить причину отказа.
ETL и ELT отличаются только названием?+
Порядком. В ETL данные преобразуют до загрузки в целевую систему, в ELT после неё. Контракт результата и разбор отказов нужны в обоих случаях.
Агент должен определять маппинг при каждой загрузке?+
Для повторяемого импорта лучше принять версию правил и исполнять её кодом. Агент помогает написать и изменить маппинг; новый формат требует согласования, а не нового предположения на каждом запуске.
Почему не пропускать строки с ошибками?+
Пропуск допустим как утверждённая политика, если он сохраняет исходную запись и причину. Молчаливый пропуск мешает объяснить, какие данные не дошли до отчёта.
Когда отдельная разработка ETL не нужна?+
Когда существующий импорт покрывает ваши форматы и проходит контрольные файлы с отказами и повтором. Сначала проверяют его поведение, затем заказывают недостающую часть.
Источники
- Сбер2В: определение ETL и отличие от ELT · проверено 08.10.2026 — объясняющая статья
- Microsoft Learn: сопоставление схем и типов в Copy Activity · проверено 08.10.2026 — документация
- AWS Glue: apply_mapping и errorsAsDynamicFrame · проверено 08.10.2026 — документация
- Apache Airflow: повторяемый запуск задач · проверено 08.10.2026 — документация
- Потеря описания обложки: публичный разбор технического долга · проверено 08.10.2026 — наш опыт
- Машина vibecoding.ru: редакционная сверка журналов 31.07 и 10.08.2026 · проверено 08.10.2026 — наш опыт
- Подписка на разработку: тариф и условия · проверено 08.10.2026 — наш оффер
Запомнить
1. До кода утвердите смысл, типы и обязательность целевых полей.
2. Для каждого формата зафиксируйте маппинг и версию правил.
3. Отказ сохраняйте с причиной, исходной записью и владельцем.
4. Принимайте повтор файла и восстановление после сбоя без дублей.
5. Закрывайте исправленный отказ повторной обработкой и сверкой результата.