Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Hello world! Стоит задача разбивать данные таблицы-источника по годам и класть их в соответствующие таблицы-назначения. Например, за 2018 год данные должны попасть в T_2018, а за 2017 в T_2017. Подскажите, возможно ли это сделать используя data flow task и его expressions? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 17:59 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Yagrus2Hello world! Стоит задача разбивать данные таблицы-источника по годам и класть их в соответствующие таблицы-назначения. Например, за 2018 год данные должны попасть в T_2018, а за 2017 в T_2017. Подскажите, возможно ли это сделать используя data flow task и его expressions? Религиозные убеждения не дозволяют использовать insert select? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 18:02 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Yagrus2Hello world! Стоит задача разбивать данные таблицы-источника по годам и класть их в соответствующие таблицы-назначения. Например, за 2018 год данные должны попасть в T_2018, а за 2017 в T_2017. Подскажите, возможно ли это сделать используя data flow task и его expressions?Испоьзуйте внутри таска Conditional Split ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 19:10 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Yagrus2Hello world! Стоит задача разбивать данные таблицы-источника по годам и класть их в соответствующие таблицы-назначения. Например, за 2018 год данные должны попасть в T_2018, а за 2017 в T_2017. Подскажите, возможно ли это сделать используя data flow task и его expressions? Можно и без Expressions. Делаете в Data Flow источник - SQL from variable для выборки данных определенного года, получатель данных - Table name from variable, и в цикле крутите заполнение таблиц, модифицируя переменные через Expression. Или как alexeyvg выше предлагал - через Conditional Split. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 11:45 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
FerdipuxYagrus2Hello world! Стоит задача разбивать данные таблицы-источника по годам и класть их в соответствующие таблицы-назначения. Например, за 2018 год данные должны попасть в T_2018, а за 2017 в T_2017. Подскажите, возможно ли это сделать используя data flow task и его expressions? Можно и без Expressions. Делаете в Data Flow источник - SQL from variable для выборки данных определенного года, получатель данных - Table name from variable, и в цикле крутите заполнение таблиц, модифицируя переменные через Expression. Или как alexeyvg выше предлагал - через Conditional Split. Автору destination менять нужно, а не source. Yagrus2, Если список получателей динамический, используйте Script Component в качестве destination. Если фиксированный, то, как уже говорили выше, Conditional Split ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 13:54 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
msLexАвтору destination менять нужно, а не source. Yagrus2, Если список получателей динамический, используйте Script Component в качестве destination. Если таблицы имеют одинаковый набор колонок, их названия и тип - то вполне работает метод с именем таблицы из переменной в OLE DB Destination. Попроще будет чем программировать Script Destination, динамику тоже поддерживает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 14:29 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Ferdipux, Решил попробовать реализовать через SQL from variable Для этого использую Execute SQL Task, чтобы заполнить соответствующие переменные: Переменная Data typeiQuarterList ObjectsQuarterList ObjectВ настройках Execute SQL Task, в SQLStatment находится запрос, возвращающий такой набор: sQuarter iQuarter2014_06 2014062014_04 2014042014_05 2014052014_09 201409А на вкладке Result Set задал такое соответствие sQuarter --> sQuarterList iQuarter --> iQuarterList Работа пакета завершается ошибкой . [Execute SQL Task] Error: There is an invalid number of result bindings returned for the ResultSetType: "ResultSetType_Rowset". Подскажите, что нужно поменять в настройках? p.s. - Если запрос возвращает один столбец, то на вкладке Result Set, для Result Name нужно указать 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 15:51 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
FerdipuxmsLexАвтору destination менять нужно, а не source. Yagrus2, Если список получателей динамический, используйте Script Component в качестве destination. Если таблицы имеют одинаковый набор колонок, их названия и тип - то вполне работает метод с именем таблицы из переменной в OLE DB Destination. Попроще будет чем программировать Script Destination, динамику тоже поддерживает.Не пойму, для каждой строки из исходной таблицы нужно будет менять OLE DB Destination? По моему, вы не понимаете, в чём задача :-) Таким способом можно перебрать OLE DB Destination в цикле, но тогда придётся делать исходную выборрку столько раз, сколько будет разных OLE DB Destination, что неэффективно Так зачем замедлять, если есть специально предназначенный для разделения потока данных Conditional Split? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 16:09 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
А почему никто не предлагает сделать partitioned view, под ним таблицы с Constraints на даты? Тогда destination вообще один будет, а все записи поза вас сервер по таблицам раскидает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 21:23 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
GlebanskiА почему никто не предлагает сделать partitioned view, под ним таблицы с Constraints на даты? Тогда destination вообще один будет, а все записи поза вас сервер по таблицам раскидает.Мда, что то в голову не пришло, обычно в таких случаех это и советовали... Единственно, балк инсёрт при этом невозможен, производительность Data Flow task резко упадёт, и, соответственно, применимость такого решения зависит от объёмов данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 10:25 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Yagrus2, Вам для получения результатов запроса нужно использовать только 1 переменную типа Object. Если Connection manager типа OLEDB - смаппить эту переменную на элемент 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:11 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
FerdipuxYagrus2, Вам для получения результатов запроса нужно использовать только 1 переменную типа Object. Если Connection manager типа OLEDB - смаппить эту переменную на элемент 0. Я так и делаю. Захотелось поэкспериментировать и инициализировать две переменных. Каждая с типом Object. Но не вышло, получил ошибку: [Execute SQL Task] Error: There is an invalid number of result bindings returned for the ResultSetType: "ResultSetType_Rowset". Всегда должна быть одна переменная? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 12:15 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Yagrus2Но не вышло, получил ошибку: [Execute SQL Task] Error: There is an invalid number of result bindings returned for the ResultSetType: "ResultSetType_Rowset". Всегда должна быть одна переменная?В смысле, вы хотите положить одно значение в 2 переменных? Так нельзя, да, всегда должна быть только одна переменная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 14:08 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Нет. Запрос возвращает два столбца. Каждый столбец хотел бы положить в свою переменную типа Object ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 15:26 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Yagrus2alexeyvg, Нет. Запрос возвращает два столбца. Каждый столбец хотел бы положить в свою переменную типа ObjectНу, для типа ResultSetType_Rowset весь рекордсет возвращается как одно значение. Да и зачем это нужно, ну, будет 2 коллекции с записями, вместо одной, это же неудобно, как сопроставлять записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 15:35 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
alexeyvgНу, для типа ResultSetType_Rowset весь рекордсет возвращается как одно значение. Да и зачем это нужно, ну, будет 2 коллекции с записями, вместо одной, это же неудобно, как сопроставлять записи? А для чего тогда есть возможность создавать несколько отношений между Rowset - ом и переменными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 14:02 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Yagrus2, SQL выражение может вернуть несколько наборов данных. При этом для каждого можно определить свою переменную-объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 15:30 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Yagrus2alexeyvgНу, для типа ResultSetType_Rowset весь рекордсет возвращается как одно значение. Да и зачем это нужно, ну, будет 2 коллекции с записями, вместо одной, это же неудобно, как сопроставлять записи? А для чего тогда есть возможность создавать несколько отношений между Rowset - ом и переменными? Вообще справа внизу окошка есть кропка с надписью Help, при нажатии которой вам будет показано нечто интересное :-) В частности: "If the result set type is Full result set or XML, you must use 0 as the result set name." А возможность создавать несколько отношений между Rowset - ом и переменными предназначена для другого типа возврата - Single row В этом случае в каждую переменную записывается значение из первой строки рекордсета, из колонки, имя которой указано в Relult Name Это всё тоже описано в том же хелпе, с примерами, как потом использовать результаты. Владислав КолосовSQL выражение может вернуть несколько наборов данных. При этом для каждого можно определить свою переменную-объект.Разве? Я думал, что остальные рекордметы (и соответстенно маппинг) игнорируются. По крайней мере так описано в хелпе; впрочем, работать может и не совсем так, как описано :-) "If the Execute SQL task uses the Full result set result set and the query returns multiple rowsets, the task returns only the first rowset . If this rowset generates an error, the task reports the error. If other rowsets generate errors, the task does not report them." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 17:34 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Весь рассказ выглядит как-то сомнительно с бизнес-точки зрения. ИМХО конечно. задача разбивать данные таблицы-источника по годам и класть их в соответствующие таблицы-назначения. Например, за 2018 год данные должны попасть в T_2018, а за 2017 в T_2017 Задача- разбить или разбивать? Источника или источников? Если у вас есть таблица-источник с данными за 2017, то сколько раз вы ее "переложите" в другую? Данные за 2017 уже не станут внезапно данными за 2016, не так ли. Их достаточно ведь переложить один раз? А данные за 2018. Вы же не собираетесь каждый день копировать данные за январь 2018? Они же уже находятся в T_2018? Я к тому, что если процедура однократная, то и нечего городить сложные коды. Данные можно условно говоря и на флешке перенести. Уж те, что до 01-01-2018 точно. Написать можно и супер-корявый код, запустить его один раз и забыть. А если это ежедневный процесс, то у вас и таргет почти всегда один - T_Номер_Текущего_год. Вы же не делаете "delete from T_2018", перед там все заново "класть". Если это так, то можно по идее - Set "Data access mode" to "Table name or view name variable - fast load" - Set the variable name to User::TargetTable , где TargetTable выставлять через параметр при запуске. Ну и чтоб совсем безопасно, MERGE вместо INSERT использовать. Как-то так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 17:37 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
alexeyvg, давно не брал в руки шашки, но, насколько я помню, для разных драйверов по-разному. Для OLE DB они нумеруются с нуля и дальше. Рекордсет номер 2 будет иметь номер 1 и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 17:38 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовдавно не брал в руки шашки, но, насколько я помню, для разных драйверов по-разному. Для OLE DB они нумеруются с нуля и дальше. Рекордсет номер 2 будет иметь номер 1 и так далее. Это вы путаете колонки и рекордсеты. Для OLEDB - колонки имеют номера, начиная с 0, для ADO.NET - можно использовать имена. Как утверждает документация Microsoft , в Execute SQL Task всегда возвращается только первый рекордсет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 18:49 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
FerdipuxВладислав Колосовдавно не брал в руки шашки, но, насколько я помню, для разных драйверов по-разному. Для OLE DB они нумеруются с нуля и дальше. Рекордсет номер 2 будет иметь номер 1 и так далее. Это вы путаете колонки и рекордсеты. Для OLEDB - колонки имеют номера, начиная с 0, для ADO.NET - можно использовать имена.Да, тоже припоминаю, что в одном случае колонки по номерам, а в другом по именам. Значит, всё таки несколько рекордсетов использовать нельзя :-( Жаль, всё таки принцип наличия нескольких рекордсетов - фишка, выгодно выделявшая сиквел, но почему то нельзя это использовапть как внутри сиквела, так и в миерософтовких клиентах, типа SSIS или SSRS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 20:32 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
alexeyvgЖаль, всё таки принцип наличия нескольких рекордсетов - фишка, выгодно выделявшая сиквел, но почему то нельзя это использовапть как внутри сиквела, Кажется, в ограниченном числе случаев можно. Но только при полном совпадении по набору полей и их типу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2018, 09:24 |
|
||
|
SSIS | програмная настройка data flow task
|
|||
|---|---|---|---|
|
#18+
Yagrus2Hello world! Стоит задача разбивать данные таблицы-источника по годам и класть их в соответствующие таблицы-назначения. Например, за 2018 год данные должны попасть в T_2018, а за 2017 в T_2017. Подскажите, возможно ли это сделать используя data flow task и его expressions? Я бы не долго думая сделал бы сразу кучу потов от 2015 до 2035 года и прописал бы все назначения. Можно даже сгенерить пакет и таблицы кодом, если таких потов много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2018, 12:31 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39740878&tid=1688665]: |
0ms |
get settings: |
4ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 355ms |

| 0 / 0 |
