Kuna SAP pakub tĂ€ielikku tarkvarakomplekti nii tehingute andmete haldamiseks kui ka nende töötlemiseks analĂŒĂŒsi ja aruandluse sĂŒsteemides, siis SAP Business Warehouse (SAP BW) platvorm pakub tööriistu andmete salvestamiseks ja analĂŒĂŒsimiseks, millel on suured tehnilised vĂ”imalused. KĂ”ikides oma objektiivsetes eelistes on SAP BW-l ĂŒks mĂ€rkimisvÀÀrne puudus: andmete salvestamise ja töötlemise kĂ”rge hind, mis on eriti silmatorkav Cloud SAP BW on Hana kasutamisel.
Aga mis siis, kui ladustamisruumina hakata kasutama mĂ”nda non-SAP ja eelistatult avatud lĂ€htekoodiga toodet? Me X5 Retail Group-is valisime GreenPlumi. See lahendab kindlasti hinna kĂŒsimuse, kuid samas kerkivad esile kĂŒsimused, mis SAP BW kasutamisel lahendati praktiliselt vaikimisi.

Kuidas siis andmeid allikate sĂŒsteemidest, mis enamikul juhtudest on SAP lahendused, kĂ€tte saada?
âHR-metrikudâ sai esimeseks projektiks, kus tuli lahendada see probleem. Meie eesmĂ€rgiks oli luua HR-andmete pĂŒsiv arhiiv ja koostada analĂŒĂŒtiline aruandlus töötajatega suhtlemise suunal. Peamine andmeallikas on SAP HCM tehingusĂŒsteem, kus toimub kĂ”ik personaliga seotud, organisatsioonilised ja palgatoimingud.
Andmete ekstrapoleerimine
SAP BW-s on olemas standardiseeritud andmete ekstrapolaatorid SAP-sĂŒsteemide jaoks. Need ekstrapolaatorid vĂ”ivad automaatselt koguda vajalikke andmeid, jĂ€lgida nende terviklikkust ja tuvastada muudatuste deltaid. NĂ€iteks standardne andmeallikas töötaja atribuutide jaoks on 0EMPLOYEE_ATTR:

Andmete ekstrapoleerimise tulemus ĂŒhe töötaja kohta:

Vajadusel vÔib sellist ekstrapolaatorit kohandada vastavalt enda nÔudmistele vÔi luua tÀiesti oma ekstrapolaator.
Esimene idee oli nende uuesti kasutamise vĂ”imalus. Kahjuks osutus see vĂ”imatuks ĂŒlesandeks. Suur osa loogikast on teostatud SAP BW poolel, ja ekstrapolaatorit allikast SAP BW-st valutult eraldada ei Ă”nnestunud.
On selge, et on vajalik arendada oma andmevĂ€ljavĂ”tu mehhanismi SAP sĂŒsteemidest.
Andmete salvestamise struktuur SAP HCM-is
NÔuete mÔistmiseks tuleb esmalt mÀÀratleda, milliseid andmeid me tÀpselt vajame.
Enamiku andmete puhul on SAP HCM-is need salvestatud tasapinnalistes SQL tabelites. Nende andmete pÔhjal visualiseerivad SAP rakendused kasutajale organisatsioonistruktuuri, töötajad ja muud personaliteavet. NÀiteks nÀeb SAP HCM organisatsioonistruktuur vÀlja jÀrgmine:

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

Suhe objektide vahel:

Objektide tĂŒĂŒpide ja nendevaheliste suhete tĂŒĂŒpide arv vĂ”ib olla tohutu. On olemas nii standardsed seosed objektide vahel kui ka kohandatud, et rahuldada spetsiifilisi vajadusi. NĂ€iteks viitab standardne seos B012 organisatsiooniĂŒksuse ja ametikoha vahel osakonna juhile.
Juht positsioonis SAP-is:

Salvestamine andmebaasitabelis:

Töötajate andmed sĂ€ilitatakse tabelites pa*. NĂ€iteks töötaja kaadriga seotud sĂŒndmuste andmed sĂ€ilitatakse tabelis pa0000.

Oleme otsustanud, et GreenPlum tĂ”mbab "toored" andmed, st kopeerib need lihtsalt SAP tabelitest. Ja GreenPlumis töödeldakse ja muudetakse need fĂŒĂŒsiliste objektideks (nĂ€iteks Osakond vĂ”i Töötaja) ning metrikateks (nĂ€iteks keskmine loendatav arv).
On mÀÀratud umbes 70 tabelit, mille andmed tuleb edastada GreenPlumisse. PÀrast seda hakkasime vÀlja töötama nendest andmetest edastamise viisi.
SAP pakub piisavalt palju integratsiooni mehhanisme. Kuid kĂ”ige lihtsam viis â otse andmebaasi ligipÀÀs on litsentsipiirangute tĂ”ttu keelatud. Seega peavad kĂ”ik integratsioonivoogud olema teostatavad tasemel serverile rakendused.
JĂ€rgmine probleem oli andmete puudumine eemaldatud kirjetest SAP andmebaasis. Kui rida andmebaasis kustutatakse, siis see kustutatakse fĂŒĂŒsiliselt. St muutuste delta ajas mÀÀramine ei olnud vĂ”imalik.
Muidugi, SAP HCM-is on andmete muudatuste fikseerimiseks mehhanismid. NĂ€iteks edastamiseks sihtsĂŒsteemidesse on olemas muudatusnĂ€idikud (change pointer), mis fikseerivad kĂ”ik muudatused ja mille alusel luuakse Idoc (vĂ€line sĂŒsteemide edastamise objekt).
NÀide IDoc muutusest infotypis 0302 töötaja, kelle personalinumber on 1251445:

VÔi andmete muudatuste logimine DBTABLOG tabelis.
NÀide muudatuslogistole, kus eemaldatakse kirje, mille vÔti on QK53216375 tabelist hrp1000:

Kuid need mehhanismid ei ole kĂ”ikide vajalike andmete jaoks saadaval ning nende töötlemine rakendusserveri tasandil vĂ”ib vĂ”tta piisavalt palju ressursse. SeetĂ”ttu vĂ”ib massiline logimise aktiveerimine kĂ”igile vajalikele tabelitele viia sĂŒsteemi jĂ”udluse mĂ€rgatava halvenemiseni.
JÀrgmine tÔsine probleem olid klastritabelid. Aja hindamise ja palga arvutamise andmed SAP HCM RDBMS versioonis salvestatakse igale töötajale igas arvestuses loogiliste tabelite komplektina. Need loogilised tabelid salvestatakse binaandatatena tabelis pcl2.
Palga arvutamise klaster:

Klastri tabelite andmeid ei saa lugeda SQL-kĂ€suga, vaid on vajalik kasutada SAP HCM makrokĂ€sku vĂ”i spetsiaalseid funktsionaalseid mooduleid. SeetĂ”ttu on selliste tabelite lugemise kiirus ĂŒsna madal. Teisest kĂŒljest sisaldavad sellised klastrid andmeid, mida on vaja vaid kord kuus â palgaarvestuse ja ajahindamise tulemused. Seega ei ole kiirus sel juhul nii kriitiline.
Hinnates andmeid muutuste delta genereerimise vĂ”imalusi, otsustasime samuti kaaluda tĂ€ieliku eksportimise varianti. Iga pĂ€ev gigabaitide muutumatute andmete edastamine sĂŒsteemide vahel ei saa hea vĂ€lja nĂ€ha. Siiski on sel ka mitmeid eeliseid â ei ole vaja rakendada delta loomist allika poolel ega ka selle delta integreerimist sihtkohas. Seega vĂ€henevad kulud ja teostamise ajad ning suurenevad integratsiooni usaldusvÀÀrsus. Selgus, et peaaegu kĂ”ik muudatused SAP HR-is toimuvad kolme kuu jooksul enne praegust kuupĂ€eva. Seega otsustati, et jÀÀme SAP HR-i andmete igapĂ€evasele tĂ€ielikule eksportimisele N kuud enne praegust kuupĂ€eva ja kuu aega korrapĂ€rasele tĂ€ielikule eksportimisele. Parameeter N sĂ”ltub konkreetsest tabelist.
ja kÔigub vahemikus 1 kuni 15.
Andmete vÀljatÔmbamiseks pakuti vÀlja jÀrgmine skeem:

VĂ€liselt sĂŒsteemilt saadetakse pĂ€ring SAP HCM-i, kus see kontrollitakse andmete tĂ€psuse ja tabelitele juurdepÀÀsu Ă”iguste osas. Eduka kontrolli korral kĂ€ivitub SAP HCM-is programm, mis kogub vajalikud andmed ja edastab need Fuse integreerimislahendusele. Fuse mÀÀrab Kafka teema ja edastab andmed sinna. SeejĂ€rel edastatakse andmed Kafka-st Stage Area GP-sse.
Meid huvitab selles ahelas andmete vĂ€ljavĂ”tmise kĂŒsimus SAP HCM-ist. Vaatame sellele lĂ€hemalt.
SAP HCM-FUSE koostöö skeem.

VĂ€lises sĂŒsteemis mÀÀratakse SAP-i viimane eduka pĂ€ringu aeg.
Protsessi vĂ”ib kĂ€ivitada ajastuse vĂ”i muu sĂŒndmuse pĂ”hjal; sealhulgas vĂ”ib seada ajavahemiku vastuse ootamiseks SAP-ilt ja re-pĂ€ringu algatamise. PĂ€rast seda koostatakse delta-pĂ€ring ja saadetakse SAP-ile.
PĂ€ringu andmed edastatakse body-s json formaadis.
HTTP meetod: POST.
KĂŒsimuse nĂ€idis:

SAP teenus kontrollib pÀringu tÀpsust, vastavust SAP-i praegusele struktuurile ja juurdepÀÀsulubade olemasolu taotletud tabelile.
Vigade korral tagastab teenus vastuse koos vastava koodi ja kirjeldusega. Eduka kontrolli korral loob see taustaprotsessi andmete kogumise jaoks, genereerib ja sĂŒnkroonselt tagastab ainulaadse seansi ID.
VĂ€line sĂŒsteem registreerib vea korral selle logisse. Eduka vastuse korral edastab seansi ID ja tabeli nime, mille pĂ”hjal pĂ€ring tehti.
VĂ€line sĂŒsteem registreerib kĂ€esoleva seansi avatud seisundisse. Kui antud tabeli kohta on teisi seansse, suletakse need koos hoiatuse registreerimisega logisse.
SAP-i taustaprotsess genereerib kursori antud parameetrite alusel ja mÀÀratud suurusega andmepaketi. Andmepaketi suurus on maksimaalne arv kirjeid, mida protsess loeb andmebaasist. Vaikimisi on see 2000. Kui andmebaasi valikus on rohkem kirjeid kui kasutatav paketi suurus, pÀrast esimese paketi edastamist genereeritakse jÀrgmine plokk vastava offset'i ja inkrementeeritud paketi numbriga. Nummerdatakse jÀrjestikku, tÔustes 1 vÔrra.
Edasi saadab SAP paketi vĂ€lise sĂŒsteemi veebiteenusele. See sĂŒsteem viib lĂ€bi sisenemise paketi kontrolle. SĂŒsteemis peab olema registreeritud seanss saadud id-ga ning see peab olema avatud olekus. Kui paketi number on > 1, peab sĂŒsteemis olema registreeritud eelmise paketi (package_id-1) eduka vastuvĂ”tu tĂ”end.
Eduka kontrolli korral parsimis ja salvestatakse tabeli andmed vĂ€lises sĂŒsteemis.
Lisaks, kui paketis on olemas final lipp ja serialiseerimine Ônnestus, toimub integreerimismooduli teavitamine seansi töötlemise eduka lÔpetamise kohta ning moodul uuendab seansi staatust.
Vigade korral logitakse kontrollimise/parsimise tĂ”rge ning pakette selle seansi osas vĂ€lised sĂŒsteemid lĂŒkatakse tagasi.
Sama kehtib ka vastupidisel juhul, kui vĂ€line sĂŒsteem tagastab vea; see logitakse ja paketivahetus lĂ”petatakse.
SAP HCM poole andmete pĂ€ringuks on loodud integreerimisteenus. Teenus on loodud ICF (SAP Internet Communication Framework) raamistiku pĂ”hjal â ). See vĂ”imaldab teha andmepĂ€ringuid SAP HCM sĂŒsteemist teatud tabelite jĂ€rgi. AndmepĂ€ringu koostamisel on vĂ”imalik mÀÀrata kindel valik vĂ€lju ja filtreerimise parameetreid, et saada vajalikke andmeid. Samas ei eelda teenuse rakendamine mingit Ă€riloogikat. Deltakalkulatsioonide, pĂ€ringu parameetrite, terviklikkuse kontrolli jms algoritmid rakendatakse samuti vĂ€lises sĂŒsteemis.
KÀesolev mehhanism vÔimaldab koguda ja edastada kÔik vajalikud andmed mÔne tunni jooksul. Selline kiirus on piiri peal ja sellepÀrast peame seda lahendust ajutiseks, mis rahuldas projekti andmeekstraktsiooni vajaduse.
Sihtvisioonis andmete ekstraktsiooni ĂŒlesande lahendamiseks kaalume CDC sĂŒsteemide, nagu Oracle Golden Gate, vĂ”i ETL tööriistade, nagu SAP DS, kasutamise vĂ”imalusi.
Allikas: habr.com
