Joiner Transformasjon i Informatica med EKSEMPEL

⚡ Smart oppsummering

Joiner-transformasjon i Informatica er det aktive, tilkoblede objektet som kobler sammen to heterogene kilder under samsvarende betingelser, og mellomlagrer hovedpipelinen i minnet mens detaljpipelinen strømmer gjennom den.

  • 🧩 Master og detaljer: To inndata-pipeliner mater transformasjonen, og Porter-fanen bestemmer hvilken som fungerer som master.
  • 💾 Masteren er mellomlagret: Hovedpipelinen er alltid innebygd i en indeks- og datacache, så den mindre kilden hører hjemme der.
  • 🔗 Fire sammenføyningstyper: Normal, Master Outer, Detalj Outer og Full Outer bestemmer hvilke ikke-samsvarende rader som overlever sammenføyningen.
  • 🧪 Utarbeidet eksempel: EMP og DEPT kobles sammen på deptno med en vanlig kobling og lastes inn i EMP_DEPTNAME.
  • 🇧🇷 Kun likestilling: En sammenføyningsbetingelse sammenligner porter med equals-operatoren, og begge portene må dele én datatype.
  • Sortert inndata: Forhåndssortering av begge pipelines på betingelsesportene kutter diskinndata og -utdata under økten.

Joiner Transformasjon i Informatica

Hva er Joiner Transformation?

Joiner-transformasjon er en aktiv og tilkoblet transformasjon som gir deg muligheten til å opprette koblinger i Informatica. Sammenkoblingene som opprettes ved hjelp av Joiner-transformasjon ligner på sammenkoblinger i databaser. Fordelen med Joiner-transformasjon er at sammenkoblinger kan opprettes for heterogene systemer (forskjellige databaser).

I Joiner-transformasjonen er det to kilder vi skal bruke for joins. Disse to kildene kalles

  • Mesterkilde
  • Detaljkilde

I egenskapene til Joiner-transformasjonen kan du velge hvilken datakilde som kan være master og hvilken kilde som kan være detaljkilde.

Under utførelse blir hovedkilden mellomlagret i minnet for sammenføyningsformål. Det anbefales derfor å velge kilden med færre poster som hovedkilde. Hovedpipelinen lagres i to mellomlagre: en indeksbuffer for verdiene som brukes i sammenføyningsbetingelsen og en databuffer for resten av raddataene.

Typer av sammenføyninger i Joiner-transformasjon

Egenskapen Sammenføyningstype i fanen Egenskaper bestemmer hva som skjer med rader som ikke finner treff. Følgende sammenføyninger kan opprettes ved hjelp av Sammenføyningstransformasjon.

  1. Master ytre skjøt – I en master ytre kobling returneres alle poster fra detaljkilden av koblingen, og bare samsvarende rader fra masterkilden returneres.
  2. Detalj ytre skjøt – I en detaljert ytre kobling returneres bare samsvarende rader fra detaljkilden, og alle rader fra hovedkilden returneres.
  3. Full ytre skjøt – I en fullstendig ytre sammenkobling returneres alle poster fra begge kildene.
  4. Vanlig sammenføyning – I en vanlig sammenføyning returneres bare samsvarende rader fra begge kildene.

Hoved- og detalj-ytterkoblinger er ekvivalente med venstre-ytterkoblinger i SQLHver av dem beholder hver rad fra én kilde og bare treffene fra den andre. Tabellen nedenfor setter de fire typene opp mot deres SQL-ekvivalenter.

Bli med type Rader beholdt fra master Rader holdt fra detaljer SQL-ekvivalent
Vanlig sammenføyning Kun samsvarende Kun samsvarende Indre bli med
Master ytre skjøt Kun samsvarende Alle rader Venstre ytre kobling på detaljkilden
Detalj ytre skjøt Alle rader Kun samsvarende Venstre ytre kobling på hovedkilden
Full ytre skjøt Alle rader Alle rader Full ytre skjøt

Sammenføyningstypen er en egenskap, ikke et strukturelt valg, så den kan endres senere uten å bygge opp kartet på nytt.ping eller koble til porter på nytt.

Slik bruker du Joiner-transformasjon i Informatica

I dette eksemplet skal vi koble sammen emp- og dept-tabellene ved hjelp av Joiner-transformasjon. Arbeid deg gjennom de åtte trinnene nedenfor i kartet.ping Designer.

Trinn 1) Opprett en ny måltabell EMP_DEPTNAME i databasen ved hjelp av skriptet nedenfor, og importer tabellen til Informatica-mål.

Last ned emp_deptname.sql-filen ovenfor

Trinn 2) Lage en ny kartping og importer kildetabellene «EMP» og «DEPT» og måltabellen som vi opprettet i forrige trinn. Alle tre definisjonene ligger nå på lerretet, som vist nedenfor.

kartping Designer-lerret med EMP- og DEPT-kildene og måldefinisjonen EMP_DEPTNAME

Trinn 3) Fra Transformasjon-menyen velger du alternativet Opprett. Deretter i vinduet Opprett transformasjon som vises nedenfor,

  1. Velg snekkertransformasjon
  2. Skriv inn transformasjonsnavnet "jnr_emp_dept"
  3. Velg opprettingsalternativ

Opprett transformasjonsvindu med Joiner valgt og navnet jnr_emp_dept skrevet inn

Trinn 4) Dra og slipp alle kolonnene fra begge Kildekvalifikatorer til Joiner-transformasjonen. Begge pipelinene er nå koblet til jnr_emp_dept, som skjermbildet viser.

Kolonner fra begge kildekvalifikatorene dratt inn i jnr_emp_dept Joiner-transformasjonen

Trinn 5) Double klikk på Joiner-transformasjonen, og deretter i vinduet Rediger transformasjoner

  1. Velg tilstandsfanen
  2. Klikk på legg til ny tilstand-ikon
  3. Velg deptno i hoved- og detaljkolonnelisten

Betingelse-fanen inneholder nå betingelsen for enkeltsammenføyning på deptno.

Tilstandsfanen for Joiner-transformasjonen med avdelingsnr. valgt i hoved- og detaljkolonnene

Trinn 6) Så i samme vindu

  1. Velg egenskapsfanen
  2. Velg Normal sammenføyning som sammenføyningstype
  3. Velg OK-knappen

Egenskaper-fanen med den angitte sammenføyningstypen vises deretter.

Egenskaper-fanen for Joiner-transformasjonen med koblingstypen satt til Normal kobling

For ytelsesoptimalisering tilordner vi hovedkilden til kildetabellens pipeline, som har færre poster. Slik utfører du denne oppgaven:

Trinn 7) Double klikk på Joiner-transformasjonen for å åpne vinduet Rediger transformasjoner, og klikk deretter

  1. Velg kategorien porter
  2. Velg hvilken som helst kolonne i en bestemt kilde som du vil gjøre til en master
  3. Velg OK

Porter-fanen markerer den valgte pipelinen som master, som vist nedenfor.

Porter-fanen i Joiner-transformasjonen med hovedflagget satt mot én kildepipeline

Trinn 8) Koble de relevante kolonnene fra Joiner-transformasjonen til måltabellen. Kartetping kjører nå fra begge kildene gjennom sammenføyningen til EMP_DEPTNAME.

Sammenkoblede kolonner lenket fra jnr_emp_dept til måltabellen EMP_DEPTNAME

Lagre kartet nåping og utfør den etter å ha opprettet en Session og arbeidsflyt for den. Sammenføyningen vil bli opprettet ved hjelp av Informatica Joiner, og relevante detaljer vil bli hentet fra begge tabellene.

Egenskaper for joiner-transformasjon

Egenskaper-fanen inneholder mer enn bare sammenføyningstypen. Innstillingene nedenfor kontrollerer hvor mye minne sammenføyningen bruker og hvor hurtigbufferfilene skrives.

Stille Hva den kontrollerer
Bli med Type Normal, Hoved-ytre, Detalj-ytre eller Fullstendig ytre. Bestemmer hvilke ikke-samsvarende rader som beholdes.
Bli med-betingelse Listen over master-til-detalj-portpar sammenlignet med likhetsoperatoren. Flere betingelser kombineres med AND.
Sortert inndata Erklærer at begge pipelines allerede ankommer sortert etter betingelsesportene, noe som lar integrasjonstjenesten minimere diskinndata og -utdata.
Hovedsorteringsrekkefølge Sorteringsrekkefølgen for hovedkildedataene, brukt sammen med sortert inndata.
Hurtigbufferkatalog Katalogen der indeks- og databufferfilene opprettes. Standardverdien er prosessvariabelen $PMCacheDir.
Størrelse på hurtigbuffer for joinerdata Størrelsen på databufferen som inneholder hovedraddataene. Standardinnstillingen er Auto, som lar integrasjonstjenesten angi størrelsen på den.
Størrelse på hurtigbuffer for joinerindeks Størrelsen på indeksbufferen som inneholder hovedbetingelsesverdiene. Standardinnstillingen er Auto.
Transformasjonsomfang Bruker sammenføyningen på hver transaksjon, på alle innkommende data eller på et omfang på radnivå.

Sortert input er innstillingen det er verdt å se etter først. Når begge pipelines ankommer ordnet etter betingelsesportene, trenger ikke integrasjonstjenesten å holde hele masterkilden før matchingen begynner, som er det samme prinsippet som brukes under ytelsesjustering av andre hurtigbufrede transformasjoner.

Regler og begrensninger for Joiner-transformasjon

Noen restriksjoner dukker bare opp når kartetping er validert, så det er billigere å kjenne dem før portene kobles sammen.

  • Kun likestilling. En sammenføyningsbetingelse sammenligner porter med likhetsoperatoren. Sammenligningsoperatorer som større enn, mindre enn eller ikke lik godtas ikke i betingelsen.
  • Samsvarende datatyper. Begge portene i en betingelse må ha samme datatype. Designeren validerer dette, så kolonner som ikke samsvarer må konverteres først, vanligvis i en uttrykkstransformasjon.
  • Ingen oppdateringsstrategi oppstrøms. En Joiner-transformasjon kan ikke brukes når en av inndatapipelinene inneholder en Update Strategy-transformasjon.
  • Ingen sekvens Generator rett før den. Koble til en sekvens Generator Transformasjon rett oppstrøms for Joiner støttes ikke.
  • Caching kan ikke slås av. Hovedpipelinen er alltid mellomlagret, og det er derfor den mindre kilden hører hjemme på hovedsiden, og hvorfor mellomlagsstørrelsen er viktig på store koblinger.

Å koble sammen tre kilder krever to Joiner-transformasjoner kjedet sammen, fordi hver av dem aksepterer nøyaktig én hoved- og én detaljpipeline. Der den andre kilden er en liten referansetabell som leses rad for rad i stedet, en Oppslagstransformasjon er ofte den enklere designen.

Spørsmål og svar

To. Hver Joiner aksepterer én master- og én detaljpipeline, så å koble sammen tre kilder betyr å kjede sammen to av dem: utgangen fra den første blir en input-pipeline for den andre. Generelt sett trenger n kilder n minus én.

Når begge tabellene ligger i den samme relasjonsdatabasen. Kildekvalifikatoren skyver den koblingen ned til databasen, noe som unngår mellomlagring fullstendig. Bruk bare koblingen når de to kildene er heterogene eller allerede er i separate pipelines.

Indeksbufferen lagrer hovedportverdiene som er navngitt i sammenføyningsbetingelsen, og databufferen lagrer de gjenværende hovedraddataene som returneres av sammenføyningen. Begge er bygget kun fra hovedpipelinen, aldri fra detaljpipelinen.

Nei. En nullverdi i en av portene fører til at betingelsen mislykkes, akkurat som i SQL, så disse radene behandles som umatchede. Erstatt nullverdier med en standardverdi oppstrøms når de skal bli koblet sammen.

Ja. Legg til kildedefinisjonen på kartetping to ganger slik at det finnes to separate pipelines, og mat deretter én inn på mastersiden og én inn på detaljsiden. Dette er den vanlige måten å løse en lederkolonne tilbake til et ansattnavn.

Ja, og det heterogene tilfellet er hovedårsaken til at transformasjonen eksisterer. En flat filpipeline og en relasjonell pipeline kobles sammen på samsvarende porter akkurat som to databasetabeller ville gjort, fordi sammenkoblingen skjer inne i integrasjonstjenesten.

AI-assistenter profilerer begge kildene for å foreslå mulige sammenføyningsnøkler, estimere radantall slik at den minste siden velges som master, og flagge skjeve kolonner eller kolonner med høyt nulltall som ville sprenge resultatsettet. Maskinlæringsbaserte rådgivere rangerer også alternativer for cache-størrelse.

Copilot utarbeider raskt den tilsvarende SQL-en og datatypekonverteringene, noe som forkorter arbeidet med å forberede porter. Den kan ikke se cache-størrelsene eller radantallene dine, så bekreft alle forslag mot kartet.ping før du lagrer den.

Oppsummer dette innlegget med: