Transformatie van transactiecontrole in Informatica (voorbeeld)
โก Slimme samenvatting
De Transaction Control-transformatie in Informatica is een actief, verbonden object dat rijen vastlegt of terugdraait terwijl een kaart wordt gebruikt.ping De code wordt uitgevoerd met behulp van vijf ingebouwde variabelen binnen een voorwaarde die รฉรฉn keer per rij wordt geรซvalueerd.

Wat is transactiecontroletransformatie?
Transactiebeheer is een actieve en verbonden transformatie waarmee we transacties kunnen vastleggen of terugdraaien tijdens de uitvoering van de map.pingCommit- en rollback-bewerkingen zijn van groot belang omdat ze de beschikbaarheid van gegevens garanderen.
Bij het verwerken van grote hoeveelheden data kan het voorkomen dat de data naar de bestemming moet worden geschreven. Als een commit te vaak wordt uitgevoerd, leidt dit tot extra belasting van het systeem. Als een commit te laat wordt uitgevoerd, bestaat er bij een storing een kans op dataverlies.
Om flexibiliteit te bieden, is de Transaction Control-transformatie beschikbaar. In plaats van het commitpunt aan de standaardinstelling van de sessie over te laten, maakt deze transformatie het mogelijk om een โโvoorwaarde binnen de transactie te definiรซren. kaartping Bepaal regel voor regel waar de ene transactie eindigt en de volgende begint.
TCL-commit- en rollback-opdrachten
Deze transformatie beschikt over vijf ingebouwde variabelen om de bewerking af te handelen. De voorwaarde moet voor elke rij een van deze vijf variabelen retourneren; een waarde buiten deze lijst zorgt ervoor dat de Integration Service de sessie beรซindigt.
TC_CONTINUE_TRANSACTION
In TC_CONTINUE_TRANSACTION worden geen bewerkingen uitgevoerd; het data-laadproces gaat gewoon verder. Dit is de standaardwaarde van de expressie.
TC_COMMIT_BEFORE
In TC_COMMIT_BEFORE wordt, wanneer deze vlag is ingesteld, een commit uitgevoerd vรณรณr de verwerking van de huidige rij. Vervolgens start een nieuwe transactie en wordt de huidige rij naar de bestemming geschreven.
TC_COMMIT_AFTER
In TC_COMMIT_AFTER wordt de huidige rij verwerkt, waarna een commit wordt uitgevoerd en de volgende transactie begint.
TC_ROLLBACK_BEFORE
In TC_ROLLBACK_BEFORE wordt eerst de rollback uitgevoerd, waarna de gegevens worden verwerkt om te worden weggeschreven.
TC_ROLLBACK_AFTER
In TC_ROLLBACK_AFTER worden de gegevens verwerkt en vervolgens wordt de rollback uitgevoerd.
Transformatie-eigenschappen voor transactiebeheer
Het object wordt geconfigureerd vanuit het venster 'Transformaties bewerken', dat dezelfde vier tabbladen heeft als de andere PowerCenter-transformaties. Weten welk tabblad bij welke instelling hoort, bespaart een hoop zoekwerk tijdens de onderstaande stappen.
| Tab | Wat is daar geconfigureerd? |
| Transformatie | De naam van de transformatie, de beschrijving ervan en of het object herbruikbaar is gemaakt. |
| poorten | De invoer- en uitvoerpoorten worden normaal gesproken gemaakt door de kolommen vanuit de upstream-transformatie te slepen. |
| Aanbod | De transactiecontrolevoorwaarde, die wordt geopend met het kleine pijltje naast het veld, en de TracHet ing-niveau is in het sessielogboek vastgelegd. |
| Metadata-extensies | Door de gebruiker gedefinieerde metadata worden samen met de transformatie in de repository bewaard. |
Twee instellingen doen het echte werk. De Transactiecontrolevoorwaarde Bevat de expressie, die meestal een IIF()-test is die een van de vijf variabelen retourneert. Tracing Niveau Bepaalt hoeveel details over de transformatie in het sessielogboek verschijnen wanneer de uitvoering wordt onderzocht.
Eรฉn instelling bevindt zich buiten de transformatie. Wanneer een kaartping als er een effectieve transactiecontrole-transformatie aanwezig is, wordt de sessie uitgevoerd met de Committype ingesteld op Gebruikersgedefinieerd op het tabblad Eigenschappen van de sessie, in plaats van de Target of broncommittypen die een vast commitinterval gebruiken.
Hoe gebruik je de transactiecontroletransformatie in Informatica?
In dit voorbeeld zullen we gegevens naar het doel opslaan wanneer aan de voorwaarde dept no = 20 is voldaan.
Stap 1) Maak een kaartping met EMP als bron en EMP_TARGET als doel. De kaartping Het ontwerpcanvas bevat vervolgens de bron, de bijbehorende bronkwalificatie en de doeldefinitie.
Stap 2) Maak een nieuwe transformatie aan via het menu Transformatie en vervolgens in het venster Transformatie aanmaken:
- Selecteer een transactiecontrole als de nieuwe transformatie.
- Voer de transformatienaam โtc_commit_dept20โ in
- Selecteer optie maken
Stap 3) De transformatie Transaction Control wordt aangemaakt. Selecteer de knop 'Gereed'. Het nieuwe object verschijnt nu op het canvas naast de Source Qualifier.
Stap 4) Sleep alle kolommen van de Source Qualifier naar de Transaction Control-transformatie en koppel vervolgens alle kolommen van de Transaction Control-transformatie aan de doeltabel. De pipeline wordt nu uitgevoerd als volgt: source โ Source Qualifier โ tc_commit_dept20 โ EMP_TARGET.
Stap 5) Double Klik op de transformatie 'Transactiebeheer' en vervolgens in het venster 'Eigenschappen bewerken':
- Selecteer het tabblad Eigenschappen
- Klik op het pictogram van de transactiecontrole-editor
Stap 6) Voer de expressie in de expressie-editor in โ
iif(deptno=20,tc_commit_before,tc_continue_transaction)
en selecteer OK. Dit betekent dat als afdelingsnummer 20 wordt gevonden, de transactie in het doel moet worden vastgelegd, anders moet de huidige verwerking worden voortgezet.
Stap 7) Selecteer OK in het vorige venster. De voorwaarde is nu opgeslagen op het tabblad Eigenschappen van de transformatie.
Sla de kaart nu op.ping en voer het uit na het aanmaken van de sessie en workflows. Deze kaartping De gegevens worden naar het doeladres verzonden zodra afdelingsnummer 20 in de gegevens wordt gevonden.
Effectieve en ineffectieve transformaties van transactiecontrole
De transformatie is een transactiegenerator. Hij negeert alle transactiegrenzen die van bovenaf binnenkomen en definieert zelf nieuwe grenzen voor alles wat erna komt. Daarom is zijn positie in de pipeline net zo belangrijk als zijn status.
Het heet effectief voor een doel wanneer de grenzen die het creรซert dat doel nog steeds bereiken, en ineffectief wanneer een latere transformatie die grenzen negeert. Volgens de Informatica PowerCenter Transformation Guide laten de volgende objecten inkomende transactiegrenzen vallen:
- Een aggregator, Schrijnwerker, Rang, Sorteer- of aangepaste transformatie waarvan het transformatiebereik alle invoer is
- Een aangepaste transformatie geconfigureerd om transacties te genereren.
- Nog een transformatie van transactiebeheer
- Een transformatie met meerdere invoergroepen, verbonden met meer dan รฉรฉn upstream transactiecontrolepunt.
Dat een object niet effectief is voor het doel, betekent niet dat het nutteloos is. Een downstream-transformatie waarvan het transformatiebereik 'Transactie' is, gebruikt nog steeds de grenzen die upstream zijn gedefinieerd. Dezelfde transformatie kan dus effectief zijn voor een sorteerder, maar niet effectief voor de tabel erachter.
Op een kaartping Bij meerdere doelen kan het object effectief zijn voor het ene doel en niet effectief voor het andere. De kaartping Deze functie blijft geldig zolang elk doel is verbonden met een effectieve transactiecontroletransformatie en wordt ongeldig zodra รฉรฉn doel niet meer is verbonden. De ontwerper meldt welke transformaties niet effectief zijn voor doelen wanneer de kaartping wordt opgeslagen of gevalideerd.
Regels en richtlijnen voor de transformatie van transactiebeheer
De meeste problemen met deze transformatie komen aan het licht tijdens de uitvoering, en niet tijdens het ontwerpen. Daarom is het raadzaam de onderstaande punten te controleren voordat de sessie wordt opgebouwd.
- De retourwaarde is strikt. Als de voorwaarde iets anders dan 'commit', 'rollback' of 'continue' oplevert, mislukt de sessie van de integratieservice.
- TC_CONTINUE_TRANSACTION is het terugvalalternatief. Elke tak van de IIF() moet ergens eindigen, en 'continue' is de waarde die de huidige transactie ongewijzigd laat.
- Het doeltype is van belang. Een transactiecontroletransformatie die is gekoppeld aan een ander doel dan een relationeel, XML- of dynamisch MQSeries-doel, is niet effectief voor dat doel.
- De aandoening kan alleen gebruiken wat haar bereikt. Alleen poorten die aan de transformatie zijn gekoppeld, de variabele poorten ervan en de ingebouwde variabelen zijn beschikbaar in de transactiebeheer-editor.
- De frequentie van commits is een afweging. Een voorwaarde die op bijna elke rij wordt uitgevoerd, heft het voordeel van buffering op, terwijl een voorwaarde die bijna nooit wordt geactiveerd het gegevensverliesvenster opnieuw introduceert dat de transformatie juist moest dichten.
- Controleer het sessielogboek. Het logboek registreert de commitpunten die daadwerkelijk zijn gebruikt, wat de snelste manier is om te bevestigen dat de situatie zich tijdens het proces naar behoren heeft gedragen. prestatieafstemming.







