Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
SSIS 2008 R2.
Есть SSIS пакет. В нем Data Flow Task переливающий данные из некого источника в MSSQL. Поток данных делится через Multicast и заливается в несколько таблиц через SlowlyChangingDimensions.
Одна из этих таблиц ссылается на другую через Foreign Key.
Периодически происходит такое -
в одной в "child" таблицу происходит UPDATE данных до того, как появляется соотв. значение в "parent" таблице, - хотя данные эти в потоке данных есть, но они еще не успели попасть в parent таблицу, потому как перед SlowlyCnangingDimension стоит Aggregate преобразование, после чего происходит ошибка из за нарушения ссылочной целостности и пакет валится.
См. - рис.
Вопрос - есть ли способы этого избежать, кроме создания хранимки?

К сообщению приложен файл. Размер - 68Kb
5 окт 11, 12:10    [11386911]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
Glory
Member

Откуда:
Сообщений: 104751
McCar
Вопрос - есть ли способы этого избежать, кроме создания хранимки?

Расположить шаги в последовательности, когда родительские таблицы будут изменяться перед дочерними ?
5 окт 11, 12:13    [11386935]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Glory
McCar
Вопрос - есть ли способы этого избежать, кроме создания хранимки?

Расположить шаги в последовательности, когда родительские таблицы будут изменяться перед дочерними ?

Это тогда нужно будет для каждого "шага" отдельный data flow task создавать. Не есть гуд, учитывая что запрос в источнике данных довольно тяжелый.
5 окт 11, 12:20    [11386995]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
Glory
Member

Откуда:
Сообщений: 104751
McCar
Это тогда нужно будет для каждого "шага" отдельный data flow task создавать. Не есть гуд, учитывая что запрос в источнике данных довольно тяжелый.

А worklflow для чего придумали ?
5 окт 11, 12:22    [11387013]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Glory
McCar
Это тогда нужно будет для каждого "шага" отдельный data flow task создавать. Не есть гуд, учитывая что запрос в источнике данных довольно тяжелый.

А worklflow для чего придумали ?

Наверно пробел в моей SSIS грамотности обнаружился.
Потому как я не знаю что это за зверь в контексте SSIS.
Спасибо, буду учить матчасть.
5 окт 11, 12:36    [11387125]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
Glory
Member

Откуда:
Сообщений: 104751
McCar
Наверно пробел в моей SSIS грамотности обнаружился.
Потому как я не знаю что это за зверь в контексте SSIS.

Зелененькие стрелочки на вашем скриншоте
Их к объекту может приходить больше одной
5 окт 11, 12:38    [11387141]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Glory
McCar
Наверно пробел в моей SSIS грамотности обнаружился.
Потому как я не знаю что это за зверь в контексте SSIS.

Зелененькие стрелочки на вашем скриншоте
Их к объекту может приходить больше одной

Прошу прощения, можно пояснять?
Зелененькие стрелочки это потоки данных.
А по вашему объяснению я понял что вы имеете в виду логическую последовательность.
То есть можно соединить Slowly Changing Dimension scdLocation и scdItems в логическую последовательность, наподобие как мы соединяем Control Flow Items.
Но здесь идет речь о наборе трансформаций в рамках одного Data Flow Task, и я не пойму - какой набор мышедвижений тут нужен чтобы соединить их в некую последовательность..
5 окт 11, 12:59    [11387334]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
McCar
Но здесь идет речь о наборе трансформаций в рамках одного Data Flow Task, и я не пойму - какой набор мышедвижений тут нужен чтобы соединить их в некую последовательность..
Там нету управления последовательностями.
Собственно, это и невозможно - ведь в Data Flow Task задаются потоки данных, а для того, чтобы задать последовательность, нужно, чтобы какие то из потоков данных "притормозились", а это значит, что нужно сохранить весь поток в неком промежуточном буфере. Это, как вы понимаете, нереально.

Так что только либо убирать констрейны, либо импортить 2 раза, то есть сделать 2 Data Flow Task.
5 окт 11, 13:08    [11387438]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
Glory
Member

Откуда:
Сообщений: 104751
McCar
Прошу прощения, можно пояснять?
Зелененькие стрелочки это потоки данных.

Значит придется делать несколько Dataflow
5 окт 11, 13:08    [11387449]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
Senja
Member

Откуда: Москва
Сообщений: 84
Разбейте ваш data flow на два.
В первом пишите в данные в первую таблицу и в raw file destination, а во втором - читайте их оттуда, и пишите во вторую.
5 окт 11, 13:08    [11387452]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5115
McCar,
а в чём смысл наличия FK между измерениями?
5 окт 11, 13:15    [11387534]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Дедушка
McCar,
а в чём смысл наличия FK между измерениями?

Если мы говорим про олапную тему, то scdItems заливает не в таблицу для измерения, а в таблицу фактов для группы мер.
Хотя, даже если бы это были две таблицы для измерения, они могли бы по логике ссылаться друг на друга, почему бы нет, - в этом случае они были бы объеденины или в рамках одного измерения, или в рамках двух измерений которые привязаны к группе мер по reference связи.
5 окт 11, 13:31    [11387704]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
McCar
Дедушка
McCar,
а в чём смысл наличия FK между измерениями?

Если мы говорим про олапную тему, то scdItems заливает не в таблицу для измерения, а в таблицу фактов для группы мер.
Хотя, даже если бы это были две таблицы для измерения, они могли бы по логике ссылаться друг на друга, почему бы нет, - в этом случае они были бы объеденины или в рамках одного измерения, или в рамках двух измерений которые привязаны к группе мер по reference связи.

Не.. тогда уж лучше хранимку написать.. Расчитывал на свою неграмотность, - что все таки не знаю чего то из функционала SSIS, но надежда похоже не оправдалась. :-)
5 окт 11, 13:36    [11387753]     Ответить | Цитировать Сообщить модератору
 Re: SSIS Data Flow Task: паралл. загрузка данных в неск. таблиц, связанных по ссыл. цел-и.  [new]
McCar
Member

Откуда: Саратов
Сообщений: 778
Кстати, нагуглилось вдруг, прямо точно в тему:
SSIS: How to load related tables
Первый из подходов, как я понял, мне тут как раз и предложили.
6 окт 11, 18:47    [11397484]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить