Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
Никогда не работал с SSIS.
Сейчас нужно написать небольшой пакет. Перебросить данные из одного MSSQL в другой.

В базе-источнике есть хранимая процедура. Запускаю её через EXECUTE, получаю данные.
Теперь до того как заливать это в таблицу надо отфильтровать, применить различные функции к полям и т.д.
Что-то не нахожу как это сделать. Нашёл только DerivedColumn. Но там нельзя фильтровать, и набор функций какой-то совсем куцый (например нет LEFT, только RIGHT).

Нет способа просто вытащить полученное из хранимки в виде селекта с Where и функциями?

Гугл не помог.

Заранее спасибо за помощь.
29 май 17, 10:37    [20519241]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
ГуЗы
Guest
slovnet,
Взять Execute sql и сделать все, что нужно.
29 май 17, 11:10    [20519362]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
ГуЗы, cпасибо.

Правильно ли понимаю что если скопировать код хранимки и вставить его после Execute sql то должно выдать результат аналогичный вызову хранимки?
Что-то не работает так.
29 май 17, 11:24    [20519418]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
ГуЗы,

Уточню вопрос.
Взял селект из хранимки, убрал из него все параметры.
Прогоняю в Management Studio - работает.

Вставляю в SSIS - не работает. Пробовал с Execute sql и без.
29 май 17, 11:57    [20519559]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 4632
slovnet
В базе-источнике есть хранимая процедура. Запускаю её через EXECUTE, получаю данные.
Теперь до того как заливать это в таблицу надо отфильтровать, применить различные функции к полям и т.д.
в DataFlow в OLE DB Source вызываете вашу процедуру,
далее используете нужные вам таски трансформации
и в конце сливаете полученное в OLE DB Destination
29 май 17, 11:57    [20519561]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 4632
slovnet
Гугл не помог.
Creating a Simple SSIS Package
29 май 17, 11:59    [20519573]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
Дедушка,

Имено так и пытался сделать.
Но вот что-то не нашёл "нужные таски трансформации".
Нашёл только DerivedColumn. Но там нельзя фильтровать, и набор функций какой-то совсем куцый (например нет LEFT, только RIGHT).
29 май 17, 12:05    [20519593]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
Дедушка
slovnet
Гугл не помог.
Creating a Simple SSIS Package


Cпасибо.
29 май 17, 12:13    [20519626]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 399
slovnet
Но вот что-то не нашёл "нужные таски трансформации".
Нашёл только DerivedColumn. Но там нельзя фильтровать...

Для фильтрации есть Conditional Split. Если у вас что-то сильно сложное - сначала вычисляете в Derived Col, затем - в Cond Split.
29 май 17, 12:36    [20519692]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
Ferdipux,cпасибо.

Но что делать с куцым функционалом этих тасков?
Вот мне например нужна функция LEFT и её там нет.
29 май 17, 13:53    [20519976]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1955
slovnet,

куда-ж вы ее дели?

К сообщению приложен файл. Размер - 6Kb
29 май 17, 13:57    [20519991]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 399
slovnet
Ferdipux,cпасибо.

Но что делать с куцым функционалом этих тасков?
Вот мне например нужна функция LEFT и её там нет.

Функция LEFT в DerivedColumn - есть.
Если вам нужно что-то совсем экзотическое - пишите собственный таск по обработке данных. Это несложно, нужно знание C# или VB.
29 май 17, 14:07    [20520031]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
ShIgor,
Странно. У меня её нет. 2008.

К сообщению приложен файл. Размер - 33Kb
29 май 17, 14:13    [20520050]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 4632
slovnet
Странно. У меня её нет. 2008.
версию нужно писать в первом посте, ф-ии LEFT в 2008 нет.
используйте substring.
29 май 17, 14:21    [20520081]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1955
slovnet, Дедушка,

а можно использовать приведение к типу нужной длины
а еще можно сделать reverse(right(reverse(...)))
а еще и скрипт написать
а проще и чаще дешевле источник поправить (в частности хранимку)
29 май 17, 14:29    [20520112]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
Дедушка,

Ну и ну! Вот так фии. Не ожидал.
Спасибо.
29 май 17, 14:32    [20520121]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
ShIgor
slovnet, Дедушка,

а можно использовать приведение к типу нужной длины
а еще можно сделать reverse(right(reverse(...)))
а еще и скрипт написать
а проще и чаще дешевле источник поправить (в частности хранимку)


Про первые три варианта тоже думал, но не предполагал что ради элементарного лефта такое надо воротить.
Насчёт подправить процедуру - в базе источника её трогать никак нельзя, ей там пользуются.
А скопипэйстить её в SSIS пытался - чёт не заработало.

slovnet

Взял селект из хранимки, убрал из него все параметры.
Прогоняю в Management Studio - работает.

Вставляю в SSIS - не работает. Пробовал с Execute sql и без.
29 май 17, 14:42    [20520169]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
bideveloper
Member

Откуда:
Сообщений: 105
slovnet, точно все правильно настроили?
Task - Execute sql task
в поле Connection нужно указать / создать подключение к вашей базе данных
в поле SQL Statement пишете EXEC имя_процедуры
29 май 17, 15:01    [20520295]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
bideveloper,

Вот Task - Execute sql task у меня не наблюдается. Видимо, тоже из-за 2008.
А в остальном сделал точно как Вы описали, только с OLE DB Source - работает.
Но вот если в OLE DB Source вместо вызова процедуры вставляю скопированый из этой процедуры селект - не работает.

К сообщению приложен файл. Размер - 43Kb
29 май 17, 15:16    [20520371]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1955
slovnet,

Execute SQL Task он в Control Flow, а не в Data Flow
29 май 17, 15:23    [20520401]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1955
slovnet,

в OLE DB Source должен быть простой запрос (select, exec) возвращающий набор записей. T-SQL скрипт не работает.
29 май 17, 15:28    [20520421]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
ShIgor,
ОК. Спасибо.
Видимо придётся скопировать процедуру в источнике и там всё отфильтровать.
29 май 17, 15:51    [20520507]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - обработка данных полученных из хранимой процедуры.  [new]
slovnet
Member

Откуда:
Сообщений: 22
Огромное спасибо всем - вы мне очень помогли, и попутно узнал много полезного.
29 май 17, 15:53    [20520518]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить