Nagu teada, pakub ettevĂ”te SAP laia valikut tarkvaralahendusi nii tehingute andmete haldamiseks kui ka nende töötlemiseks analĂŒĂŒsi ja aruandluse sĂŒsteemides. Eriti huvitav on SAP Business Warehouse (SAP BW) platvorm, mis on andmete salvestamise ja analĂŒĂŒsimise tööriist, millel on laiad tehnilised vĂ”imalused. KĂ”ikide nende objektiivsete eeliste juures on SAP BW-l ĂŒks oluline puudus. See on kĂ”rge andmete salvestamise ja töötlemise maksumus, mis on eriti mĂ€rgatav, kui kasutada pilve pĂ”hinevat SAP BW on Hana.
Aga mis siis, kui hakata kasutama mĂ”nd non-SAP ja soovitavalt avatud lĂ€htekoodiga toodet? Me X5 Retail Groupis valisime GreenPlumi. See lahendab muidugi kulukĂŒsimuse, kuid samas tekivad koheselt kĂŒsimused, mis SAP BW kasutamisel lahendati praktiliselt vaikimisi.

Eriti see, kuidas andmeid allikate sĂŒsteemidest hankida, mis enamikul juhtudel on SAP lahendused?
âHR-mÔÔdikudâ sai esimeseks projektiks, kus tuli see probleem lahendada. Meie eesmĂ€rk oli luua HR-andmete andmehoidla ning koostada analĂŒĂŒtiline aruandlus töötajatega seotud tegevuste valdkonnas. Peamiseks andmeallikaks oli tehingute sĂŒsteem SAP HCM, kus haldatakse kĂ”ik personaliga, organisatsiooniga ja palgaga seotud toimingud.
Andmete vÀljavÔtt
SAP BW-s SAP sĂŒsteemide jaoks on olemas standardseid andmete vĂ€ljavĂ”tutekitore. Need vĂ€ljavĂ”tjad suudavad automaatselt koguda vajalikke andmeid, jĂ€lgida nende terviklikkust ja mÀÀrata muutuste delta. NĂ€iteks on olemas standardne andmeallikas töötaja atribuutide jaoks 0EMPLOYEE_ATTR:

Andmete vĂ€ljavĂ”tu tulemus ĂŒhe töötaja kohta:

Vajadusel saab sellist vÀljavÔtjat kohandada vastavalt isiklikele nÔudmistele vÔi luua omaenda vÀljavÔtja.
Esimene mĂ”te tekkis nende taaskasutamise vĂ”imaluse kohta. Kahjuks osutus see teoreetiliselt teostamatuks ĂŒlesandeks. Suur osa loogikast on rakendatud SAP BW poolel ning ektraktori eraldamine allikast SAP BW-st ilma probleemideta ei osutunud vĂ”imalikuks.
Selgeks sai, et on vajalik vĂ€lja töötada oma andmete ekstraktsiooni mehhanism SAP sĂŒsteemidest.
Andmete salvestamise struktuur SAP HCM-is
Kuna nÔuete mÔistmiseks on oluline mÀÀratleda, milliseid andmeid me tÀpselt vajame.
Enamik andmeid SAP HCM-is hoitakse tasapinnalistes SQL-tabelites. Nende andmete pÔhjal visualiseerivad SAP rakendused kasutajale organisatsioonistruktuure, töötajaid ja muud HR teavet. NÀiteks nÀeb SAP HCM vÀlja jÀrgmine organisatsioonistruktuur:

FĂŒĂŒsiliselt hoitakse seda puu struktuuri kahes tabelis â hrp1000 objektid ja hrp1001 seosed nende objektide vahel.
Objektid "Osakond 1" ja "Juhtimine 1":

Seos objektide vahel:

Nii objektide kui ka nendevaheliste seoste tĂŒĂŒpe vĂ”ib olla tohutult palju. Eksisteerivad nii standardsed seosed objektide vahel kui ka kohandatud erivajaduste tarbeks. NĂ€iteks osakonna ja ametikoha vahel olev standardne seos B012 nĂ€itab osakonna juhatajat.
Juhataja kuvamine SAP-is:

Salvestamine andmebaasi tabelisse:

Töötajate andmeid hoitakse tabelites pa*. NĂ€iteks töötaja kohta kĂ€ivad personalikĂŒsimused salvestatakse tabelisse pa0000.

Otsustasime, et GreenPlum toob "toored" andmed, st kopeerib need lihtsalt SAP tabelitest. Ja juba GreenPlumis töödeldakse ja muudetakse need fĂŒĂŒsilisteks objektideks (nt osakond vĂ”i töötaja) ja mÔÔdikiteks (nt keskmine arv töökohti).
MÀÀratleti, et on olemas umbes 70 tabelit, mille andmeid on vaja edastada GreenPlum-i. SeejÀrel jÀtkasime nende andmete edastamise viisi töötlemist.
SAP pakub ĂŒsna palju integratsiooni mehhanisme. Kuid kĂ”ige lihtsam viis â otse andmebaasi pÀÀsemine on litsentsipiirangute tĂ”ttu keelatud. Seega peavad kĂ”ik integratsioonivoogud olema rakendustasandil. serverilt rakendustes.
JĂ€rgmiseks probleemiks oli kadunud kirjeandmete puudumine SAP andmebaasis. Rida andmebaasist eemaldamisel kustutatakse see fĂŒĂŒsiliselt. See tĂ€hendab, et muudatuste delta ajas genereerimine ei olnud vĂ”imalik.
Muidugi on SAP HCM-is mehhanisme andmete muudatuste fikseerimiseks. NĂ€iteks edasiviimiseks saajate sĂŒsteemidesse on olemas muudatussuunajad (change pointer), mis fikseerivad kĂ”ik muudatused ja mille pĂ”hjal luuakse Idoc (objekt vĂ€listele sĂŒsteemidele edastamiseks).
NÀidis IDoc muudatuste infotype 0302 töötajale selle töötaja numbriga 1251445:

VÔi andmete muudatuste logide pidamine tabelis DBTABLOG.
NÀidis logi salvestuse kustutamise kohta vÔtmega QK53216375 tabelist hrp1000:

Kuid need mehhanismid ei ole kergesti kĂ€tte saadavad kĂ”igi vajalike andmete jaoks ja nende töötlemine rakenduste serveri tasemel vĂ”ib tarbida pĂ€ris palju ressursse. SeetĂ”ttu vĂ”ib massiline logimise sisselĂŒlitamine kĂ”igile vajalikutele tabelitele pĂ”hjustada sĂŒsteemi jĂ”udluse mĂ€rkimisvÀÀrset halvenemist.
JÀrgmine tÔsine probleem olid klastertabelid. Aja ja palgaarvestuse hindamise andmed RDBMS versiooni SAP HCM sees on salvestatud iga töötaja jaoks igas arvutuses loogiliste tabelite komplektina. Need loogilised tabelid salvestatakse kahekordsete andmetena tabelis pcl2.
Palga arvutamise klaster:

Klastertabelitest andmeid ei saa lugeda SQL-i kĂ€suga, vaid on vaja kasutada SAP HCM makrokĂ€sku vĂ”i spetsiaalseid funktsionaalseid mooduleid. Seega on selliste tabelite lugemise kiirus ĂŒsna madal. Teiselt poolt sisaldavad need klastrid andmeid, mida on vaja ainult kord kuus â palga lĂ”pphindamine ja aja hindamine. Seega ei ole kiirus selles osas nii kriitiline.
Hinnates andmete muudatuste delta genereerimise variante, otsustati kaaluda ka tĂ€ieliku vĂ€ljundi varianti. Iga pĂ€ev gigabaitide muutumatute andmete edastamine sĂŒsteemide vahel ei tundu just kĂ”igekena. Kuid sel on ka mitmeid eeliseid â ei pea rakendama delta allika poolel ega rakendama selle delta sisestamist vastuvĂ”tja poolel. Seega vĂ€heneb kulud ja teostamise tĂ€htaeg ning suureneb integreerimise usaldusvÀÀrsus. Selgus, et praktiliselt kĂ”ik muudatused SAP HR-is toimuvad kolme kuu jooksul enne praegust kuupĂ€eva. SeetĂ”ttu otsustati jÀÀda igapĂ€evasele tĂ€ielikule andme vĂ€ljundile SAP HR-st N kuu jooksul enne praegust kuupĂ€eva ja kord kuus tĂ€ielikule vĂ€ljundile. Parameeter N sĂ”ltub konkreetsest tabelist
ja kÔikub vahemikus 1 kuni 15.
Andmete ekstraktsiooniks on soovitatud jÀrgmine skeem:

VĂ€line sĂŒsteem loob pĂ€ringu ja saadab selle SAP HCM-ile, kus kontrollitakse nende andmete tĂ€iuslikkust ja Ă”igusi tabelitele ligipÀÀsuks. Kui kontroll on edukas, kĂ€ivitub SAP HCM-is programm, mis kogub vajalikud andmed ja edastab need Fuse'i integreerimislahendusele. Fuse mÀÀrab vajalikku teemat Kafka's ja edastab andmed sinna. JĂ€rgmine etapp on see, et andmed Kafka'st edastatakse Stage Area GP-sse.
Selles ahelas huvitab meid kĂŒsimus andmete vĂ€ljavĂ”tmisest SAP HCM-ist. Peatume sellel ĂŒksikasjalikumalt.
SAP HCM-FUSE koostöö skeem.

VĂ€line sĂŒsteem mÀÀrab SAP-is viimase eduka pĂ€ringu aja.
Protsess vĂ”ib kĂ€ivituda ajastaja vĂ”i muu sĂŒndmuse kaudu, sealhulgas vĂ”ib olla mÀÀratud ooteaeg andmete vastuseks SAP-ilt ja algatada uuesti pĂ€ring. SeejĂ€rel koostab see delta pĂ€ringu ja saadab selle SAP-ile.
PĂ€ringu andmed edastatakse body-s json formaadis.
HTTP meetod: POST.
PÀringu nÀide:

SAP teenus kontrollib pÀringu tÀiuslikkust, vastavust SAP-i praegusele struktuurile, juurdepÀÀsuÔiguse olemasolu nÔutud tabelile.
Vigade korral tagastab teenus vastuse vastava koodi ja kirjeldustega. Kui kontroll on edukas, loob see taustaprotsessi valimi koostamiseks, genereerib ja sĂŒnkroonselt tagastab unikaalse sessiooni id.
VĂ€line sĂŒsteem registreerib vigade korral selle logisse. Eduka vastuse korral edastab see sessiooni id ja tabeli nime, mille alusel pĂ€ring tehti.
VĂ€line sĂŒsteem registreerib praeguse sessiooni avatud. Kui selle tabeli kohta on muid sessioone, suletakse need hoiatuse registreerimisega logisse.
SAP taustateenus loob kursori mÀÀratud parameetrite alusel ja andmepaketi mÀÀratud suurusega. Paketi suurus on maksimaalne arv kirjeid, mida protsess lugedes DB-st toob. Vaikimisi on see mÀÀratud 2000-ks. Kui DB valimis on rohkem kirjeid, kui kasutatakse paketi suurust, siis pÀrast esimese paketi edastamist koostatakse jÀrgmine plokk vastava offset ja suurendatud paketinumbriga. Numbrid suurenevad 1 vÔrra ja saadetakse rangelt jÀrjestikku.
Edasi SAP edastab paketi vĂ€listesĂŒsteemi veebiteenusele. Sellel sĂŒsteem kontrollib sissetuleva paketi. SĂŒsteemis peab olema registreeritud seanss, mille ID on saadud, ja see peab olema avatud olekus. Kui paketi number > 1, peab sĂŒsteemis olema registreeritud eelmise paketi (package_id-1) edukas vastuvĂ”tt.
KĂŒsimuse edukal kontrollimisel parsib vĂ€line sĂŒsteem andmed tabelist ja salvestab need.
Lisaks, kui paketis on lipp final ja serialiseerimine on lÀinud edukalt, teavitatakse integratsioonimoodulit seansi töötlemise edukast lÔpetamisest ning moodul vÀrskendab seansi staatust.
Viga kontrollimisel/parsides logitakse ja selle seansi paketid vĂ€line sĂŒsteem tagasi lĂŒkkab.
Sarnaselt, kui vĂ€line sĂŒsteem tagastab vea, logitakse see ja pakettide edastamine peatatakse.
SAP HCM-i andmete pĂ€rimise jaoks on rakendatud integratsiooniteenus. Teenus on loodud ICF (SAP Internet Communication Framework) raamistiku baasil - ). See vĂ”imaldab teha pĂ€ringuid SAP HCM sĂŒsteemi teatud tabelitesse. AndmepĂ€ringu koostamisel on vĂ”imalik mÀÀrata konkreetsed vĂ€ljad ja filtreerimisparameetrid vajalike andmete saamiseks. Teenuse rakendamine ei eelda mingit Ă€ri logikat. Deltana, pĂ€ringupĂ€ringu parameetrite kontrollimise algoritmid jne rakendatakse samuti vĂ€listesĂŒsteemis.
See mehhanism vÔimaldab koguda ja edastada kÔik vajalikud andmed mÔne tunni jooksul. See kiirus on piiri peal vastuvÔetav, seetÔttu kÀsitleme seda lahendust ajutisena, mis suudab rahuldada projekti andmeekstraktsiooni vajadust.
Tuleviku strateegia andmete ekstraktsiooni lahendamiseks uuritakse CDC sĂŒsteemide, nagu Oracle Golden Gate, vĂ”i ETL tööriistade, nagu SAP DS, kasutamise variante.
Allikas: habr.com
