Dela via


Avancerade ämnen för SAP CDC

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Lär dig mer om avancerade ämnen för SAP CDC-anslutningsappen, till exempel metadatadriven dataintegrering, felsökning med mera.

Parametrisera ett SAP CDC-mappningsdataflöde

En av de viktigaste fördelarna med pipelines och mappning av dataflöden i Azure Data Factory och Azure Synapse Analytics är stödet för metadatadriven dataintegrering. Med den här funktionen är det möjligt att utforma en enda (eller några) parametriserad pipeline som kan användas för att hantera integrering av potentiellt hundratals eller till och med tusentals källor. SAP CDC-anslutningsappen har utformats med den här principen i åtanke: alla relevanta egenskaper, oavsett om det är källobjektet, körningsläget, nyckelkolumnerna osv., kan tillhandahållas via parametrar för att maximera flexibiliteten och återanvändningspotentialen för SAP CDC-mappningsdataflöden.

Information om de grundläggande begreppen för parametrisering av mappningsdataflöden finns i Parameterisera mappning av dataflöden.

I mallgalleriet för Azure Data Factory och Azure Synapse Analytics hittar du en mallpipeline och ett dataflöde som visar hur du parametriserar SAP CDC-datainmatning.

Parametrisera källa och körningsläge

Mappning av dataflöden kräver inte nödvändigtvis en datauppsättningsartefakt: både käll- och mottagartransformeringar erbjuder en källtyp (eller mottagartyp) infogad. I det här fallet kan alla källegenskaper som annars definierats i en ADF-datauppsättning konfigureras i källalternativen för källtransformeringen (eller fliken Inställningar i mottagarens transformering). Med hjälp av en infogad datauppsättning får du bättre översikt och gör det enklare att parametrisera ett mappningsdataflöde eftersom den fullständiga källkonfigurationen (eller mottagarkonfigurationen) underhålls på en enda plats.

För SAP CDC finns de egenskaper som oftast anges via parametrar i flikarna Källalternativ och Optimera. När källtypen är Infogad kan följande egenskaper parametriseras i Källalternativ.

  • ODP-kontext: giltiga parametervärden är
    • ABAP_CDS för ABAP Core Data Services-vyer
    • BW för SAP BW eller SAP BW/4HANA InfoProviders
    • HANA för SAP HANA-informationsvyer
    • SAPI för SAP DataSources/Extractors
    • När SAP Landscape Transformation Replication Server (SLT) används som källa är ODP-kontextnamnet SLT~<Queue Alias>. Värdet för köalias finns under Administrationsdata i SLT-konfigurationen i SLT-cockpiten (SAP-transaktions-LTRC).
    • ODP_SELF och RANDOM är ODP-kontexter som används för teknisk validering och testning och är vanligtvis inte relevanta.
  • ODP-namn: ange det ODP-namn som du vill extrahera data från.
  • Körningsläge: giltiga parametervärden är
    • fullAndIncrementalLoad for Full på den första körningen, sedan inkrementell, som initierar en process för insamling av ändringsdata och extraherar en aktuell fullständig ögonblicksbild av data.
    • fullLoad for Full på varje körning, vilket extraherar en aktuell fullständig dataögonblicksbild utan att initiera en ändringsdatainsamlingsprocess.
    • incrementalLoad för endast inkrementella ändringar, vilket initierar en ändringsdatainsamlingsprocess utan att extrahera en aktuell fullständig ögonblicksbild.
  • Nyckelkolumner: nyckelkolumner tillhandahålls som en matris med (dubbelciterade) strängar. När du till exempel arbetar med SAP-tabell-VBAP (försäljningsorderobjekt) måste nyckeldefinitionen vara ["VBELN", "POSNR"] (eller ["MANDT","VBELN","POSNR"] om även klientfältet beaktas).

Parametrisera filtervillkoren för källpartitionering

På fliken Optimera kan ett källpartitioneringsschema (se optimera prestanda för fullständig eller inledande belastning) definieras via parametrar. Normalt krävs två steg:

  1. Definiera källpartitioneringsschemat.
  2. Mata in partitioneringsparametern i dataflödet för mappning.

Definiera ett källpartitioneringsschema

Formatet i steg 1 följer JSON-standarden, som består av en matris med partitionsdefinitioner, som var och en i sig är en matris med enskilda filtervillkor. De här villkoren i sig är JSON-objekt med en struktur i linje med så kallade urvalsalternativ i SAP. I själva verket är formatet som krävs av SAP ODP-ramverket i princip detsamma som dynamiska DTP-filter i SAP BW:

{ "fieldName": <>, "sign": <>, "option": <>, "low": <>, "high": <> }

Till exempel

{ "fieldName": "VBELN", "sign": "I", "option": "EQ", "low": "0000001000" }

motsvarar en SQL WHERE-sats ... WHERE "VBELN" = "0000001000", eller

{ "fieldName": "VBELN", "sign": "I", "option": "BT", "low": "0000000000", "high": "0000001000" }

motsvarar en SQL WHERE-sats ... DÄR "VBELN" MELLAN "0000000000" OCH "0000001000"

En JSON-definition av ett partitioneringsschema som innehåller två partitioner ser därför ut så här

[
    [
        { "fieldName": "GJAHR", "sign": "I", "option": "BT", "low": "2011", "high": "2015" }
    ],
    [
        { "fieldName": "GJAHR", "sign": "I", "option": "BT", "low": "2016", "high": "2020" }
    ]
]

där den första partitionen innehåller räkenskapsår (GJAHR) 2011 till 2015 och den andra partitionen innehåller räkenskapsår 2016 till och med 2020.

Kommentar

Azure Data Factory utför inga kontroller av dessa villkor. Det ligger till exempel i användarens ansvar att se till att partitionsvillkoren inte överlappar varandra.

Partitionsvillkoren kan vara mer komplexa och består av flera elementära filtervillkor. Det finns inga logiska konjunktioner som uttryckligen definierar hur du kombinerar flera elementära villkor i en partition. Den implicita definitionen i SAP är följande:

  1. inklusive villkor ("sign": "I") för samma fältnamn kombineras med OR (mentalt, placera hakparenteser runt det resulterande villkoret)
  2. exkludera villkor ("sign": "E") för samma fältnamn kombineras med OR (återigen, mentalt, placera hakparenteser runt det resulterande villkoret)
  3. de resulterande villkoren i steg 1 och 2 är
    • kombinerat med AND för att inkludera villkor,
    • kombinerat med AND NOT för exkluderande villkor.

Till exempel partitionsvillkoret

    [
        { "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" }
    ]

motsvarar en SQL WHERE-sats ... WHERE ("BUKRS" = '1000' ELLER "BUKRS" = '1010') OCH ("GJAHR" MELLAN '2010' OCH '2025') AND NOT ("GJAHR" = '2021' eller "GJARH" = '2023')

Kommentar

Se till att använda sap-internt format för låga och höga värden, inkludera inledande nollor och expresskalenderdatum som en åtta teckenssträng med formatet "ÅÅÅÅMMDD".

Mata in partitioneringsparametern i mappning av dataflöde

Om du vill mata in partitioneringsschemat i ett mappningsdataflöde skapar du en dataflödesparameter (till exempel "sapPartitions"). Om du vill skicka JSON-formatet till den här parametern måste det konverteras till en sträng med hjälp av funktionen @string():

Skärmbild som visar hur du matar in partitioneringsschemat i mappning av dataflödet.

Slutligen går du till fliken optimera för källtransformeringen i ditt mappningsdataflöde och väljer Partitionstyp "Källa" och anger dataflödesparametern i egenskapen Partitionsvillkor .

Skärmbild som visar hur du använder partitioneringsparametern på fliken optimera i källtransformeringen.

Parametrisera kontrollpunktsnyckeln

När du använder ett parametriserat dataflöde för att extrahera data från flera SAP CDC-källor är det viktigt att parametrisera kontrollpunktsnyckeln i dataflödesaktiviteten i din pipeline. Kontrollpunktsnyckeln används av Azure Data Factory för att hantera statusen för en ändringsdatainsamlingsprocess. För att undvika att statusen för en CDC-process skriver över statusen för en annan, kontrollerar du att värdena för kontrollpunktsnyckeln är unika för varje parameteruppsättning som används i ett dataflöde.

Kommentar

Bästa praxis för att säkerställa att kontrollpunktsnyckeln är unik är att lägga till värdet för kontrollpunktsnyckeln i uppsättningen parametrar för ditt dataflöde.

Mer information om kontrollpunktsnyckeln finns i Transformera data med SAP CDC-anslutningsappen.

Felsökning

Azure Data Factory-pipelines kan köras via utlösta eller felsökningskörningar. En grundläggande skillnad mellan dessa två alternativ är att felsökningskörningar kör dataflödet och pipelinen baserat på den aktuella versionen som modelleras i användargränssnittet, medan utlösta körningar kör den senaste publicerade versionen av ett dataflöde och en pipeline.

För SAP CDC finns det ytterligare en aspekt som måste förstås: för att undvika påverkan av felsökningskörningar på en befintlig process för insamling av ändringsdata använder felsökningskörningar ett annat "prenumerantprocessvärde" (se Övervaka SAP CDC-dataflöden) än utlösta körningar. Därför skapar de separata prenumerationer (dvs. ändring av datainsamlingsprocesser) i SAP-systemet. Dessutom har värdet "prenumerantprocess" för felsökningskörningar en livslängd som är begränsad till webbläsarens användargränssnittssession.

Kommentar

För att testa stabiliteten i en process för insamling av ändringsdata med SAP CDC under en längre tidsperiod (till exempel flera dagar) måste dataflödet och pipelinen publiceras och utlösta körningar måste köras.