Rangordna transformation i Informatica med EXEMPEL

⚡ Smart sammanfattning

Ranktransformation i Informatica är ett aktivt, anslutet objekt som endast behåller de översta eller nedersta N raderna i varje grupp och tilldelar varje överlevande rad en position via sin automatiska RANKINDEX-utdataport.

  • ???? Övre eller nedre N: Egenskaperna Top/Bottom och Number of Ranks avgör tillsammans vilka rader som överlever filtret.
  • 🗂️ Rankning per grupp: Gruppera efter portar startar om rankningen för varje grupp, så att varje avdelning kan returnera sina egna topp tre.
  • 🔢 Rankport: Exakt en port bär R-flaggan, och den enda kolumnen är det värde som rankningen beräknas på.
  • 📍 RANKINDEX: Designern lägger automatiskt till den här utdataporten för att behålla positionen för varje rad i sin grupp.
  • 🧪 Utarbetat exempel: Åtta kartaping Designersteg laddar de tre högst betalda anställda per avdelning i EMP_TARGET.
  • 💾 Cachad och aktiv: Gruppvärden och raddata lagras i ett index och en datacache, och radantalet ändras.

Rangtransformation i Informatica

Vad är Rank Transformation?

Rangtransformation är en aktiv och sammankopplad transformation som utför filtrering av data baserat på grupp och rangordning. Om du till exempel vill få tio poster med anställda med högst lön kan den typen av filtrering göras med rangtransformationen.

Rangomvandling ger också funktionen att rangordna baserat på grupper. Om du till exempel vill få de tio högsta avlönade per avdelning, den gruppenping kan göras med denna omvandling.

Rangtransformation är en aktiv transformation, eftersom den påverkar antalet utdatarader.

Rank-transformationen har en utdataport genom vilken den tilldelar en rangordning till raderna. Den porten heter RANKINDEX, och Designern skapar den automatiskt så snart transformationen läggs till i kartaping.

Eftersom rankningen måste jämföra varje rad i en grupp innan den kan avgöra vilka rader som vinner, cachar integrationstjänsten inkommande data. Gruppvärdena hamnar i en indexcache och resten av raddata hamnar i en datacache, på samma sätt som en cachelagrad [kod/kod/etc]. Snickarförvandling innehar sin huvudpipeline.

Portar i en rangtransformation

Innan det bearbetade exemplet är det bra att veta vad varje portflagga på fliken Portar faktiskt gör, eftersom två av dem gör det verkliga arbetet med denna omvandling.

Port typ Vad den gör
Ingång (I) Tar emot en kolumn från den uppströms transformationen. Varje kolumn som är länkad till Rank-transformationen är en indataport.
Utgång (O) Skickar en kolumn vidare till nästa transformation eller till målet.
Variabel (V) Håller en lokal beräkning inuti transformationen, precis som i en uttryckstransformation.
Rang (R) Markerar den kolumn som rankningen beräknas på. Endast en enda port i transformationen kan bära denna flagga.
Grupp av Startar om rankningen för varje distinkt värde, så ett filter för de tre bästa returnerar tre rader per grupp istället för tre rader totalt.
RANKINDEX En port som endast är avsedd för utdata och skapas av designern. Den lagrar rankningspositionen för varje rad inom sin grupp och kan lämnas opererad.

Rankning kan endast göras på en enda hamn, så ett krav som "högsta lön, sedan längsta tjänstgöring" behöver det avgörande värdet förberett uppströms snarare än en hamn med andra rang.

Hur man använder rangtransformation i Informatica

Vårt krav är att ladda de 3 högsta avlönade anställda för varje avdelning; vi kommer att implementera detta med hjälp av rangtransformation. Arbeta dig igenom de åtta stegen nedan i kartan.ping Designer.

Steg 1) Skapa en kartaping med käll-EMP och mål-EMP_TARGET. Båda definitionerna finns nu på arbetsytan, som visas nedan.

Kartaping Designer som visar EMP-källdefinitionen och EMP_TARGET-måldefinitionen

Steg 2) Sedan på kartanping

  1. Välj transformationsmeny
  2. Välj skapa alternativ

Transformationsmenyn med alternativet Skapa visas härnäst.

Transformationsmenyn öppnades i kartanping Designer med alternativet Skapa markerat

Steg 3) I fönstret Skapa transformation

  1. Välj rank transformation
  2. Ange transformationsnamnet "rnk_salary"
  3. Välj knappen Skapa

Skapa transformationsfönstret med Rang vald och namnet rnk_salary angivet

Steg 4) Ranktransformationen kommer att skapas på kartanping, välj knappen klar i fönstret. Det tomma rnk_salary-objektet visas nu på arbetsytan.

Rangomvandlingen rnk_salary skapades och placerades på kartanping canvas

Steg 5) Anslut alla portar från källkvalificerare till Rank-transformationen, så att varje medarbetarkolumn är tillgänglig för rangordning.

Alla källkvalificeringsportar länkade till rnk_salary Rank-transformationen

Steg 6) Double Klicka på Rank-transformationen så öppnas fönstret "Redigera transformation". I det här fönstret

  1. Välj egenskapsmeny
  2. Välj "Top" alternativet från Top/Bottom-egenskapen
  3. Ange 3 i antalet led

Fliken Egenskaper visar nu Topp med tre rankningar, som skärmdumpen visar.

Fliken Egenskaper för Ranktransformationen med Topp vald och tre angivna som antal rangordningar

Steg 7) I fönstret "redigera transformation" igen

  1. Välj fliken portar
  2. Välj grupp för alternativ för kolumnen Avdelningsnummer
  3. Välj Rank i lönekolumnen
  4. Välj OK-knappen

Fliken Portar har nu gruppflaggan på avdelningsnumret och R-flaggan på lön.

Fliken Portar i Ranktransformationen med gruppering efter angiven på avdelningsnumret och rang angiven på lönekolumnen

Steg 8) Anslut portarna från Rank-transformationen till måltabellen. Kartanping körs nu från EMP via rnk_salary till EMP_TARGET.

Rankade portar länkade från rnk_salary Rank-transformationen till EMP_TARGET-tabellen

Spara nu kartanping och kör den efter att ha skapat en session och arbetsflödeKällkvalificeraren hämtar alla poster, men Rank-transformationen godkänner endast poster med tre höga löner för varje avdelning.

Egenskaper för rangomvandling

Fliken Egenskaper som användes i steg 6 innehåller fler än de två inställningar som exemplet ändrar. Inställningarna nedan styr hur många rader som finns kvar, hur strängar jämförs och vart cachefilerna skrivs.

Fast egendom Vad den kontrollerar
Topp / botten Om de högsta eller lägsta värdena behålls för den rankade kolumnen. Exemplet använder Topp.
Antal rangordningar Hur många rader returneras per grupp. Exemplet använder 3, så varje avdelning returnerar tre anställda.
Jämförelse av skiftlägeskänsliga strängar Huruvida strängjämförelser använder gemener och versaler vid rangordning. Det spelar bara roll när rangordningsporten innehåller text.
Cachekatalog Katalogen där index- och datacachefilerna skapas. Standardvärdet är processvariabeln $PMCacheDir.
Storlek på rangdatacache Storleken på datacachen som innehåller raddata. Standardinställningen är Auto, vilket låter integrationstjänsten ange storleken på den.
Storlek på cache för rangindex Storleken på indexcachen som innehåller gruppvärdena. Standardinställningen är Auto.
Transformationsomfattning Tillämpar rankningen på varje transaktion eller på all inkommande data.
Tracingnivå Mängd detaljer som skrivs till sessionsloggen: Kortfattad, Normal, Utförlig initialisering eller Utförliga data.

Cachestorlek är inställningen som är värd att återkomma till på stora källor. När cachen är för liten överför integrationstjänsten till disk, vilket är en av de första sakerna som kontrolleras under prestandajustering av en kartaping.

Rangtransformation kontra aggregatortransformation

Båda transformationerna är aktiva, båda cachar sina indata och båda erbjuder Group By-portar, så det är lätt att hitta fel port. Skillnaden är vad som kommer ut ur dem.

Punkt av jämförelse Rangomvandling Aggregatortransformation
Syfte Returnerar de översta eller nedersta N kompletta raderna i varje grupp Returnerar beräknade värden såsom SUMMA, AVG, MAX eller MIN per grupp
Rader returnerade Upp till antalet rangordningar per grupp, med alla deras kolumner intakta Normalt en sammanfattningsrad per grupp
Extra port tillagd RANKINDEX, som håller positionen för varje rad Ingen
Rankad eller aggregerad kolumn En port flaggad som rankport Valfritt antal portar som bär aggregerade uttryck

Enkelt uttryckt, en Aggregatortransformation svarar på "vilken är den högsta lönen på den här avdelningen", medan Rank-transformationen svarar på "vilka anställda tjänar den". När endast en delmängd av rader måste kasseras under ett enkelt villkor och ingen ordningsföljd är inblandad, en Filtertransformation är det billigare valet, eftersom det inte behöver någon cache alls.

Vanliga frågor

Nej. Rank är bara kopplad, så den måste finnas i dataflödet mellan två objekt. RANKINDEX-porten kan lämnas opererad, men själva transformationen kan inte anropas på samma sätt som en opererad sökning.

Oavgjorda rader får samma värde i rangindexet och transformationen hoppar sedan över nästa värde. Två anställda som delar andraplatsen visar därför båda 2, och följande rad visar 4 istället för 3.

Hela källan behandlas som en grupp, så transformationen returnerar endast det totala antalet rangordningar. Om man anger tre rangordningar utan en gruppport får man de tre högst betalda anställda i hela företaget, inte per avdelning.

Ja. Numeriska, sträng- och datum-/tidportar kan alla flaggas som rangport. För text avgör egenskapen Skiftlägeskänslig strängjämförelse om skiftläge påverkar ordningen, så kontrollera det innan sessionen körs.

Inte garanterat. Transformationen väljer vilka rader som överlever, den lovar inte i vilken ordning de når målet. Lägg till en Sorter-transformation på RANKINDEX-porten när laddningsordningen spelar roll.

A SQL Window-funktionen märker varje rad och lämnar filtreringen till en extern fråga. Informatica-transformationen märker och filtrerar i ett svep, och den fungerar på platta filer och andra icke-relationella källor där ingen databasmotor är tillgänglig.

Maskininlärningsmodeller poängsätter sannolikheten för churn, bedrägeri eller konvertering, och den poängen blir den rankade kolumnen. AI-rådgivare profilerar också gruppstorlekar så att cacheinställningar och antalet rankningar väljs utifrån verkliga data snarare än gissningar.

Copilot utarbetar motsvarande fönsterfunktionsfråga eller Python gruppera snabbt, vilket är användbart för att validera resultat. Den kan inte läsa din kartaping, så behandla varje förslag som ett utkast och jämför radantalet med sessionsloggen.

Sammanfatta detta inlägg med: