Трансформация на квалификатор на източник в Informatica с ПРИМЕР
⚡ Умно обобщение
Трансформацията на квалификатора на източника в Informatica представлява редовете, които услугата за интеграция чете от релационен източник или плосък файл, и позволява на разработчика да презапише заявката по подразбиране, да филтрира, сортира и премахва дубликатите на тези данни.

Какво представлява трансформацията на квалификатора на източника?
Трансформацията на квалификатора на източника е активна, свързана трансформация, която представлява редовете, които услугата за интеграция чете, когато се изпълнява сесия. Всеки път, когато към карта се добави релационен източник или плосък файл.ping, е необходима трансформация на квалификатор на източника и дизайнерът добавя такава автоматично. С квалификатора на източника можете да дефинирате и променяте начина, по който данните се извличат от източника.
Трансформацията също така преобразува нативните типове данни на източника в типове данни за трансформация на Informatica, така че всяка трансформация, поставена след нея, работи с един платформено-неутрален набор от типове.
Тъй като квалификаторът на източника изгражда заявката, която действително достига до базата данни, той е първото място, където трябва да се търси, когато картаping прочита повече редове или повече колони, отколкото е необходимо. Примерът по-долу стеснява заявката до четири колони.
Как да промените квалификатора на източника в Informatica
В следващия пример ще променим Source Qualifier на нашата картаping „m_emp_emp_target“, така че вместо да връща всички колони, да връща само избрани колони.
Стъпка 1) Отворете картатаping „m_emp_emp_target“ в Картатаping Дизайнер. Картатаping отваря се с източника на EMP, квалификатора на източника SQ_EMP и целта EMP_TARGET на платното.
Стъпка 2) Double-щракнете върху трансформацията на Source Qualifier „SQ_EMP“. Това отваря прозореца Edit Transformations за този обект. След това
- Щракнете върху раздела Свойства
- Щракнете върху SQL Опция за промяна на заявка, това ще отвори прозорец на SQL редактор
Разделът „Свойства“ изброява реда на SQL заявката, показан по-долу.
Стъпка 3) В прозореца на SQL редактора
- Въведете следната заявка
SELECT EMPNO, ENAME, JOB, MGR FROM EMP
Забележка – избираме колоните EMPNO, ENAME, JOB и MGR от източника, така че сме запазили само тези в заявката за избор
- Изберете бутона OK
SQL редакторът вече съхранява персонализираната заявка вместо генерираната.
Стъпка 4) В прозореца „Редактиране на трансформации“,
- Изберете раздела Портове от менюто
- В раздела Портове ще видите всички портове. Запазете само портовете EMPNO, ENAME, JOB, MGR и изтрийте останалите портове.
Разделът „Портове“ изброява всеки порт, пренесен от трансформацията преди изтриването.
Стъпка 5) След изтриване на портовете, изберете бутона OK. В списъка остават само четирите останали порта.
Сега щракнете отново върху раздела Свойства в прозореца Редактиране на трансформации и ще видите само данните, които сте избрали.
Когато щракнете върху бутона „OK“, ще се отвори прозорецът на SQL редактора.
- Това ще потвърди, че избраните от вас данни са правилни и готови за зареждане в целевата таблица.
- Щракнете върху бутона OK, за да продължите по-нататък
Прозорецът за потвърждение повтаря четирите колони, които сега ще бъдат прочетени.
Запазване на картатаping (използвайки клавишната комбинация Ctrl+S) и изпълнете работния процесСлед изпълнение, само избраните колони ще бъдат заредени в целта.
По този начин можете да презапишете в Source Qualifier кои колони трябва да бъдат извлечени от източника и това е единственият начин да контролирате кои конкретни колони се внасят в картата.ping.
Свойства на квалификатора на източника
Можете да използвате различни свойства на квалификатора на източника, за да определите какъв тип изходни данни трябва да бъдат трансформирани и изпратени към целевата таблица.
- Филтър на източника – Използвайки свойството Source Filter (Филтър на източника), можете да намалите броя на записите източник. Например, ако искате да извлечете само служителите на отдел 10, можете да въведете условието за филтър deptno=10 в свойството Source Filter и да изпълните данните. Включете името на таблицата и името на порта в условието и пропуснете ключовата дума WHERE – филтър, съдържащ WHERE, ще провали сесията.
- Брой сортирани портове – В трансформацията Source Qualifier можете също да сортирате входните записи по позиция на порта. Integration Service добавя клауза ORDER BY към заявката по подразбиране, като брои портовете от началото на трансформацията, така че данните вече са сортирани, когато достигнат трансформациите в картата.ping.
Тъй като данните могат да бъдат сортирани по един порт или по няколко порта, трябва да зададете броя на портовете, които ще бъдат използвани при сортирането. Ако зададете стойност 1, тогава ще бъдат сортирани само данните от empno. Ако зададете стойност 2, тогава данните ще бъдат сортирани както по empno, така и по ename.
- Изберете Различен – можете да извличате само различни записи от източника, използвайки това свойство. Когато изберете опцията „Избери различни“, услугата за интеграция добавя оператор SELECT DISTINCT, така че квалификаторът на източника извлича само различни комбинации от данни от източника.
Разделът „Свойства“, показан по-долу, съдържа тези опции заедно с останалата част от списъка със свойства.
Пълният списък със свойства, налични в релационен изходен квалификатор, е обобщен в таблицата по-долу.
| Имот | Какво го прави |
|---|---|
| SQL заявка | Заменя заявката по подразбиране, генерирана от услугата за интеграция. Персонализираната заявка отменя потребителски дефинирано съединение и филтър на източника. |
| Потребителски дефинирано съединение | Предоставя условието, използвано за обединяване на данни от няколко източника, представени от един и същ квалификатор на източника. |
| Филтър на източника | Предоставя условието за филтър, което услугата за интеграция прилага при заявки към редове. |
| Брой сортирани портове | Брой колони, използвани за сортиране на редове, прочетени от релационни източници, добавени към заявката като ORDER BY. |
| TracНиво | Количество подробности, записани в лога на сесията за тази трансформация. |
| Изберете Различен | Връща само уникални редове чрез добавяне на SELECT DISTINCT към заявката. |
| Преди SQL | Командите се изпълняват спрямо изходната база данни, преди услугата за интеграция да прочете източника. |
| След SQL | Командите се изпълняват спрямо базата данни източник, след като услугата за интеграция запише в целевата база данни. |
| Изходът е детерминистичен | Декларира, че източникът връща едни и същи данни между изпълненията, когато входните данни са последователни. |
| Изходът е повторяем | Декларира, че източникът връща редове в същия ред между изпълненията, което позволява на услугата за интеграция да пропусне подготовката за възстановяване. |
Правила и насоки за SQL заместване на квалификатор на източник
SQL презаписването е мощно, защото замества всичко, генерирано от дизайнера, и затова тихо се нарушава, когато правилата по-долу се игнорират.
- Първо свържете портовете. Свържете всеки входен и изходен порт, който възнамерявате да използвате, преди да въведете заявката, защото генерираната заявка се изгражда от свързаните портове.
- Поддържайте списъка SELECT по ред на портовете. SELECT командата трябва да изброява имената на портовете в реда, в който се появяват в трансформацията. Ако редът не съвпада, сесията може да се провали или да върне неочаквани резултати.
- Квалифицирайте всяка колона. Всяко име на колона трябва да има префикс от таблицата, изгледа или синонима, към който принадлежи, например ORDERS.ORDER_ID.
- Генерирайте, преди да редактирате. Щракването върху „Генериране на SQL“ показва заявката по подразбиране, която вече съдържа филтъра на източника и клаузата sorted-ports, така че презаписването може да бъде изградено от работещ оператор.
- Потвърдете твърдението. SQL редакторът има бутон „Проверка“, който изпълнява заявката и докладва дали синтаксисът е правилен, преди сесията да бъде стартирана.
- Цитирайте запазените думи. Всяка резервирана дума в базата данни, използвана в заявката, трябва да бъде оградена в кавички.
- Внимавайте с предимството. Персонализирана заявка отменя филтъра на източника и броя на сортираните портове, а SQL заявка, въведена в сесия свойствата отменят както условието за филтър, така и заявката, дефинирани в картатаping.
За Microsoft SQL Server източници има едно допълнително правило: броят на колоните в оператора SELECT трябва да съвпада с броя на портовете в трансформацията, в противен случай сесията ще се провали при извличане на редове.
Как да свържете два източника с един квалификатор на източник
Един единствен квалификатор на източника може да чете повече от една таблица. Когато две свързани таблици от един и същ релационен източник са свързани с един квалификатор на източника, услугата за интеграция ги обединява в заявката за източник, а не в картата.ping, което означава, че базата данни върши работата и по-малко редове пътуват до сесията.
Стандартното съединение е вътрешно еквивалентно съединение, записано в клаузата WHERE като Source1.column_name = Source2.column_name. За да се генерира това съединение, свързаните колони трябва да имат връзка първичен ключ-външен ключ и съответстващи типове данни. Когато импортираните метаданни нямат такава връзка, можете да създадете такава в Анализатор на източници чрез свързване на съответстващите колони на двете дефиниции на източника.
Когато връзката липсва или съединението трябва да е външно съединение, използвайте вместо това свойството „Потребителски дефинирано съединение“. Въведеното там условие замества информацията за съединението, съдържаща се в метаданните, и услугата за интеграция я добавя към генерираната заявка.
Струва си да се запомнят две ограничения. И двете таблици трябва да идват от един и същ релационен източник, а източници от различни типове – плосък файл и таблица или две различни бази данни – трябва да бъдат обединени с Дърводелска трансформация вместо.
Квалификатор на източника срещу филтър срещу трансформация на свързващ елемент
Три обекта могат да редуцират или комбинират редове, а изборът на грешен е честа причина за бавни сесии. Таблицата по-долу ги поставя един до друг.
| Аспект | Квалификатор на източника | Трансформация на филтъра | Дърводелска трансформация |
|---|---|---|---|
| Къде се извършва работата | В изходната база данни, вътре в генерираната заявка | В услугата за интеграция, ред по ред | В услугата за интеграция, използвайки кеш |
| Главна цел | Четене на изходни редове, презаписване на заявката, филтриране, сортиране, премахване на дубликати | Премахнете редове, които не отговарят на едно условие | Комбинирайте два тръбопровода в един набор от редове |
| Типове източници | Релационни таблици и плоски файлове от един източник | Всякакви данни от тръбопровода | Хетерогенни източници, включително плоски файлове и различни бази данни |
| Присъединете се към подкрепата | Вътрешно еквивалентно съединение или потребителски дефинирано съединение в рамките на един релационен източник | None | Нормални, главни външни, детайлни външни и пълни външни съединения |
| Редове, пресичащи мрежата | Само редовете, които заявката връща | Всеки ред от източника се чете първи | Всеки ред от източника се чете първи |
Практическото правило е просто: филтрирайте и се присъединете веднага щом източникът позволява, и потърсете филтър или Joiner само за работа, която базата данни източник не може да извърши. Вмъкването на условия в Source Qualifier е една от най-евтините печалби, възможни по време на настройка на производителността.








