На даний момент я створюю ETL для нашого сховища даних. Ми використовуємо SSIS 2008, але ми стикаємося з проблемами, найбільшою з яких є складність у повторному використанні компонентів. У нас є окремі пакети для кожної таблиці, і кожен пакунок бере як вхід ряд змінних з батьківського пакету. Коли ми вносимо зміни до цих змінних вхідних даних, від нас вимагається перейти до кожного пакету (у нас 15 чи більше, але це число значно зросте) та змінити пакет для усунення цих змін. Є й інші проблеми, зокрема неможливість запуску довільного SQL для нашого видобутку, погані можливості ведення журналу тощо.
Весь цей процес був би набагато більш надійним, якби існував спосіб розробити наші ETL в коді, що дозволить повторно використовувати код, загальні бібліотеки, краще тестування одиниць тощо. Чи існує фактично стандартна мова / API ETL для SQL Server? Я намагаюсь максимально уникати інструментів GUI.
Редагувати: Я мушу зазначити свою історію. Я не DBA і не маю офіційного (або неофіційного) навчання DBA, я в основному розбирався в цьому, коли я проходив, тому є ймовірність, що я намагаюся робити невідповідні речі з SSIS або наближатися до цього ETL проект з неправильного кута. Крім того, я зараз працюю в державному управлінні, тому будь-які рішення, які потребують придбання нового програмного пакету, не входять у сферу можливості.
Ось одне із наших завдань. Ми використовуємо єдиний пакет SSIS для завантаження кожної таблиці на нашому складі. Кожен пакунок Факт і Пакет розмірів, як правило, однакові, вони лише відрізняються
- Витяги з вихідної бази даних
- Маніпуляції в потоці даних
- Зливається в таблицю призначення
Що я хотів би зробити (що мені здається складно зробити в SSIS)
- Завантажте запит на вилучення з текстового файлу. Коли розробники пишуть і тестують свої запити на вилучення, я не повинен будь-яким чином маніпулювати їх запитом, перш ніж SSIS запускає його, і я не повинен вирізати і вставити запит в об’єкт Джерела БД.
- Тестуйте кожен компонент окремо. Я повинен мати можливість протестувати весь процес ETL для окремої таблиці окремо, незалежно від інших навантажень таблиці.
- Внесіть зміни в загальну логіку в одному місці, не потрібно редагувати кожен окремий пакет. Кожен пакет завантажує дані в таблиці аудиту однаково, якщо я хочу змінити дані, які завантажуються аудитом, я не хочу редагувати всі 15 пакетів (ця кількість з часом стає набагато більшою).
Увесь процес відчуває, що це було б набагато простіше у виконанні та більш надійним, якщо це зробити програмно при правильному використанні спільного коду.