Поделиться через


Контейнер «цикл по элементам»

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure

Контейнер «цикл по элементам» определяет повторяющийся поток управления в пакете. Управление циклом аналогично структуре цикла For в языках программирования. В ходе каждого повтора цикла контейнер «цикл по элементам» вычисляет выражение и повторяет рабочий процесс до тех пор, пока результатом выражения не станет False.

Контейнер "Цикл" использует следующие элементы для определения цикла:

  • дополнительное выражение инициализации, в котором присваиваются значения счетчикам цикла;

  • выражение вычисления, содержащее выражение, которое используется для проверки необходимости продолжения или остановки цикла;

  • дополнительное выражение итерации, которое увеличивает или уменьшает счетчик цикла.

На следующей диаграмме показан контейнер «цикл по элементам» с задачей «Отправка почты». Если выражение инициализации равно @Counter = 0, выражение вычисления равно @Counter < 4, а выражение итерации равно @Counter = @Counter + 1, то цикл повторяется четыре раза, после чего отправляет четыре электронных сообщения.

Контейнер цикла For, повторяющий задачу четыре раза

Выражения должны быть допустимыми выражениями СЛУЖБ SQL Server Integration Services.

Для создания выражений инициализации и присваивания можно использовать оператор присваивания (=). Этот оператор не поддерживается грамматикой выражений служб Integration Services и может быть использован в контейнере «цикл по элементам» только в выражениях инициализации и присваивания. Любое выражение, использующее оператор присваивания, должно иметь синтаксис @Var = <expression>, где Var является переменной времени выполнения, а <expression> — это выражение, соответствующее правилам синтаксиса выражений Integration Services. Выражение может содержать переменные, литералы и другие операторы и функции, которые поддерживаются грамматикой выражений служб SSIS. Выражение должно возвращать тип данных, который может быть приведен к типу данных переменной.

Контейнер «цикл по элементам» может содержать только одно выражение вычисления. Это означает, что контейнер «цикл по элементам» выполняет все элементы потока управления одинаковое количество раз. Ввиду того, что контейнер «цикл по элементам» может включать другие контейнеры «цикл по элементам», в пакетах можно создавать вложенные циклы и сложные циклы выполнения.

Можно устанавливать свойство транзакции для контейнера «цикл по элементам», чтобы определить транзакцию для вложенного набора пакета потока управления. Таким образом, возможно выполнение транзакции на более детальном уровне. Например, если контейнер «цикл по элементам» несколько раз повторяет выполнение потока управления для обновления данных, можно настроить «цикл по элементам» и его поток управления с использованием транзакции, чтобы в случае неполного обновления данных обновление вообще не было произведено. Дополнительные сведения см. в разделе Транзакции служб Integration Services.

Добавление итерации для потока управления с контейнером "Цикл по элементам"

Службы Integration Services включают контейнер For Loop, элемент потока управления, который упрощает включение циклов, которые условно повторяют поток управления в пакете. Дополнительные сведения см. в статье For Loop Container.

Контейнер «цикл по элементам» проверяет условие на каждом шаге цикла и останавливается, если условие приобретает значение false. Контейнер «цикл по элементам» включает в себя выражения для инициализации цикла, указывающие условие выполнения, которое останавливает выполнение повторяющегося потока управления, а также выражения, присваивающие значение, изменяющее данное значение, с которым сравнивается условие выполнения. Условие выполнения является обязательным, выражения инициализации и присваивания являются необязательными.

Контейнер «цикл по элементам» не добавляет новых функций, а только предоставляет структуру, в которой можно построить повторяемый поток управления. Чтобы контейнер заработал, необходимо включить в контейнер «цикл по элементам» как минимум одну задачу. Дополнительные сведения см. в разделе Integration Services Tasks.

Контейнер «цикл по элементам» может включать поток управления с несколькими задачами и может содержать другие контейнеры. Добавление задач и контейнеров в контейнер «цикл по элементам» сходно с добавлением их к пакету, только перетаскивание происходит в контейнер «цикл по элементам», а не в пакет. Если контейнер «цикл по элементам» содержит более одной задачи или контейнера, их можно соединить с использованием объектов управления очередностью, как и в пакете. Дополнительные сведения см. в статье Precedence Constraints.

Добавление контейнера "Цикл по элементам" в поток управления

  1. Добавьте к пакету контейнер «цикл по элементам». Дополнительные сведения см. в разделе Добавление задачи или контейнера в поток управления или удаление их из него.

  2. Добавьте в контейнер «цикл по элементам» задачи и контейнеры. Дополнительные сведения см. в разделе Добавление задачи или контейнера в поток управления или удаление их из него.

  3. Соедините задачи и контейнеры в контейнере «цикл по элементам», используя объекты управления очередностью. Дополнительные сведения см. в разделе Соединение задач и контейнеров с помощью элементов управления очередностью по умолчанию.

  4. Задайте параметры контейнера «цикл по элементам». Дополнительные сведения см. в разделе Настройка контейнера «цикл по элементам».

Настройка контейнера "Цикл по элементам"

В процедуре описывается, как настроить контейнер «цикл по элементам» с помощью диалогового окна Редактор циклов по элементам .

  1. В SQL Server Data Tools (SSDT) дважды щелкните контейнер "Цикл" для открытия редактора циклов.

  2. При необходимости измените имя и описание контейнера «цикл по элементам».

  3. При необходимости введите выражение инициализации в текстовое поле InitExpression .

  4. Введите выражение в текстовое поле EvalExpression .

    Примечание.

    Выражение должно иметь логическое значение. Если значением этого выражения будет false, выполнение цикла останавливается.

  5. При необходимости введите выражение присвоения в текстовое поле AssignExpression .

  6. При необходимости щелкните Выражения и на странице Выражения создайте выражения свойств для свойств контейнера «цикл по элементам». Дополнительные сведения см. в разделе Добавление или изменение выражение свойства.

  7. Щелкните ОК , чтобы закрыть Редактор циклов For.

Диалоговое окно "Редактор циклов по элементам"

На странице Цикл по элементам диалогового окна Редактор циклов по элементам можно настроить цикл, в котором рабочий процесс будет повторяться до тех пор, пока заданное условие не примет значение False.

Дополнительные сведения о контейнере «цикл по элементам» и его использовании в пакетах см. в разделе For Loop Container.

Параметры

InitExpression
Необязательный параметр. Выражение для инициализации значений, используемых в цикле.

EvalExpression
Выражение, с помощью которого определяется условие завершения или продолжения цикла.

AssignExpression
Необязательный параметр. Выражение, с помощью которого каждый раз при повторении цикла изменяется условие.

Имя
Содержит уникальное имя для контейнера «цикл по элементам». Это имя используется в качестве метки для значка задачи.

Примечание.

Имена объектов в пределах пакета должны быть уникальными.

Description
Описание контейнера «цикл по элементам».

Использование выражений с контейнером "Цикл по элементам"

При конфигурировании контейнера «цикл по элементам» указанием условия выполнения, начального значения или присваиваемого значения можно использовать или константы, или выражения.

Выражения могут содержать переменные. Преимущество использования переменных состоит в том, что они могут изменяться во время выполнения, делая пакеты более гибкими и простыми в управлении. Максимальная длина выражения составляет 4000 символов.

При указании в выражении переменной ее имя должно начинаться с символа @. Например, для переменной Counterнужно использовать @Counter в выражениях контейнера "Цикл по элементам". Если для данной переменной указывается пространство имен, необходимо заключать переменную и пространство имен в скобки. Например для переменной Counter в пространстве имен MyNamespace необходимо ввести [@MyNamespace::Counter].

Переменные, используемые в контейнере «цикл по элементам», должны быть определены в области действия данного контейнера «цикл по элементам» или в области действия любого контейнера, стоящего выше в иерархии контейнеров данного пакета. Например контейнер «цикл по элементам» может использовать переменные, определенные в его области действия и определенные в области действия пакета. Дополнительные сведения см. в статье Переменные в службах Integration Services (SSIS) и разделе об использовании переменных в пакетах.

Грамматика выражений служб SSIS предоставляет полный набор операторов и функций для реализации сложных выражений, используемых для оценки, инициализации или назначения. Дополнительные сведения см. в разделе Выражения Integration Services (SSIS).

См. также

Поток управления
Выражения служб Integration Services (SSIS)