Процессы ETL (извлечение, преобразование, загрузка) могут быть сложными и затратными по времени. Чтобы гарантировать, что бизнес-операции не нарушатся в случае сбоя во время критических процессов ETL, важно проверять пакет как во время проектирования, так и во время выполнения. В этой статье мы рассмотрим концепцию отложенной проверки и как она может быть использована для пользы бизнесу в особых случаях.
Проверка во время проектирования
Во время проектирования критически важно проверить пакет, чтобы выявить возможные проблемы, которые могут возникнуть во время выполнения. Давайте создадим пакет в качестве примера. В области проектирования у нас есть две задачи выполнения SQL. Одна из задач имеет маленький крестик, указывающий на то, что она не прошла проверку во время проектирования. В этом случае ошибка заключалась в том, что задача не имела определенного менеджера подключений. Этот ранний сигнал предупреждает проектировщика о необходимости определить действительную строку подключения для выполнения задачи. По умолчанию свойство Delay Validation установлено в false, что означает, что все действия на области проектирования проверяются на корректность. После предоставления действительной строки подключения крестик исчезает, обеспечивая то, что задача не завершится из-за проблемы с подключением.
Важно отметить, что во время выполнения пакета ошибки, специфичные для задач выполнения SQL, такие как ошибка тайм-аута, не управляются свойством Delay Validation. Проектировщику придется настроить задачу соответствующим образом. Кроме того, установка свойства Delay Validation в true без указания строки подключения имеет смысл только в том случае, если проектировщик намеревается использовать выражения для указания деталей подключения.
Проверка во время выполнения
Во время выполнения пакет может столкнуться с ситуациями, когда проверку нужно отложить. Рассмотрим бизнес-кейс, в котором нам нужно архивировать файлы и перемещать их в папку “обработанные” после успешной передачи в область подготовки. Предположим, что ежедневные загрузки ETL, полученные из транзакционной системы, представляют собой плоские файлы с уникальным временным штампом, прикрепленным к каждому имени файла (например, имяфайла_дата.txt). Поскольку источник является переменной сущностью, имя источника может быть определено только во время выполнения, когда пакет выполняется. Это идеальный сценарий для изучения использования отложенной проверки во время выполнения.
В этом случае мы можем разработать пакет SSIS с контейнером цикла Foreach Loop (FEL), задачей файловой системы (FST) и пользовательской переменной для хранения текущих имен файлов. Цикл Foreach позволяет повторять выполнение над несколькими файлами, а задача файловой системы позволяет перемещать обработанный файл в альтернативное место, такое как папка “обработанные”. FEL настроен в режиме перечисления файлов, а пользовательская переменная хранит имя и расширение текущего обрабатываемого файла.
Когда мы вернемся в окно проектировщика, мы заметим маленький крестик на задаче файловой системы. Это не потому, что задача настроена неправильно, а потому, что пользовательская переменная, которая хранит путь источника, пуста. Переключив свойство Delay Validation на true, мы можем отложить проверку во время проектирования. Это именно то, что нам нужно для выполнения требований проектирования, так как пользовательская переменная получит свое значение из файла, обрабатываемого FEL во время выполнения. Это динамическое присваивание значения пользовательской переменной гарантирует, что пакет работает, как задумано.
Понимание отложенной проверки в SQL Server может значительно повысить эффективность и надежность процессов ETL. Путем проверки пакетов как во время проектирования, так и во время выполнения можно выявить и решить потенциальные проблемы на ранних этапах, минимизируя влияние на бизнес-операции. Кроме того, использование отложенной проверки во время выполнения позволяет гибко обрабатывать динамические сценарии. Изменяя свойство Delay Validation, проектировщики могут обеспечить адаптацию своих пакетов к изменяющимся источникам данных и требованиям.
Вот и все на данный момент. Удачного обучения!
Спасибо,
Раунак Джавар
t:@raunakjhawar