Перетворення агрегатора в Informatica з прикладом

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

Агрегаторне перетворення в Informatica – це активний об'єкт, який виконує такі обчислення, як сума, середнє значення та підрахунок по групі рядків, зберігаючи ці рядки в агрегатному кеші, доки кожна група не буде завершена.

  • 🧮 Груповий розрахунок: Групування за портами визначає групи, а служба інтеграції повертає один рядок для кожної унікальної комбінації.
  • 💾 Два кеші: Значення групи зберігаються в кеші індексів, а дані рядків – у кеші даних.
  • 🧪 Приклад роботи: Вираз sum(SAL), згрупований за DEPTNO, завантажує підсумки відділів у SUM_SAL_DEPTWISE.
  • 🔀 Відсортований вхід: Попереднє сортування групи за портами дозволяє службі інтеграції раніше випускати кожну групу та кешувати набагато менше даних.
  • 📈 Інкрементальні прогони: Інкрементальна агрегація повторно використовує історичний кеш, тому обчислюються лише нові вихідні рядки.
  • 🚫 Ліміт вкладеності: Одне перетворення може містити однорівневі функції або вкладені функції, але ніколи обидва одночасно.

Трансформація агрегатора в інформатиці

Що таке трансформація агрегатора?

Агрегаторне перетворення — це активне перетворення, яке виконує агрегатні обчислення, такі як сума, середнє значення та кількість.

Наприклад, якщо ви хочете розрахувати суму зарплат усіх співробітників по відділах, ви можете скористатися перетворенням Агрегатор.

Агреговані операції виконуються над групою рядків, тому для зберігання всіх цих записів і виконання обчислень потрібен тимчасовий заповнювач.

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

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

Як використовувати агрегаторне перетворення в Informatica

У цьому прикладі ми розрахуємо суму зарплат відділу. Для цього нам потрібен новий стовпець для зберігання цієї суми. Тож, перш за все, підготуємо нову рубрику.

Крок 1) Створіть нову цільову таблицю бази даних, наприклад, «sum_sal_deptwise», використовуючи наведений нижче скрипт. Ви побачите нову цільову таблицю бази даних, створену в розділі Targetпапку на наступному кроці.

Завантажте наведений вище файл Create_table_sal_deptwise.txt

Крок 2) Створіть новий картаping «m_sum_sal_deptwise» (або «розмір_продажу_в_глибині»).

Щоб створити нову картуping, нам потрібна вихідна таблиця (EMP) та цільова таблиця (sum_sal_deptwise) у Mapping Дизайнер, тому нам потрібно

  1. Імпортуйте цільову таблицю «sum_sal_deptwise» на картуping.
  2. Імпортуйте вихідну таблицю «emp».

Обидва визначення тепер відображаються на полотні, як показано нижче.

картаping Конструктор з джерелом EMP, SQ_EMP та імпортованою цільовою функцією SUM_SAL_DEPTWISE

Крок 3) На картіping,

  1. Від Кваліфікатор джерела, видаліть стовпці empno, ename, job, mgr, hiredate та comm, залишивши лише стовпці deptno та sal.
  2. Створіть нове перетворення агрегатора за допомогою меню панелі інструментів, як показано на знімку екрана. Після натискання на значок агрегатора буде створено нове перетворення агрегатора.

Новий об'єкт AGGTRANS з'являється поруч із обрізаним кваліфікатором джерела.

Піктограма агрегатора на панелі інструментів, що створює AGGTRANS поруч із обрізаним SQ_EMP

Крок 4) Перетягніть стовпці SAL та DEPTNO з кваліфікатора джерела (SQ_EMP) до перетворення агрегатора. Тепер ці два порти пов'язані в AGGTRANS.

Порти SAL та DEPTNO, перетягнуті з SQ_EMP до перетворення агрегатора AGGTRANS

Крок 5) Double- клацніть перетворення Агрегатор, щоб відкрити його властивості, а потім

  1. Додайте новий порт у трансформацію
  2. Перейменуйте порт на SUM_SAL
  3. Змініть тип даних цього нового порту на подвійний
  4. Зробіть цей порт вихідним портом, встановивши прапорець вихідного порту
  5. Клацніть параметр виразу

На вкладці «Порти» тепер перелічені SAL, DEPTNO та новий вихідний порт SUM_SAL.

Вкладка «Порти» AGGTRANS з новим вихідним портом SUM_SAL, встановленим на тип даних double

Крок 6) У вікні редактора виразів

  1. Додайте вираз sum(SAL); вам потрібно написати цей вираз самостійно.
  2. Натисніть кнопку «ОК», це поверне вікно «Редагувати трансформації».

Редактор виразів відображає агрегатний вираз, призначений SUM_SAL.

Редактор виразів для порту SUM_SAL, що містить агрегатний вираз sum(SAL)

Крок 7) У вікні «Редагувати трансформації» виберіть опцію «Групувати за», встановивши прапорець навпроти стовпця «номер відділу», і натисніть кнопку «ОК». Вибравши «Групувати за» навпроти стовпця «номер відділу», ми даємо вказівку Informatica групувати зарплати за номером відділу.

Вкладка «Порти» з вибраним прапорцем «Групувати за» навпроти порту DEPTNO

Крок 8) Зв'яжіть стовпці deptno та sum_sal з перетворення Aggregator з цільовою таблицею. Картаping потім завершено від джерела до цілі.

DEPTNO та SUM_SAL, пов'язані з AGGTRANS з визначенням цілі SUM_SAL_DEPTWISE

Тепер збережіть картуping і виконати його після створення нового Сесія для цієї картиpingЦільова таблиця міститиме суму зарплат за відділами. Таким чином, ми можемо використовувати перетворення Агрегатор для обчислення агрегованих результатів.

Групування за портами в трансформації агрегатора

Наведений вище крок позначив окремий порт як «Групувати за», що перетворило підсумок по всій компанії на один підсумок для кожного відділу. Будь-який вхідний, вхідний/вихідний, вихідний або змінний порт можна позначити таким самим чином.

Три правила керують набором результатів:

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

Якщо позначено кілька портів, порядок портів визначає групуping порядок, і порядок може змінити результат. Групаping від DEPTNO, а потім JOB не те саме, що й grouping за JOB, а потім за DEPTNO, оскільки значення другого стовпця не обов'язково унікальні.

Властивості трансформації агрегатора

Вкладка «Властивості» вікна «Редагувати перетворення» містить налаштування, які визначають, де зберігається кеш і який його обсяг використовується. Вони перелічені в таблиці нижче.

Установка Що воно контролює
Каталог кешу Локальний каталог, у якому служба інтеграції створює файли індексу та кешу даних. За замовчуванням використовується змінна процесу $PMCacheDir, встановлена ​​в Workflow Manager.
TracРівень Обсяг деталей, що записуються до журналу сеансу для цього перетворення.
Відсортований вхід Оголошує, що вхідні дані вже відсортовані групою за портами. Виберіть це лише тоді, коли картаping дійсно надає відсортовані дані.
Розмір кешу даних агрегатора Розмір кешу даних. Значення за замовчуванням становить 2 000 000 байт, а параметр «Автоматично» дозволяє службі інтеграції визначити його розмір.
Розмір кешу індексу агрегатора Розмір кешу індексу. Значення за замовчуванням становить 1 000 000 байт, а параметр «Автоматично» дозволяє службі інтеграції визначити його розмір.
Обсяг трансформації Застосовує логіку до кожної транзакції або до всіх вхідних даних. All Input скидає межі вхідних транзакцій.

Коли ввімкнено інкрементну агрегацію, служба інтеграції записує резервну копію файлів кешу під час кожного запуску, тому каталог кешу має містити два набори файлів, а не один.

Правила агрегатних виразів та поради щодо продуктивності

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

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

Що стосується налаштування, то основну роботу виконують три параметри:

  • Відсортований вхід. Коли рядки надходять відсортованим за групами за портами, кожну групу можна звільнити, щойно надходить її останній рядок, таким чином кешується набагато менше даних, і сеанс виконується швидше. Відсортований вхід не можна поєднувати з інкрементальною агрегацією.
  • Інкрементальна агрегація. Нові вихідні рядки передаються через картуping та поєднується з історичним кешем замість перерахунку історії, що підходить для щонічного завантаження на поточний підсумок.
  • Фільтруйте заздалегідь. Рядки, які ніколи не враховуватимуться в підсумку, слід видаляти перед агрегатором, або в запиті кваліфікатора джерела, або в Трансформація фільтра, оскільки кожен рядок, який досягає агрегатора, витрачає кеш-пам'ять. Це одна зі стандартних перевірок під час налаштування продуктивності.

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

Агрегатна родина охоплює AVG, COUNT, FIRST, LAST, MAX, MEDIAN, MIN, PERCENTILE, STDDEV, SUM та VARIANCE. Кожен з них повертає зведене значення для ненульових значень у вибраному порту.

Весь вхідний рядок обробляється як одна група, тому для всіх вхідних рядків повертається один рядок. Цей рядок містить агрегований результат разом з останнім рядком, отриманим перетворенням.

Кеш індексів містить значення груп, тобто значення портів, позначених як «Групувати за». Кеш даних містить дані рядків, що використовуються в розрахунку. Переповнення з будь-якого з них записується у файли кешу.

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

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

У каталог, назва якого визначена параметром «Каталог кешу», який за замовчуванням використовується як змінна процесу $PMCacheDir, налаштована в Workflow Manager. Переконайтеся, що каталог існує та має достатньо вільного місця на диску.

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

Copilot швидко створює чернетки виразів та супутніх SQL-запитів, що заощаджує час на повторювану роботу з портами. Він не бачить розміри кешу чи порядок портів, тому перевіряйте кожну пропозицію в редакторі виразів перед збереженням.

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