Перетворення нормалізатора в Informatica з ПРИКЛАДОМ
⚡ Розумний підсумок
Нормалізаторне перетворення в Informatica — це активне перетворення, яке перетворює один рядок, що містить повторювані стовпці, на кілька рядків, а також генерує ключові стовпці, що ідентифікують кожен створений ним екземпляр.
Що таке нормалізатор трансформації?
Нормалізатор — це активне перетворення, яке використовується для перетворення одного рядка на кілька рядків і навпаки. Це розумний спосіб представлення даних більш організованим чином.
Якщо в одному рядку є повторювані дані в кількох стовпцях, то його можна розділити на кілька рядків. Іноді дані є в кількох стовпцях, що повторюються. Наприклад:
| Ім'я студента | Оцінка 9 класу | Оцінка 10 класу | Оцінка 11 класу | Оцінка 12 класу |
| Студент 1 | 50 | 60 | 65 | 80 |
| Студент 2 | 70 | 64 | 83 | 77 |
У цьому випадку стовпець з оцінками за класом повторюється у чотирьох стовпцях. Використовуючи нормалізатор, ми можемо розділити їх на наступний набір даних.
| Ім'я студента | Клас | Рахунок |
| Студент 1 | 9 | 50 |
| Студент 1 | 10 | 60 |
| Студент 1 | 11 | 65 |
| Студент 1 | 12 | 80 |
| Студент 2 | 9 | 70 |
| Студент 2 | 10 | 64 |
| Студент 2 | 11 | 83 |
| Студент 2 | 12 | 77 |
Два рядки з п'яти стовпців перетворилися на вісім рядків з трьох стовпців. Оскільки кількість рядків, що виходять з трансформації, відрізняється від кількості рядків, що входять до неї, Нормалізатор є активною трансформацією, і те саме правило застосовується до прикладу продажів, побудованого в наступному розділі.
Як використовувати нормалізаторне перетворення в Informatica
Наступні шість кроків створюють картуping який зчитує плоский файл квартальних продажів магазину та записує один цільовий рядок на квартал.
Крок 1) Створіть вихідну таблицю «sales_source» і цільову таблицю «sales_target» за допомогою сценарію та імпортуйте їх Інформатика.
Завантажте наведений вище файл Sales_Source.txt
Крок 2) Створити картуping з джерелом «sales_source» та цільовою таблицею «sales_target». Картаping Потім дизайнерське полотно містить визначення джерела, його Кваліфікатор джерела та визначення цілі.
Крок 3) У меню «Трансформація» створіть нове перетворення. У вікні «Створити перетворення»:
- Виберіть Нормалізатор як перетворення
- Введіть назву, «nrm_sales»
- Виберіть опцію створення
Вікно виглядає як на знімку екрана нижче, зі списком типів перетворення ліворуч та полем назви під ним.
Крок 4) Трансформацію буде створено, виберіть опцію «Готово». Пуста трансформація nrm_sales тепер знаходиться на полотні між кваліфікатором джерела та цільовим об'єктом.
Крок 5) Double натисніть на перетворення Нормалізатора, а потім:
- Виберіть вкладку «Нормалізатор»
- Натисніть на іконку, щоб створити два стовпці
- Введіть назви стовпців
- Встановіть кількість входжень на 4 для продажу та 0 для назви магазину
- Виберіть кнопку OK
Значення «Виникає» – це найважливіший запис на цій вкладці: воно повідомляє конструктору, скільки разів стовпець повторюється в одному вихідному рядку. Назва сховища з’являється один раз у рядку, тому його значення «Виникає» залишається рівним 0.
Стовпці будуть згенеровані в результаті перетворення. Ви побачите 4 стовпці з кількістю входжень, оскільки ми встановили кількість входжень на 4. Поряд з ними Конструктор додає згенерований ключ та згенеровані порти ідентифікатора стовпця, описані в наступному розділі.
Крок 6) Тоді в картаping:
- Пов’яжіть чотири стовпці кваліфікатора джерела чотирьох кварталів зі стовпцями нормалізатора відповідно.
- Пов’яжіть стовпець назви магазину зі стовпцем нормалізатора
- Пов’яжіть стовпці store_name і sales із нормалізатора в цільову таблицю
- Зв’язати стовпець GK_sales із нормалізатора з цільовою таблицею
Після того, як кожна ланка буде намальована, карта буде готоваping виглядає ось так.
Зберегти картуping та виконати його після створення Сесія та робочий. Для кожного кварталу продажів магазину за допомогою перетворення нормалізатора буде створено окремий рядок.
Результат нашої картиping буде як –
| Ім'я магазину | Квартал | Sales |
| ДЕЛІ | 1 | 150 |
| ДЕЛІ | 2 | 240 |
| ДЕЛІ | 3 | 455 |
| ДЕЛІ | 4 | 100 |
| MUMBAI | 1 | 100 |
| MUMBAI | 2 | 500 |
| MUMBAI | 3 | 350 |
| MUMBAI | 4 | 340 |
Вихідні дані мали повторювані стовпці, а саме: КВАРТАЛ1, КВАРТАЛ2, КВАРТАЛ3 та КВАРТАЛ4. За допомогою нормалізатора ми переставили дані, щоб вони помістилися в один стовпець КВАРТАЛЮ, і для одного вихідного запису в цільовому об'єкті створено чотири записи.
Таким чином можна нормалізувати дані та створити кілька записів для одного джерела даних.
Порти та властивості перетворення нормалізатора
Стовпці ніколи не вводяться на вкладці «Порти». Вони визначаються на вкладці «Нормалізатор», а потім Конструктор автоматично створює відповідні порти. У таблиці нижче пояснюється, що робить кожен запис і кожен згенерований порт.
| Порт або атрибут | Що вона робить |
| Зустрічається | Кількість екземплярів стовпця в одному вихідному рядку. Значення 0 позначає стовпець, що зустрічається один раз, наприклад, назва магазину. |
| рівень | Групує стовпці в ієрархію записів. Використовується для джерел COBOL і залишається на рівні 0 для плоскої структури. |
| Порти введення | Нормалізатор конвеєра створює один вхідний порт для кожного екземпляра, тому значення Occurs, що дорівнює 4, створює чотири вхідні порти. |
| Вихідний порт | Стовпець, що зустрічається кілька разів, має один вихідний порт, який повертає один рядок для кожного входження. |
| ГК_ | Згенерований ключ. Служба інтеграції збільшує цей порядковий номер щоразу, коли обробляє вихідний рядок. |
| GCID_ | Згенерований ідентифікатор стовпця. Це індекс входження, тому стовпець, який зустрічається чотири рази, повертає 1, 2, 3 або 4. |
Варто пам'ятати різницю між двома згенерованими портами, оскільки обидва виглядають як лічильники. GCID перезапускається з 1 для кожного рядка джерела, тоді як GK продовжує зростати протягом усієї сесії. На карті продажівping, GK_sales – це порт, пов'язаний з цільовим об'єктом, тому кожен з восьми рядків виводу містить окремий ключ.
Два налаштування на вкладці «Властивості» керують поведінкою цієї клавіші між запусками. Reset повертає згенероване значення ключа в кінці сеансу до значення, яке воно мало до початку сеансу. перезапуск запускає згенеровану послідовність клавіш з 1 щоразу, коли сеанс виконується, замінюючи значення послідовності, що відображається на вкладці «Порти». Повні визначення атрибутів опубліковано в Посібник з трансформації PowerCenter.
Нормалізатор VSAM проти нормалізатора конвеєра
PowerCenter постачає дві версії одного й того ж перетворення, і у наведеному вище прикладі використовується друга. Вибір між ними повністю залежить від джерела.
| Аспект | Нормалізатор VSAM | Нормалізатор трубопроводу |
| Роль на картіping | Виступає кваліфікатором джерела для визначення джерела COBOL | Розташовується будь-де в конвеєрі, нижче за течією від звичайного кваліфікатора джерела |
| Як це створюється | Створюється автоматично, коли вихідний код COBOL перетягується на картуping | Створено з меню «Трансформація», як у кроці 3 вище |
| Вхідні порти для повторюваного стовпця | Один вхідний порт для всього стовпця, що повторюється | Один вхідний порт для кожного екземпляра стовпця |
| Редагування стовпців | Змініть вихідний код COBOL та відтворіть перетворення | Редагуйте стовпці на вкладці «Нормалізатор» у будь-який час |
| Типові дані | Файли мейнфрейму з використанням речень OCCURS та REDEFINES | Повторювані стовпці в реляційних таблицях та плоских файлах |
Файл COBOL також може містити кілька типів записів в одному фізичному файлі, тому версія VSAM зчитує зошит, а не список стовпців. Для щоденного використання ETL працювати з базами даних та файлами з роздільниками, то варто звернутися до нормалізатора конвеєра.
Поширені помилки перетворення нормалізатора та як їх виправити
Більшість проблем з нормалізатором tracповертаємося до двох чи трьох налаштувань. У наведеному нижче списку перелічено ті, що найчастіше виникають під час розробки.
- Список портів не відповідає джерелу. Занадто мало або забагато вхідних портів майже завжди означає, що значення «Виникає» неправильне. Знову відкрийте вкладку «Нормалізатор» і встановіть для «Виникає» точну кількість повторюваних стовпців, а потім повторно зв’яжіть карту.ping, оскільки зміна Occurs перебудовує порти.
- Виникає в стовпці, що виникає один раз. Якщо назві магазину надати значення Occurs більше 0, множаться рядки, які ніколи не мали повторюватися. Стовпці, що повторюються один раз, залишаються на 0.
- Стовпці дат не можуть бути визначені. Вкладка «Нормалізатор» приймає лише стовпці типу «Рядок», «Н-рядок» та «Число», тому дату потрібно перенести як рядок та перетворити за допомогою перетворення типу «Вираз», перш ніж вона досягне цілі.
- Кількість рядків у журналі сеансу відображається неправильно. Зчитування двох вихідних рядків та запис восьми цільових рядків є правильною поведінкою для значення Occurs, що дорівнює 4, а не дефектом. Нормалізатор активний саме тому, що ці показники відрізняються.
- Згенеровані ключі повторюються або перестрибують між запусками. Це пара «Скидання» та «Перезапуск» на вкладці «Властивості». «Перезапуск» примусово повертає послідовність до 1 для кожного сеансу, що рідко потрібно, коли ключ потрапляє до таблиці сховища.
- Зміни на вкладці «Порти» не збережуться. Порти генеруються, а не створюються. Кожна зміна стовпця належить вкладці «Нормалізатор», а для нормалізатора VSAM зміна належить до самого вихідного коду COBOL.
Коли потрібно розділити кілька повторюваних груп одночасно, зазвичай чистіше використовувати один нормалізатор на групу та об'єднувати результати далі, ніж перевантажувати одне перетворення. Якщо вимога працює в іншому напрямку, згортаючи багато рядків в один, Трансформація агрегатора є правильним інструментом.







