powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
25 сообщений из 28, страница 1 из 2
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032550
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет
Есть опыт работы с Informatica PowerCented, Apache Airflow. В обоих инструментах можно создавать DataPipeline, или DAG. Имею в виду создавать зависимости между пакетами, создавать цепочки и так далее.
В SSIS же нашел только возможность сделать Job, который будет пошагово один за одним выполнять пакеты
Можно, конечно, сделать пакет, внутри которого будет вызов и ветвление других пакетов, но тогда теряются некоторые удобные возможности.

Порылся в интернете, но толкового не нашел. Знающие и опытные, подскажите, пожалуйста, какие-нибудь best practise? Может, я чего-то не нашел?
Заранее спасибо
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032552
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я,

Объясните подробнее, что вы хотите сделать.
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032554
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это DataFlow Task, потоки данных внутри пакета. Мне требуется управление на уровне пакетов
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032555
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я,

Execute Package Task ? Зависимости? Переменные?
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032563
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я,

я тоже не понял - что требуется. Вы обсуждаете своё видение решения, а не задачу, которую хотите решить.
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032567
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, возможно, вопрос звучит не явно.
Хочу выстроить поток выполнения разных пакетов.
Для примера приложил DAG из Apache Airflow. На нем run_this_first, branching, branch_a, ..., follow_branch - это отдельные задачи, в каждой из которых что-нибудь происходит с данными. В SSIS это пакеты.
Вот и хочу выстроить поток выполнения пакетов
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032568
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще один пример, из Informatica. Поток Workflow выполняет различные задачи, каждая из которых - это подобие пакета в SSIS
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032572
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я,

Берете несколько Execute Package Task и соединяете их стрелочками (появляются снизу компонента). Выделение стрелки позволяет изменять условия зависимости.
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032576
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Евгений
Новичок_я,

Берете несколько Execute Package Task и соединяете их стрелочками (появляются снизу компонента). Выделение стрелки позволяет изменять условия зависимости.

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

Сделать можно, но это не очень удобно. нет возможности перезапустить часть пакета, например, только с того пакета, который свалился
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032581
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я
Сделать можно, но это не очень удобно. нет возможности перезапустить часть пакета, например, только с того пакета, который свалился

Почему же, есть такая возможность. Либо кастомными условиями выключаете компоненты, либо Checkpoint
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032589
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Евгений
Новичок_я
Сделать можно, но это не очень удобно. нет возможности перезапустить часть пакета, например, только с того пакета, который свалился

Почему же, есть такая возможность. Либо кастомными условиями выключаете компоненты, либо Checkpoint

Не знал, спасибо
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032594
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я,

если вопрос чисто передачи данных между шагами (кроме факта усп. завершения или ошибки перед след. шагом)
то в SSIS есть свой внутренний WorkFlow, т.е. необязательно рассматривать его только как отдельный пакет/проект вставляемый в Job-ы агента.
Как альтернатива - Package Parts (которые можно использовать в разных пакетах, т.е. фактически общий шаблон reusable)
другая альтернатива если данные простые - брать последние значения параметров
(или говорят и переменных если "Raise event when variable value changes" настроено)
из SSIS логов
(если они не сбиты, обычно хранят как минимум несколько дней) - на основе уникальной системной переменной execution id
ну или чтобы сам пакет писал выходные данные в куда-нибудь базу
(хотя на волне BigData наблюдается странная тенденция переходить на диски даже для вполне структурированной информации, т.е. файлами)
а другой пакет их от туда подбирал.

по идее вот данные из этих объектов могут пригодится (если через SSISDB настроено а не через [msdb].[dbo].[sysssislog]):
[SSISDB].[catalog].[executions]
[SSISDB].[catalog].[execution_parameter_values]
[msdb].[dbo].[sysjobs]
[msdb].[dbo].[sysjobactivity]
[msdb].[dbo].[sysjobsteps]
[msdb].[dbo].[sysjobhistory]


но сейчас облачное всё стремительно развивается - там свои WorkFlow с оркестрацией/контролем Job-ов
(типа Azure Data Factory, или попроще для общей автоматизации вроде Microsoft Flow и множества прочих)
практически на каждой платформе что-то своё native есть, даже в DataBricks
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032636
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я
Имею в виду создавать зависимости между пакетами, создавать цепочки и так далее.

Если вы хотите переходить на тот или иной шаг в зависимости от некоторых результатов, то есть механизм ветвления ControlFlow. Условия перехода в зависимости от некоторых логических выражений.
Это нужно?
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032649
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я
Хочу выстроить поток выполнения разных пакетов.
В Informatica PowerCenter нельзя выстроить цепочку из пакетов (они там называются Wofkflow)
Концептуально SSIS и IPC в этом смысле одинаковы - выполнение тасков рисуется в пакетах, пакет как таск запустить нельзя (имеется в виду нативно, можно же запустить из командной строки, в обоих инструментах)
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40032653
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я
Вот еще один пример, из Informatica. Поток Workflow выполняет различные задачи, каждая из которых - это подобие пакета в SSIS
Каждая задача Informatica есть один в один задача в SSIS
В обоих продуктах есть задачи разных типов, в SSIS типов больше, в Informatica меньше
Задача типа Informatica Session (Mapping) - это задача типа DataFlow в SSIS

Продукты разные, уровень Informatica выше в бесконечность раз, тем не менее концептуально разницы нет.
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40033576
Ferdipux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Новичок_я
Можно, конечно, сделать пакет, внутри которого будет вызов и ветвление других пакетов, но тогда теряются некоторые удобные возможности.

Опишите, пожалуйста, задачу, при решении которой средствами SSIS с вызовом пакетов теряются удобные возможности. Не исключено, что вы не знаете некоторых возможностей SSIS :).
Правда, есть то что теряется - возможность проследить отдельный Execution SSIS, но это по объективным причинам.
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40033659
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ferdipux,

Самая простая теряемая возможность - это возврат данных в основной (вызывающий) пакет из вызываемого. Например, присвоить значение переменным основного пакета (количество обработанных строк и т.д.) Без знания потрохов SSIS приходится использовать посредника, что выглядит не очень элегантно.

(Со знанием - просто взял и присвоил)
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40033790
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача передачи данных между пакетами легко решается при помощи сохранения этих данных в файле или базе данных.
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40033813
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

легко, но не элегантно: вместо одного компонента (присвоения) два (запись и чтение) плюс накладные расходы на посредника(для большого рекордсета будут заметны). Дополнительные зависимости от посредника тоже не придают красоты решению.

В моем понимании элегантно - это минимум сложности, требуемых ресурсов и зависимостей.
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40033953
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Евгений,

не пойму, причем здесь красота. Данные получены, сохранены, прочитаны. Задача решена. В случае аварии пакета работа будет продолжена после его исправления даже если откажет электропитание.
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40033966
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

лично я считаю красивым (в программировании) то, что сложно улучшить, усовершенствовать.
Когда я заменяю два компонента одним (при прочих равных) - для меня это улучшение. Когда я уменьшаю количество требуемых ресурсов или зависимостей без потери функциональности - усовершенствование.

Вы пишете - данные сохранены и прочитаны. У меня эта последовательность вызывает инстинктивное отторжение: зачем читать то, что и так должно быть известно? Это выглядит некрасиво!

(Сохранение промежуточных данных параллельно основному потоку - совершенно другое дело, радует глаз)
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40035051
Ferdipux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Евгений
Самая простая теряемая возможность - это возврат данных в основной (вызывающий) пакет из вызываемого. Например, присвоить значение переменным основного пакета (количество обработанных строк и т.д.)

Есть такая проблема. Действительно, нет способа объявить что какие-то параметры пакета являются исходящими. Решается или сериализацией значения переменных "куда-то", или хаком - доступом к переменным родительского пакета из Script Task дочернего. Хак плох тем, что если дочерний пакет вызовут вне родительского - передача данных сломается, а нормального способа проверить наличие переменных или контекст изнутри процесса выполнения нет.
Как читать/писать переменные из Script Task или еще пример .
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40035060
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ferdipux
а нормального способа проверить наличие переменных или контекст изнутри процесса выполнения нет.
Э-э-э... что значит - способа нет? Отсутствует обработка ошибок (снаружи Constraint = Failure, внутри try...catch) и не работает Dts.VariableDispenser.Contains()?

P.S. Я вот свой проект довел до такого состояния, что студия не в состоянии его задеплоить дважды подряд, т.к. в процессе первого деплоя утекает слишком много памяти. Приходится перезапускать дырявую 32-битную студию...
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40035136
Ferdipux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Евгений
Отсутствует обработка ошибок (снаружи Constraint = Failure, внутри try...catch)
Ну, не так плохо - обработка ошибок таки есть :).
.Евгений
не работает Dts.VariableDispenser.Contains()
Работает, но показывает лишь, есть ли указанная переменная в наборе, заблокированном через VariableDispenser. Этот метод не показывает, есть ли такая переменная в пакете.
.Евгений
что студия не в состоянии его задеплоить дважды подряд, т.к. в процессе первого деплоя утекает слишком много памяти

Любопытно. Правда, я давно уже не делаю deploy из студии - или из Deployment Wizard, или из самописной утилиты, которая одновременно и делает меппинг параметров проекта на переменные среды SSIS. Там как-то проблемы утечки нет.
...
Рейтинг: 0 / 0
SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
    #40035149
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ferdipux
.Евгений
не работает Dts.VariableDispenser.Contains()
Работает, но показывает лишь, есть ли указанная переменная в наборе, заблокированном через VariableDispenser. Этот метод не показывает, есть ли такая переменная в пакете.
А вы точно уверены в этом?
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSIS 2016. Как создать DataPipeline / ControlFlow / DAG ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]