Joiner-transformatie in Informatica met VOORBEELD

⚡ Slimme samenvatting

De Joiner-transformatie in Informatica is het actieve, verbonden object dat twee heterogene bronnen samenvoegt op basis van een overeenkomende voorwaarde. Hierbij wordt de hoofdpipeline in het geheugen opgeslagen, terwijl de detailpipeline erdoorheen stroomt.

  • 🧩 Meesterwerk en detail: Twee invoerpijplijnen voeden de transformatie, en het tabblad Poorten bepaalt welke als master fungeert.
  • 💾 De master is in de cache opgeslagen: De hoofdpipeline is altijd ingebouwd in een index- en datacache, dus de kleinere bron hoort daar thuis.
  • 🔗 Vier soorten verbindingen: Normal, Master Outer, Detail Outer en Full Outer bepalen welke niet-overeenkomende rijen de samenvoeging overleven.
  • 🧪 Uitgewerkt voorbeeld: EMP en DEPT worden via deptno met een normale join aan elkaar gekoppeld en in EMP_DEPTNAME geladen.
  • ​ Gelijkheid alleen: Een joinvoorwaarde vergelijkt poorten met de gelijkheidsoperator, en beide poorten moeten hetzelfde gegevenstype hebben.
  • ⚡ Gesorteerde invoer: Door beide pipelines vooraf te sorteren op de conditiepoorten wordt de schijfinvoer en -uitvoer tijdens de sessie beperkt.

Transformatie van schrijnwerkers in Informatica

Wat is Joiner-transformatie?

De Joiner-transformatie is een actieve en verbonden transformatie waarmee u joins kunt maken in Informatica. De joins die met de Joiner-transformatie worden gemaakt, zijn vergelijkbaar met joins in databases. Het voordeel van de Joiner-transformatie is dat joins kunnen worden gemaakt voor heterogene systemen (verschillende databases).

Bij de Joiner-transformatie gebruiken we twee bronnen voor de joins. Deze twee bronnen heten:

  • Hoofdbron
  • Gedetailleerde bron

In de eigenschappen van de Joiner-transformatie kunt u selecteren welke gegevensbron de hoofdbron en welke de detailbron is.

Tijdens de uitvoering wordt de hoofdbron in het geheugen opgeslagen voor het samenvoegen van gegevens. Het is daarom aan te raden de bron met de minste records als hoofdbron te selecteren. De hoofdpipeline wordt in twee caches bewaard: een indexcache voor de waarden die in de samenvoegingsvoorwaarde worden gebruikt en een datacache voor de overige rijgegevens.

Soorten joins in Joiner-transformatie

De eigenschap 'Join Type' op het tabblad 'Properties' bepaalt wat er gebeurt met rijen die geen overeenkomst vinden. De volgende joins kunnen worden gemaakt met behulp van de Joiner-transformatie.

  1. Master buitenverbinding Bij een master outer join worden alle records uit de detailbron geretourneerd en worden alleen overeenkomende rijen uit de masterbron geretourneerd.
  2. Detail buitenvoeg Bij een detail outer join worden alleen overeenkomende rijen uit de detailbron geretourneerd, en alle rijen uit de masterbron.
  3. Volledige outer join Bij een volledige outer join worden alle records uit beide bronnen geretourneerd.
  4. Normaal meedoen – Bij een normale join worden alleen overeenkomende rijen uit beide bronnen geretourneerd.

Hoofd-buitenverbindingen en detail-buitenverbindingen zijn gelijk aan linker-buitenverbindingen in SQLElk type behoudt alle rijen van de ene bron en alleen de overeenkomsten uit de andere bron. De onderstaande tabel zet de vier typen naast hun SQL-equivalenten.

Deelnemen aan type Rijen behouden van master Rijen die buiten detail zijn gehouden SQL-equivalent
Normaal meedoen Alleen overeenkomende opties Alleen overeenkomende opties Innerlijke join
Master buitenverbinding Alleen overeenkomende opties Alle rijen Linker buitenste verbinding op de detailbron
Detail buitenvoeg Alle rijen Alleen overeenkomende opties Linker buitenste join op de hoofdbron
Volledige outer join Alle rijen Alle rijen Volledige outer join

Het type koppeling is een eigenschap, geen structurele keuze, dus het kan later worden gewijzigd zonder de kaart opnieuw op te bouwen.ping of het opnieuw verbinden van poorten.

Hoe gebruik je de Joiner-transformatie in Informatica?

In dit voorbeeld voegen we de tabellen emp en dept samen met behulp van de Joiner-transformatie. Doorloop de acht onderstaande stappen in de Map.ping Ontwerper.

Stap 1) Maak met behulp van het onderstaande script een nieuwe doeltabel EMP_DEPTNAME aan in de database en importeer deze tabel in Informatica Targets.

Download het bovenstaande emp_deptname.sql-bestand

Stap 2) Maak een nieuw kaartping Importeer de brontabellen "EMP" en "DEPT" en de doeltabel die we in de vorige stap hebben gemaakt. Alle drie de definities staan ​​nu op het canvas, zoals hieronder weergegeven.

Wereldmapping Ontwerpcanvas met de EMP- en DEPT-bronnen en de doeldefinitie EMP_DEPTNAME

Stap 3) Selecteer in het menu Transformatie de optie Maken. Open vervolgens het venster Transformatie maken (zie hieronder).

  1. Selecteer joiner-transformatie
  2. Voer de transformatienaam “jnr_emp_dept” in
  3. Selecteer optie maken

Maak een transformatievenster aan met Joiner geselecteerd en de naam jnr_emp_dept ingevoerd.

Stap 4) Sleep alle kolommen van zowel de Bronkwalificaties naar de Joiner-transformatie. Beide pipelines zijn nu gekoppeld aan jnr_emp_dept, zoals de schermafbeelding laat zien.

Kolommen van beide bronkwalificaties worden naar de jnr_emp_dept Joiner-transformatie gesleept.

Stap 5) Double Klik op de Joiner-transformatie en vervolgens in het venster Transformaties bewerken.

  1. Selecteer het tabblad Conditie
  2. Klik op het pictogram voor het toevoegen van een nieuwe voorwaarde
  3. Selecteer deptno in de lijst met hoofd- en detailkolommen

Het tabblad 'Conditie' bevat nu de enige koppelingsvoorwaarde op afdelingsnummer.

Tabblad Voorwaarden van de Joiner-transformatie met afdelingsnummer gekozen in de hoofd- en detailkolommen

Stap 6) Dan in hetzelfde venster

  1. Selecteer het tabblad Eigenschappen
  2. Selecteer Normale koppeling als koppelingstype.
  3. Selecteer de OK-knop.

Het tabblad Eigenschappen met het ingestelde verbindingstype wordt hierna weergegeven.

Het tabblad Eigenschappen van de Joiner-transformatie met het samenvoegtype ingesteld op Normale samenvoeging.

Voor prestatieoptimalisatie wijzen we de hoofdbron toe aan de brontabel-pipeline met de minste records. Om dit te doen:

Stap 7) Double Klik op de Joiner-transformatie om het venster 'Transformaties bewerken' te openen en vervolgens

  1. Selecteer het tabblad Poorten
  2. Selecteer een kolom van een bepaalde bron waarvan u een master wilt maken
  3. Klik op OK

Op het tabblad Poorten wordt de gekozen pijplijn als master gemarkeerd, zoals hieronder weergegeven.

Het tabblad Poorten van de Joiner-transformatie met de master-vlag ingesteld voor één bronpipeline.

Stap 8) Koppel de relevante kolommen van de Joiner-transformatie aan de doeltabel. De kaartping Nu worden de gegevens uit beide bronnen via de join in EMP_DEPTNAME verwerkt.

Gekoppelde kolommen die zijn gekoppeld van jnr_emp_dept naar de doeltabel EMP_DEPTNAME

Sla de kaart nu op.ping en voer het uit na het maken van een sessie en workflow daarvoor. De koppeling wordt gemaakt met behulp van de Informatica Joiner en de relevante gegevens worden uit beide tabellen opgehaald.

Eigenschappen van de Joiner-transformatie

Het tabblad Eigenschappen bevat meer dan alleen het type join. De onderstaande instellingen bepalen hoeveel geheugen de join gebruikt en waar de cachebestanden worden opgeslagen.

omgeving Wat het controleert
Deelnametype Normaal, Hoofdbuitenrand, Detailbuitenrand of Volledige buitenrand. Bepaalt welke niet-overeenkomende rijen behouden blijven.
Toetredingsvoorwaarde De lijst met master-to-detail poortparen wordt vergeleken met de gelijkheidsoperator. Verschillende voorwaarden worden gecombineerd met AND.
Gesorteerde invoer Geeft aan dat beide pipelines al gesorteerd aankomen op basis van de conditiepoorten, waardoor de integratieservice de schijfinvoer en -uitvoer kan minimaliseren.
Hoofdsorteervolgorde De sorteervolgorde van de brongegevens, die samen met de gesorteerde invoer wordt gebruikt.
Cachemap De map waarin de index- en datacachebestanden worden aangemaakt. De standaardlocatie is de procesvariabele $PMCacheDir.
Grootte van de Joiner-gegevenscache Grootte van de datacache met de hoofdrijgegevens. De standaardwaarde is 'Automatisch', waardoor de Integration Service de grootte hiervan bepaalt.
Grootte van de Joiner-indexcache Grootte van de indexcache die de hoofdconditiewaarden bevat. De standaardwaarde is Auto.
Transformatiebereik Past de join toe op elke transactie, op alle binnenkomende gegevens of op een rijniveau.

Gesorteerde invoer is de instelling die het meest geschikt is om als eerste te gebruiken. Wanneer beide pipelines in de juiste volgorde aankomen, gesorteerd op basis van de conditiepoorten, hoeft de Integration Service niet de volledige masterbron vast te houden voordat het matchen begint. Dit is hetzelfde principe dat wordt toegepast tijdens... prestatieafstemming van andere in de cache opgeslagen transformaties.

Regels en beperkingen voor Joiner-transformatie

Sommige beperkingen komen pas aan het licht wanneer de kaartping is gevalideerd, dus het is goedkoper om ze te kennen voordat de poorten worden gekoppeld.

  • Alleen gelijkheid. Een joinvoorwaarde vergelijkt poorten met de gelijkheidsoperator. Vergelijkingsoperatoren zoals groter dan, kleiner dan of niet gelijk aan worden niet geaccepteerd in de voorwaarde.
  • Overeenkomende gegevenstypen. Beide poorten in een voorwaarde moeten hetzelfde gegevenstype hebben. De Designer valideert dit, dus kolommen met een verschillend gegevenstype moeten eerst worden geconverteerd, meestal in een Expression-transformatie.
  • Geen update-strategie stroomopwaarts. Een Joiner-transformatie kan niet worden gebruikt wanneer een van de invoerpijplijnen een Update Strategy-transformatie bevat.
  • Geen volgorde Generator vlak ervoor. Een reeks verbinden Generator Transformaties direct vóór de Joiner worden niet ondersteund.
  • Caching kan niet worden uitgeschakeld. De hoofdpipeline wordt altijd in de cache opgeslagen, daarom hoort de kleinere bron aan de hoofdkant thuis en is de cachegrootte belangrijk bij grote joins.

Het samenvoegen van drie bronnen vereist twee aan elkaar gekoppelde Joiner-transformaties, omdat elke transformatie precies één master- en één detail-pipeline accepteert. Wanneer de tweede bron een kleine referentietabel is die rij voor rij wordt ingelezen, is een Lookup-transformatie Het eenvoudigere ontwerp is vaak de beste optie.

Veelgestelde vragen

Twee. Elke Joiner accepteert één master- en één detail-pipeline, dus het samenvoegen van drie bronnen betekent het koppelen van twee ervan: de uitvoer van de eerste wordt een invoerpipeline voor de tweede. In het algemeen hebben n bronnen n min één nodig.

Wanneer beide tabellen zich in dezelfde relationele database bevinden, stuurt de Source Qualifier de join door naar de database, waardoor caching volledig wordt vermeden. Gebruik de Joiner alleen wanneer de twee bronnen heterogeen zijn of zich al in aparte pipelines bevinden.

De indexcache slaat de masterpoortwaarden op die in de joinvoorwaarde worden genoemd, en de datacache slaat de overige masterrijgegevens op die door de join worden geretourneerd. Beide worden uitsluitend opgebouwd vanuit de masterpipeline, nooit vanuit de detailpipeline.

Nee. Een null-waarde in een van beide poorten zorgt ervoor dat de voorwaarde niet wordt voldaan, net zoals in SQL, waardoor die rijen als niet-overeenkomend worden beschouwd. Vervang null-waarden door een standaardwaarde stroomopwaarts wanneer er een join moet plaatsvinden.

Ja. Voeg de brondefinitie toe aan de kaart.ping Dit gebeurt twee keer, zodat er twee aparte pipelines ontstaan. Vervolgens wordt er één naar de master-kant en één naar de detail-kant gestuurd. Dit is de gebruikelijke manier om een ​​managerkolom terug te koppelen aan een werknemersnaam.

Ja, en dat heterogene geval is de belangrijkste reden voor de transformatie. Een platte-bestandspipeline en een relationele pipeline worden samengevoegd op overeenkomende poorten, net zoals twee databasetabellen dat zouden doen, omdat de samenvoeging plaatsvindt binnen de Integration Service.

AI-assistenten analyseren beide bronnen om mogelijke koppelingssleutels voor te stellen, schatten het aantal rijen zodat de kleinste kant als hoofdbron wordt gekozen, en markeren scheve kolommen of kolommen met veel null-waarden die de resultaten zouden overbelasten. Op machine learning gebaseerde adviseurs rangschikken ook de opties voor de cachegrootte.

Copilot genereert snel de equivalente SQL-query's en de gegevenstypeconversies, wat de voorbereiding van poorten versnelt. Het kan uw cachegroottes of het aantal rijen niet zien, dus controleer elke suggestie aan de hand van de kaart.ping voordat u het opslaat.

Vat dit bericht samen met: