Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Многократное использование ScriptComponent (SSIS)  [new]
Nika gnome
Member

Откуда:
Сообщений: 563
Добрый день!

В проекте SSIS есть источник данных - скрипт C#. В "мастере" задаю, что выходная таблица - это "Clients" с колонками field1, field2 и field3, все текстовые.

Сам скрипт общается с внешней системой по rest-API, получает в ответ XML. Этот XML сохраняет как результат в эту таблицу:
        //каждый item - это новая строка таблицы
        foreach (XmlNode item in itemlist)
        {
            ClientsBuffer.AddRow();
            //иду по всем "колонкам", перечисленным в XML
            foreach (XmlNode column in item.ChildNodes)
            {
                switch (column.Name)
                {
                    case "field1":
                        ClientsBuffer.field1 = column.FirstChild.Value;
                        break;
                    case "field2":
                        ClientsBuffer.field2 = column.FirstChild.Value;
                        break;
                    case "field3":
                        ClientsBuffer.field3 = column.FirstChild.Value;

Вопрос - как потом этот же самый скрипт повторно использовать (напр., ещё раз 10) в этом же проекте, только для вызова не "клиентов" а, скажем, "заказчиков", "поставщиков" со своими колонками?


Понятно, что через глобальную переменную я могу отправить ему тексты API-запросов. Но как мне в скрипте получать список колонок, заданных пользователем, а не перечислять вот так каждую, чтобы скрипт подстраивался под те колонки, которые заданы в "мастере"?

Второй вопрос - одна и та же функция используется несколько раз. Куда её сохранить, чтобы ей можно было повторно воспользоваться из другого скрипта?
8 июл 19, 13:54    [21922675]     Ответить | Цитировать Сообщить модератору
 Re: Многократное использование ScriptComponent (SSIS)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6936
Nika gnome,

SSIS работает в другой парадигме, не так, как Вы его пытаетесь использовать. Спроектируйте свое решение так, чтобы оно работало с потоками данных и являлось бы "диаграммой активностей". Вы же "пишете приложение", используя SSIS. Не стоит злоупотреблять возможностями скриптов. Создайте утилиту, которая скачает нужные файлы, а затем загрузите эти файлы при помощи пакета.
8 июл 19, 14:07    [21922691]     Ответить | Цитировать Сообщить модератору
 Re: Многократное использование ScriptComponent (SSIS)  [new]
msLex
Member

Откуда:
Сообщений: 6953
https://www.intertech.com/Blog/ssis-tutorial-intro-ssis-2016-package-parts/
8 июл 19, 15:26    [21922786]     Ответить | Цитировать Сообщить модератору
 Re: Многократное использование ScriptComponent (SSIS)  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1651
Но, если, все же, ответить на вопрос, как многократно использовать те же скриптовые компоненты, то путей три:
1. Вынести этот скриптовый task в отдельный пакет и вызывать его из других, передавая соответствующие параметры
2. Вынести скриптовую логику в отдельную .NET библиотеку и ее подгружать в простых скриптовых task-ах
3. Пойти в п.2. еще дальше и создать свои собственные Data-Flow или Work-Flow tasks на .NET
10 июл 19, 10:15    [21923986]     Ответить | Цитировать Сообщить модератору
 Re: Многократное использование ScriptComponent (SSIS)  [new]
Nika gnome
Member

Откуда:
Сообщений: 563
Yuri Abele
Но, если, все же, ответить на вопрос, как многократно использовать те же скриптовые компоненты, то путей три:
1. Вынести этот скриптовый task в отдельный пакет и вызывать его из других, передавая соответствующие параметры
2. Вынести скриптовую логику в отдельную .NET библиотеку и ее подгружать в простых скриптовых task-ах
3. Пойти в п.2. еще дальше и создать свои собственные Data-Flow или Work-Flow tasks на .NET

спасибо!!
10 июл 19, 11:14    [21924042]     Ответить | Цитировать Сообщить модератору
 Re: Многократное использование ScriptComponent (SSIS)  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1651
Но, по моему, в Вашем конкретном случае можно обойтись [XML Source] task-ом и Data Flow коллекции task-ов.

Или, на худой конец, парсить XML средствами MSSQL.
10 июл 19, 12:32    [21924118]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить