Ranger transformasjon i Informatica med EKSEMPEL

⚡ Smart oppsummering

Rangtransformasjon i Informatica er et aktivt, tilkoblet objekt som bare beholder de øverste eller nederste N radene i hver gruppe, og tilordner hver overlevende rad en posisjon gjennom sin automatiske RANKINDEX-utgangsport.

  • 🥇 Topp eller bunn N: Topp/bunn-egenskapen og Number of Ranks-egenskapen bestemmer sammen hvilke rader som overlever filteret.
  • 🗂️ Rangering etter gruppe: Grupper etter porter starter rangeringen på nytt for hver gruppe, slik at hver avdeling kan returnere sine egne topp tre.
  • 🔢 Rangport: Nøyaktig én port har R-flagget, og den ene kolonnen er verdien rangeringen beregnes på.
  • 📍 RANGERINGSINDEKS: Designeren legger til denne kun-utdataporten automatisk for å holde posisjonen til hver rad i gruppen.
  • 🧪 Utarbeidet eksempel: Åtte kartping Designertrinn laster inn de tre best betalte ansatte per avdeling i EMP_TARGET.
  • 💾 Bufret og aktiv: Gruppeverdier og raddata lagres i en indeks og en databuffer, og radantallet endres.

Rangeringstransformasjon i Informatica

Hva er rangeringstransformasjon?

Rangtransformasjon er en aktiv og tilkoblet transformasjon som utfører filtrering av data basert på gruppe og rang. Hvis du for eksempel ønsker å få ti poster med ansatte som har høyest lønn, kan den typen filtrering gjøres med rangtransformasjonen.

Rangtransformasjon gir også funksjonen for å rangere basert på grupper. Hvis du for eksempel vil få de ti beste lønnede ansatte avdelingsvis, vil den gruppenping kan gjøres med denne transformasjonen.

Rangeringstransformasjon er en aktiv transformasjon, da den påvirker antall utdatarader.

Rank-transformasjonen har en utgangsport som den bruker for å tilordne en rang til radene. Denne porten heter RANKINDEX, og designeren oppretter den automatisk så snart transformasjonen legges til i kartping.

Fordi rangeringen må sammenligne hver rad i en gruppe før den kan avgjøre hvilke rader som vinner, mellomlagrer integrasjonstjenesten de innkommende dataene. Gruppeverdier går inn i en indeksbuffer, og resten av raddataene går inn i en databuffer, på samme måte som en mellomlagret Snekker transformasjon har sin hovedpipeline.

Porter i en rangtransformasjon

Før det utarbeidede eksemplet, hjelper det å vite hva hvert portflagg på Porter-fanen faktisk gjør, fordi to av dem gjør den virkelige jobben med denne transformasjonen.

port~~POS=TRUNC Hva det gjør
Inngang (I) Mottar en kolonne fra oppstrømstransformasjonen. Hver kolonne som er koblet til Rank-transformasjonen er en inndataport.
Utgang (O) Sender en kolonne videre til neste transformasjon eller til målet.
Variabel (V) Holder en lokal beregning inne i transformasjonen, akkurat som i en uttrykkstransformasjon.
Rangering (R) Markerer den ene kolonnen rangeringen beregnes på. Bare én port i transformasjonen kan bære dette flagget.
Gruppe av Starter rangeringen på nytt for hver enkelt verdi, slik at et topp-tre-filter returnerer tre rader per gruppe i stedet for tre rader totalt.
RANGERINGSINDEKS En port kun for utdata opprettet av designeren. Den lagrer rangeringsposisjonen til hver rad i gruppen og kan stå ukoblet.

Rangering kan kun gjøres på én enkelt port, så et krav som «høyeste lønn, deretter lengste tjenestetid» krever at den avgjørende verdien utarbeides oppstrøms i stedet for en port med andre rang.

Slik bruker du rangtransformasjon i Informatica

Kravet vårt er å laste inn de tre øverste lønnede ansatte for hver avdeling. Vi vil implementere dette ved hjelp av rangtransformasjon. Arbeid deg gjennom de åtte trinnene nedenfor i kartet.ping Designer.

Trinn 1) Lag et kartping har kilde-EMP og mål-EMP_TARGET. Begge definisjonene ligger nå på lerretet, som vist nedenfor.

kartping Designer som viser EMP-kildedefinisjonen og EMP_TARGET-måldefinisjonen

Trinn 2) Så på kartetping

  1. Velg transformasjonsmeny
  2. Velg opprettingsalternativ

Transformasjonsmenyen med Opprett-alternativet vises deretter.

Transformasjonsmenyen åpnet i kartetping Designer med Opprett-alternativet uthevet

Trinn 3) I opprett transformasjonsvinduet

  1. Velg rangeringstransformasjon
  2. Skriv inn transformasjonsnavnet "rnk_salary"
  3. Velg Opprett-knappen

Opprett transformasjonsvindu med valgt rangering og skrevet inn navnet rnk_salary

Trinn 4) Rangtransformasjonen vil bli opprettet på kartetping, velg ferdig-knappen i vinduet. Det tomme rnk_salary-objektet vises nå på lerretet.

Rangtransformasjon rnk_salary opprettet og plassert på kartetping lerret

Trinn 5) Koble til alle portene fra kildekvalifikator til Rang-transformasjonen, slik at hver ansattkolonne er tilgjengelig for rangering.

Alle kildekvalifikatorporter koblet til rnk_salary Rank-transformasjonen

Trinn 6) Double Klikk på rangtransformasjonen, så åpnes vinduet «rediger transformasjon». I dette vinduet

  1. Velg egenskapsmenyen
  2. Velg "Top"-alternativet fra Top/Bottom-egenskapen
  3. Skriv inn 3 i antall rangeringer

Fanen Egenskaper viser nå Topp med tre rangeringer, som skjermbildet viser.

Egenskaper-fanen for rangtransformasjonen med Topp valgt og tre angitt som antall ranger

Trinn 7) I "rediger transformasjon"-vinduet igjen

  1. Velg kategorien porter
  2. Velg gruppe etter alternativ for kolonnen Avdelingsnummer
  3. Velg Rangering i lønnskolonnen
  4. Velg ok-knappen

Porter-fanen har nå gruppeflagget på avdelingsnummeret og R-flagget på lønn.

Porter-fanen i rangtransformasjonen med gruppering etter angitt på avdelingsnummeret og rang angitt på lønnskolonnen

Trinn 8) Koble portene fra Rank-transformasjonen til måltabellen. Kartetping kjører nå fra EMP gjennom rnk_salary til EMP_TARGET.

Rangerte porter lenket fra rnk_salary Rank-transformasjonen til EMP_TARGET-tabellen

Lagre kartet nåping og utfør den etter å ha opprettet en Session og arbeidsflytKildekvalifikatoren vil hente alle postene, men rangtransformasjonen vil bare overføre poster med tre høye lønninger for hver avdeling.

Egenskaper for rangtransformasjon

Egenskaper-fanen som ble brukt i trinn 6 inneholder mer enn de to innstillingene som eksemplet endrer. Innstillingene nedenfor kontrollerer hvor mange rader som overlever, hvordan strenger sammenlignes og hvor hurtigbufferfilene skrives.

Eiendom Hva den kontrollerer
Topp bunn Om de høyeste eller laveste verdiene beholdes for den rangerte kolonnen. Eksemplet bruker Topp.
Antall rangeringer Hvor mange rader returneres per gruppe? Eksemplet bruker 3, så hver avdeling returnerer tre ansatte.
Sammenligning av store og små bokstaver Om strengsammenligninger bruker store og små bokstaver under rangering. Det spiller bare rolle når rangeringsporten inneholder tekst.
Hurtigbufferkatalog Katalogen der indeks- og databufferfilene opprettes. Standardverdien er prosessvariabelen $PMCacheDir.
Størrelse på rangdatabuffer Størrelsen på databufferen som inneholder raddataene. Standardinnstillingen er Auto, som lar integrasjonstjenesten angi størrelsen på den.
Størrelse på rangindeksbuffer Størrelsen på indeksbufferen som inneholder gruppeverdiene. Standardinnstillingen er Auto.
Transformasjonsomfang Bruker rangeringen på hver transaksjon eller på alle innkommende data.
Tracing-nivå Mengde detaljer som skrives til øktloggen: Kortfattet, Normal, Utførlig initialisering eller Utførlige data.

Cache-størrelse er innstillingen som er verdt å se på igjen på store kilder. Når cachene er for små, overfører Integration Service til disk, noe som er noe av det første som sjekkes under ytelsesjustering av et kartping.

Rangtransformasjon vs. aggregatortransformasjon

Begge transformasjonene er aktive, begge mellomlagrer inputen sin og begge tilbyr Group By-porter, så det er lett å finne feil port. Forskjellen er hva som kommer ut av dem.

Sammenligningspunkt Rangtransformasjon Aggregatortransformasjon
Formål Returnerer de øverste eller nederste N komplette radene i hver gruppe Returnerer beregnede verdier som SUM, AVG, MAX eller MIN per gruppe
Rader returnert Opptil antall ranger per gruppe, med alle kolonnene intakte Normalt én sammendragsrad per gruppe
Ekstra port lagt til RANKINDEX, som holder posisjonen til hver rad none
Rangert eller aggregert kolonne Én port markert som rangport Et hvilket som helst antall porter som bærer aggregerte uttrykk

Enkelt sagt, en Aggregatortransformasjon svarer på «hva er den høyeste lønnen i denne avdelingen», mens rangtransformasjon svarer på «hvilke ansatte tjener den». Når bare et delsett av rader må forkastes under en enkel betingelse og ingen rekkefølge er involvert, vil en Filtertransformasjon er det billigere valget, fordi det ikke trenger noen hurtigbuffer i det hele tatt.

Spørsmål og svar

Nei. Rank er bare tilkoblet, så den må sitte i dataflyten mellom to objekter. RANKINDEX-porten kan være frakoblet, men selve transformasjonen kan ikke kalles på samme måte som et frakoblet oppslag kalles.

Rader med like deler får samme verdi i rangindeksen, og transformasjonen hopper deretter over neste verdi. To ansatte som deler andreplassen viser derfor begge 2, og den påfølgende raden viser 4 i stedet for 3.

Hele kilden behandles som én gruppe, så transformasjonen returnerer bare antall ranger totalt. Hvis du angir tre ranger uten en gruppeport, får du de tre best betalte ansatte i hele selskapet, ikke per avdeling.

Ja. Numeriske, streng- og dato-/klokkeslettporter kan alle flagges som rangport. For tekst avgjør egenskapen for strengsammenligning med forskjellig bokstavstørrelse om store og små bokstaver påvirker rekkefølgen, så sjekk den før økten kjører.

Ikke garantert. Transformasjonen velger hvilke rader som overlever, den lover ikke rekkefølgen de når målet i. Legg til en sorteringstransformasjon på RANKINDEX-porten når lasterekkefølgen er viktig.

A SQL Window-funksjonen merker hver rad og overlater filtrering til en ekstern spørring. Informatica-transformasjonen merker og filtrerer i én omgang, og den fungerer på flate filer og andre ikke-relasjonelle kilder der ingen databasemotor er tilgjengelig.

Maskinlæringsmodeller scorer poster på sannsynlighet for churn, svindel eller konvertering, og denne poengsummen blir rangeringskolonnen. AI-rådgivere profilerer også gruppestørrelser, slik at hurtigbufferinnstillinger og antall rangeringer velges fra reelle data i stedet for gjetting.

Copilot utarbeider den tilsvarende vindusfunksjonsspørringen eller Python gruppere raskt, noe som er nyttig for å validere resultater. Den kan ikke lese kartet dittping, så behandle alle forslag som et utkast og sammenlign radantallene med øktloggen.

Oppsummer dette innlegget med: