Geavanceerde onderwerpen over SAP CDC
VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics
Tip
Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .
Meer informatie over geavanceerde onderwerpen voor de SAP CDC-connector, zoals integratie van metagegevensgestuurde gegevens, foutopsporing en meer.
Een SAP CDC-toewijzingsgegevensstroom parametrizeren
Een van de belangrijkste sterke punten van pijplijnen en toewijzingsgegevensstromen in Azure Data Factory en Azure Synapse Analytics is de ondersteuning voor integratie van metagegevensgestuurde gegevens. Met deze functie is het mogelijk om één (of weinig) geparametriseerde pijplijn te ontwerpen die kan worden gebruikt voor het afhandelen van de integratie van mogelijk honderden of zelfs duizenden bronnen. De SAP CDC-connector is ontworpen met dit principe in gedachten: alle relevante eigenschappen, of het nu het bronobject, de uitvoeringsmodus, sleutelkolommen, enzovoort zijn, kunnen worden opgegeven via parameters om de flexibiliteit te maximaliseren en het potentieel van SAP CDC-toewijzingsgegevensstromen te hergebruiken.
In de sjabloongalerie van Azure Data Factory en Azure Synapse Analytics vindt u een sjabloonpijplijn en gegevensstroom die laat zien hoe u SAP CDC-gegevensopname kunt parametrizeren.
Bron- en uitvoeringsmodus parametrizeren
Toewijzingsgegevensstromen vereisen niet noodzakelijkerwijs een gegevenssetartefact: zowel bron- als sinktransformaties bieden een brontype (of sinktype) Inline. In dit geval kunnen alle broneigenschappen die anders zijn gedefinieerd in een ADF-gegevensset worden geconfigureerd in de bronopties van de brontransformatie (of het tabblad Instellingen van de sinktransformatie). Het gebruik van een inlinegegevensset biedt een beter overzicht en vereenvoudigt het parametrizeren van een toewijzingsgegevensstroom, omdat de volledige bronconfiguratie (of sink) op één plaats wordt onderhouden.
Voor SAP CDC vindt u de eigenschappen die het meest worden ingesteld via parameters in de tabbladen Bronopties en Optimaliseren. Wanneer het brontype Inline is, kunnen de volgende eigenschappen worden geparametriseerd in bronopties.
- ODP-context: geldige parameterwaarden zijn
- ABAP_CDS voor ABAP Core Data Services-weergaven
- BW voor SAP BW of SAP BW/4HANA InfoProviders
- HANA voor SAP HANA-informatieweergaven
- SAPI voor SAP DataSources/Extractors
- wanneer SAP Landscape Transformation Replication Server (SLT) wordt gebruikt als bron, is de ODP-contextnaam SLT~<Queue Alias>. De waarde van de wachtrijalias vindt u onder Beheergegevens in de SLT-configuratie in de SLT-cockpit (SAP transaction LTRC).
- ODP_SELF en RANDOM zijn ODP-contexten die worden gebruikt voor technische validatie en tests en zijn doorgaans niet relevant.
- ODP-naam: geef de ODP-naam op waaruit u gegevens wilt extraheren.
- Uitvoeringsmodus: geldige parameterwaarden zijn
- fullAndIncrementalLoad voor Volledig tijdens de eerste uitvoering, vervolgens incrementeel, waarmee een proces voor het vastleggen van wijzigingsgegevens wordt gestart en een huidige momentopname van volledige gegevens wordt geëxtraheerd.
- fullLoad voor Volledig bij elke uitvoering, waarmee een huidige momentopname van volledige gegevens wordt geëxtraheerd zonder een proces voor het vastleggen van wijzigingen van gegevens te starten.
- incrementalLoad alleen voor incrementele wijzigingen, waardoor een proces voor het vastleggen van wijzigingen wordt gestart zonder een huidige volledige momentopname te extraheren.
- Sleutelkolommen: sleutelkolommen worden geleverd als een matrix van tekenreeksen met dubbele aanhalingstekens. Wanneer u bijvoorbeeld met SAP-tabel VBAP (verkooporderitems) werkt, moet de sleuteldefinitie ["VBELN", "POSNR"] (of ["MANDT","VBELN","POSNR"] zijn als ook rekening wordt gehouden met het clientveld).
De filtervoorwaarden voor bronpartitionering parametrizeren
Op het tabblad Optimaliseren kan een bronpartitioneringsschema (zie de prestaties voor volledige of initiële belastingen optimaliseren) worden gedefinieerd via parameters. Normaal gesproken zijn er twee stappen vereist:
- Definieer het bronpartitioneringsschema.
- De partitioneringsparameter opnemen in de toewijzingsgegevensstroom.
Een bronpartitioneringsschema definiëren
De indeling in stap 1 volgt de JSON-standaard, bestaande uit een matrix met partitiedefinities, die elk zelf een matrix van afzonderlijke filtervoorwaarden is. Deze voorwaarden zelf zijn JSON-objecten met een structuur die is uitgelijnd met zogenaamde selectieopties in SAP. De indeling die is vereist voor het SAP ODP-framework is in feite hetzelfde als dynamische DTP-filters in SAP BW:
{ "fieldName": <>, "sign": <>, "option": <>, "low": <>, "high": <> }
Bijvoorbeeld
{ "fieldName": "VBELN", "sign": "I", "option": "EQ", "low": "0000001000" }
komt overeen met een SQL WHERE-component ... WHERE "VBELN" = '0000001000', of
{ "fieldName": "VBELN", "sign": "I", "option": "BT", "low": "0000000000", "high": "0000001000" }
komt overeen met een SQL WHERE-component ... WAARBIJ 'VBELN' TUSSEN '0000000000' EN '0000001000'
Een JSON-definitie van een partitioneringsschema met twee partities ziet er als volgt uit
[
[
{ "fieldName": "GJAHR", "sign": "I", "option": "BT", "low": "2011", "high": "2015" }
],
[
{ "fieldName": "GJAHR", "sign": "I", "option": "BT", "low": "2016", "high": "2020" }
]
]
waarbij de eerste partitie boekjaren (GJAHR) 2011 tot en met 2015 bevat en de tweede partitie boekjaren 2016 tot en met 2020 bevat.
Notitie
Azure Data Factory voert geen controles uit op deze voorwaarden. Het is bijvoorbeeld de verantwoordelijkheid van de gebruiker om ervoor te zorgen dat partitievoorwaarden niet overlappen.
Partitievoorwaarden kunnen complexer zijn, bestaande uit meerdere elementaire filtervoorwaarden zelf. Er zijn geen logische combinaties die expliciet definiëren hoe meerdere elementaire voorwaarden binnen één partitie moeten worden gecombineerd. De impliciete definitie in SAP is als volgt:
- inclusief voorwaarden ("teken": "I") voor dezelfde veldnaam worden gecombineerd met OR (mentaal, haakjes plaatsen rond de resulterende voorwaarde)
- met uitzondering van voorwaarden ("teken": "E") voor dezelfde veldnaam worden gecombineerd met OR (opnieuw, mentaal, haakjes rond de resulterende voorwaarde plaatsen)
- de resulterende voorwaarden van stap 1 en 2 zijn
- gecombineerd met AND voor het opnemen van voorwaarden,
- gecombineerd met AND NOT voor uitsluitingsvoorwaarden .
Bijvoorbeeld: de partitievoorwaarde
[
{ "fieldName": "BUKRS", "sign": "I", "option": "EQ", "low": "1000" },
{ "fieldName": "BUKRS", "sign": "I", "option": "EQ", "low": "1010" },
{ "fieldName": "GJAHR", "sign": "I", "option": "BT", "low": "2010", "high": "2025" },
{ "fieldName": "GJAHR", "sign": "E", "option": "EQ", "low": "2023" },
{ "fieldName": "GJAHR", "sign": "E", "option": "EQ", "low": "2021" }
]
komt overeen met een SQL WHERE-component ... WHERE ("BUKRS" = '1000' OF "BUKRS" = '1010') EN ("GJAHR" BETWEEN '2010' EN '2025') EN NIET ("GJAHR" = '2021' of "GJARH" = '2023')
Notitie
Zorg ervoor dat u de interne SAP-indeling gebruikt voor de lage en hoge waarden, voorloopnullen opneemt en kalenderdatums uitdrukt als een tekenreeks van acht tekens met de notatie 'JJJJMMDD'.
De partitioneringsparameter opnemen in de toewijzingsgegevensstroom
Als u het partitioneringsschema wilt opnemen in een toewijzingsgegevensstroom, maakt u een gegevensstroomparameter (bijvoorbeeld 'sapPartitions'). Als u de JSON-indeling wilt doorgeven aan deze parameter, moet deze worden geconverteerd naar een tekenreeks met behulp van de functie @string():
Selecteer ten slotte op het tabblad Optimaliseren van de brontransformatie in de toewijzingsgegevensstroom het partitietype Bron en voer de parameter voor de gegevensstroom in de eigenschap Partitievoorwaarden in.
De controlepuntsleutel parametrizeren
Wanneer u een geparametriseerde gegevensstroom gebruikt om gegevens uit meerdere SAP CDC-bronnen te extraheren, is het belangrijk om de Controlepuntsleutel te parametriseren in de gegevensstroomactiviteit van uw pijplijn. De controlepuntsleutel wordt door Azure Data Factory gebruikt om de status van een wijzigingsgegevensopnameproces te beheren. Om te voorkomen dat de status van een CDC-proces de status van een ander proces overschrijft, moet u ervoor zorgen dat de sleutelwaarden van het controlepunt uniek zijn voor elke parameterset die in een gegevensstroom wordt gebruikt.
Notitie
Een best practice om de uniekheid van de controlepuntsleutel te garanderen, is door de sleutelwaarde van het controlepunt toe te voegen aan de set parameters voor uw gegevensstroom.
Zie Gegevens transformeren met de SAP CDC-connector voor meer informatie over de controlepuntsleutel.
Foutopsporing
Azure Data Factory-pijplijnen kunnen worden uitgevoerd via geactiveerde of foutopsporingsuitvoeringen. Een fundamenteel verschil tussen deze twee opties is dat foutopsporing de gegevensstroom en pijplijn uitvoert op basis van de huidige versie die is gemodelleerd in de gebruikersinterface, terwijl geactiveerde uitvoeringen de laatst gepubliceerde versie van een gegevensstroom en pijplijn uitvoeren.
Voor SAP CDC is er nog een aspect dat moet worden begrepen: om een impact te voorkomen van foutopsporingsuitvoeringen op een bestaand proces voor het vastleggen van wijzigingengegevens, gebruiken foutopsporingsuitvoeringen een andere waarde voor het abonneeproces (zie SAP CDC-gegevensstromen bewaken) dan geactiveerde uitvoeringen. Daarom maken ze afzonderlijke abonnementen (dat wil gezegd, processen voor het vastleggen van gegevens wijzigen) binnen het SAP-systeem. Bovendien heeft de waarde voor het 'abonneeproces' voor foutopsporingsuitvoeringen een levensduur die is beperkt tot de gebruikersinterfacesessie van de browser.
Notitie
Als u de stabiliteit van een proces voor het vastleggen van wijzigingengegevens met SAP CDC gedurende een langere periode (bijvoorbeeld meerdere dagen) wilt testen, moeten de gegevensstroom en pijplijn worden gepubliceerd en moeten geactiveerde uitvoeringen worden uitgevoerd.