Отобразить номер итерации цикла foreach в SSIS - PullRequest
0 голосов
/ 16 февраля 2019

Мне нужно проверить номер итерации для задачи контейнера цикла foreach, которую я выполняю в Visual Studio 2017. Как мне этого добиться?

1 Ответ

0 голосов
/ 16 февраля 2019

(1) Подсчет итераций с использованием задачи выражения

Задача, доступная в SSIS 2012 +

В контейнере цикла по каждому элементу нет свойств, содержащихномер итерации .Вы можете достичь этого, создав переменную SSIS типа Int с начальным значением, равным 0.пример @[User::Counter]

Внутри контейнера цикла Foreach добавьте Expression Task со следующим выражением:

@[User::Counter] = @[User::Counter] + 1

Полезные ссылки

(2) Подсчет итераций с помощью задачи сценария

Youможно выполнить тот же процесс с помощью задачи «Сценарий», создав переменную счетчика, выделив ее как переменную ReadWrite в задаче «Сценарий», и внутри сценария добавьте аналогичную строку в основную функцию:

Dts.Variables["User::Counter"].Value = Convert.ToInt32(Dts.Variables["User::Counter"].Value) + 1;

Ссылки

Отображение данных

Существуют различные способы отображения данных.Одним из них является использование сценария задачи.Укажите, что ваша переменная @[User::Counter] находится в коллекции ReadOnly, а затем отправьте значение в журнал выполнения.

    public void Main()
    {
        bool fireAgain = false;
        string message = "{0}::{1} : {2}";
        foreach (var item in Dts.Variables)
        {
            Dts.Events.FireInformation(0, "SCR Echo Back", string.Format(message, item.Namespace, item.Name, item.Value), string.Empty, 0, ref fireAgain);
        }

        Dts.TaskResult = (int)ScriptResults.Success;
    }

. Другой подход заключается в установке свойства Name Задачи в цикле Foreach черезвыражение.Щелкните правой кнопкой мыши на Задаче в Цикле и выберите Свойства.Найдите коллекцию [+]Expressions в разделе «Свойства» и щелкните правой кнопкой мыши по эллипсам ..., а в новом окне выберите «Имя» с левой стороны и задайте для выражения правой стороны значение

"My Task " + RIGHT("000" + (DT_WSTR,3) @[User::Counter], 3)
* 1061.* Это объединяет две строки "My Task" и преобразует переменную Counter в строку, а слева добавляет ее к нулям, так что это всегда трехзначное число
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...