Перетворення нормалізатора в Informatica з ПРИКЛАДОМ

⚡ Розумний підсумок

Нормалізаторне перетворення в Informatica — це активне перетворення, яке перетворює один рядок, що містить повторювані стовпці, на кілька рядків, а також генерує ключові стовпці, що ідентифікують кожен створений ним екземпляр.

  • 🔁 Рядки поза стовпцями: Чотири стовпці квартальних продажів в одному вихідному рядку стають чотирма цільовими рядками, по одному для кожного кварталу.
  • 🔢 Виникає, що керує всім: Значення «Виникає» на вкладці «Нормалізатор» визначає, скільки вхідних портів і скільки вихідних рядків створюється.
  • 🧪 Приклад роботи: Шість картping Кроки дизайнера переміщують плоский файл sales_source у таблицю sales_target за допомогою перетворення nrm_sales.
  • 🔑 Згенеровані порти: GK_ повертає зростаючий ключ для кожного вихідного рядка, тоді як GCID_ повертає індекс входження від 1 до N.
  • 🗂️ Два смаки: Нормалізатор VSAM зчитує вихідні коди COBOL, тоді як нормалізатор конвеєра обробляє реляційні та плоскі файлові дані.
  • ⚠️ Поширена пастка: Встановлення значення «Виникає» для стовпця, що виникає один раз, або залишення його значення на нуль для стовпця, що повторюється, розриває список портів.

Перетворення нормалізатора в 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 Потім дизайнерське полотно містить визначення джерела, його Кваліфікатор джерела та визначення цілі.

картаping Дизайнерське полотно з визначенням sales_source, його кваліфікатором Source та таблицею sales_target

Крок 3) У меню «Трансформація» створіть нове перетворення. У вікні «Створити перетворення»:

  1. Виберіть Нормалізатор як перетворення
  2. Введіть назву, «nrm_sales»
  3. Виберіть опцію створення

Вікно виглядає як на знімку екрана нижче, зі списком типів перетворення ліворуч та полем назви під ним.

Створити вікно трансформації з вибраним нормалізатором та введеним ім'ям nrm_sales

Крок 4) Трансформацію буде створено, виберіть опцію «Готово». Пуста трансформація nrm_sales тепер знаходиться на полотні між кваліфікатором джерела та цільовим об'єктом.

картаping полотно, що показує щойно створене перетворення нормалізатора nrm_sales, поки що без стовпців

Крок 5) Double натисніть на перетворення Нормалізатора, а потім:

  1. Виберіть вкладку «Нормалізатор»
  2. Натисніть на іконку, щоб створити два стовпці
  3. Введіть назви стовпців
  4. Встановіть кількість входжень на 4 для продажу та 0 для назви магазину
  5. Виберіть кнопку OK

Значення «Виникає» – це найважливіший запис на цій вкладці: воно повідомляє конструктору, скільки разів стовпець повторюється в одному вихідному рядку. Назва сховища з’являється один раз у рядку, тому його значення «Виникає» залишається рівним 0.

Вкладка «Нормалізатор» вікна «Редагувати трансформації» зі стовпцем «Продажі», встановленим на чотири екземпляри, та назвою магазину, встановленим на нуль

Стовпці будуть згенеровані в результаті перетворення. Ви побачите 4 стовпці з кількістю входжень, оскільки ми встановили кількість входжень на 4. Поряд з ними Конструктор додає згенерований ключ та згенеровані порти ідентифікатора стовпця, описані в наступному розділі.

Згенеровано список портів nrm_sales, що показує чотири вхідні порти продажів, а також порти GK та GCID.

Крок 6) Тоді в картаping:

  1. Пов’яжіть чотири стовпці кваліфікатора джерела чотирьох кварталів зі стовпцями нормалізатора відповідно.
  2. Пов’яжіть стовпець назви магазину зі стовпцем нормалізатора
  3. Пов’яжіть стовпці store_name і sales із нормалізатора в цільову таблицю
  4. Зв’язати стовпець GK_sales із нормалізатора з цільовою таблицею

Після того, як кожна ланка буде намальована, карта буде готоваping виглядає ось так.

Завершена картаping з чотирма чверть портами та назвою магазину, пов'язаними з nrm_sales, а також портами store_name, sales та GK_sales, пов'язаними з sales_target

Зберегти карту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.

Коли потрібно розділити кілька повторюваних груп одночасно, зазвичай чистіше використовувати один нормалізатор на групу та об'єднувати результати далі, ніж перевантажувати одне перетворення. Якщо вимога працює в іншому напрямку, згортаючи багато рядків в один, Трансформація агрегатора є правильним інструментом.

Поширені запитання

Ні. Перетворення розбиває лише один рядок на багато. Згортання багатьох рядків в один виконується за допомогою агрегатора або виразу, який змінює значення за допомогою змінних портів, залежно від того, як формуються вихідні стовпці.

Тільки рядки, N-рядки та числа. На вкладці «Нормалізатор» немає опції «Дата й час», тому значення дат мають проходити через перетворення як рядки та перетворюватися за допомогою перетворення типу «Вираз» з обох боків.

Так. Карта інтеграції хмарних данихping Дизайнер пропонує перетворення Нормалізатора з тією ж метою, налаштоване через значення, що виникає для кожного поля. Макет вкладок відрізняється від PowerCenter, тому картаpingперебудовуються, а не копіюються.

Об'єднання об'єднує рядки, що надходять з кількох конвеєрів, в один потік зі спільним списком портів. Нормалізатор працює з одним конвеєром і множить рядки з повторюваних стовпців у кожному вхідному записі.

Нормалізатор конвеєра можна створити в Розробнику трансформацій або просунути з картиping, а потім спільно використовувався. Нормалізатор VSAM не може, оскільки він пов'язаний з визначенням вихідного коду COBOL, яке його згенерувало.

Саме перетворення є недорогим, оскільки воно не містить кешу. Вартість з'являється далі: значення Occurs, що дорівнює 4, збільшує обсяг рядків у чотири рази при кожному наступному перетворенні, яке має обробляти цільовий записувач.

Моделі профілювання сканують вихідні стовпці та позначають повторювані групи, такі як QUARTER1 - QUARTER4, які належать до рядків, а не стовпців. Ця пропозиція є відправною точкою — наявні значення та обробка ключів все ще потребують підтвердження розробником.

Це допомагає орієнтуватися на картіping а не всередині нього — написання SQL-коду, який розгортає таблицю для порівняння, генерує тестові дані або створює файли параметрів. Саме полотно Designer не може редагувати Copilot.

Підсумуйте цей пост за допомогою: