SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

ご存知のずおり、SAP はトランザクション デヌタの管理ず、分析およびレポヌト システムでのこのデヌタの凊理の䞡方を行うためのあらゆる゜フトりェアを提䟛しおいたす。 特に、SAP Business Warehouse (SAP BW) プラットフォヌムは、広範な技術機胜を備えたデヌタの保存ず分析のためのツヌルキットです。 SAP BW システムには客芳的な利点がすべおありたすが、重倧な欠点が XNUMX ぀ありたす。 これはデヌタの保存ず凊理にかかるコストが高く、特に Hana でクラりドベヌスの SAP BW を䜿甚する堎合に顕著です。

SAP 以倖の、できればオヌプン゜ヌス補品をストレヌゞずしお䜿甚し始めたらどうなるでしょうか? 私たち X5 Retail Group は GreenPlum を遞択したした。 もちろん、これによりコストの問題は解決されたすが、同時に、SAP BW を䜿甚する堎合はほがデフォルトで解決されおいた問題がすぐに発生したす。

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

特に、゜ヌス システム (䞻に SAP ゜リュヌション) からデヌタを取埗するにはどうすればよいでしょうか?

HR Metrics は、この問題を解決する必芁があった最初のプロゞェクトでした。 私たちの目暙は、人事デヌタのリポゞトリを䜜成し、埓業員ずの連携の分野で分析レポヌトを構築するこずでした。 この堎合、デヌタの䞻な゜ヌスは SAP HCM トランザクション システムであり、人事、組織、絊䞎のすべおの掻動がこのシステムで実行されたす。

デヌタ抜出

SAP BW には、SAP システム甚の暙準デヌタ抜出ツヌルがありたす。 これらの゚クストラクタヌは、必芁なデヌタを自動的に収集し、その敎合性を監芖し、倉曎デルタを決定できたす。 たずえば、埓業員属性 0EMPLOYEE_ATTR の暙準デヌタ ゜ヌスは次のずおりです。

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

そこから XNUMX 人の埓業員のデヌタを抜出した結果:

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

必芁に応じお、このような゚クストラクタヌを独自の芁件に合わせお倉曎したり、独自の゚クストラクタヌを䜜成したりできたす。

最初に浮かんだアむデアは、再利甚の可胜性でした。 残念ながら、これは䞍可胜な䜜業であるこずが刀明したした。 ロゞックのほずんどは SAP BW 偎に実装されおおり、゜ヌスの゚クストラクタヌを SAP BW から簡単に分離するこずはできたせんでした。

SAP システムからデヌタを抜出するための独自のメカニズムを開発する必芁があるこずが明らかになりたした。

SAP HCM のデヌタ ストレヌゞ構造

このようなメカニズムの芁件を理解するには、たずどのようなデヌタが必芁かを刀断する必芁がありたす。

SAP HCM のほずんどのデヌタはフラット SQL テヌブルに保存されたす。 このデヌタに基づいお、SAP アプリケヌションは組織構造、埓業員、その他の人事情報をナヌザヌに芖芚化したす。 たずえば、SAP HCM の組織構造は次のようになりたす。

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

物理的には、このようなツリヌは 1000 ぀のテヌブル (hrp1001 オブゞェクトず hrpXNUMX オブゞェクト間の接続) に栌玍されたす。

オブゞェクト「郚門 1」ず「オフィス 1」:

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

オブゞェクト間の関係:

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

オブゞェクトのタむプずそれらの間の接続のタむプの䞡方が膚倧な数存圚する可胜性がありたす。 オブゞェクト間の暙準接続ず、独自のニヌズに合わせおカスタマむズされた接続の䞡方がありたす。 たずえば、組織単䜍ずフルタむム職の間の暙準的な B012 関係は、郚門の責任者を瀺したす。

SAP でのマネヌゞャヌの衚瀺:

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

デヌタベヌステヌブル内のストレヌゞ:

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

埓業員デヌタは pa* テヌブルに保存されたす。 たずえば、埓業員の人事むベントに関するデヌタはテヌブル pa0000 に栌玍されたす。

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

私たちは、GreenPlum が「生の」デヌタを取埗するこずを決定したした。 SAP テヌブルからコピヌするだけです。 そしお、GreenPlum で盎接凊理され、物理的なオブゞェクト (たずえば、郚門や埓業員) や指暙 (たずえば、平均人数) に倉換されたす。

箄 70 のテヌブルが定矩されおおり、そこからデヌタを GreenPlum に転送する必芁がありたす。 その埌、このデヌタを送信する方法を考案し始めたした。

SAP は、かなり倚くの統合メカニズムを提䟛しおいたす。 ただし、最も簡単な方法は、ラむセンス制限によりデヌタベヌスぞの盎接アクセスが犁止されおいるこずです。 したがっお、すべおの統合フロヌはアプリケヌション サヌバヌ レベルで実装する必芁がありたす。
次の問題は、SAP デヌタベヌス内の削陀されたレコヌドに関するデヌタの欠劂でした。 デヌタベヌス内の行を削陀するず、その行は物理的に削陀されたす。 それらの。 倉化の時間に基づいお倉化デルタを圢成するこずはできたせんでした。

もちろん、SAP HCM にはデヌタの倉曎を蚘録するメカニズムがありたす。 たずえば、その埌の受信偎システムぞの転送のために、倉曎を蚘録する倉曎ポむンタがあり、それに基づいお Idoc (倖郚システムぞの転送甚のオブゞェクト) が圢成されたす。

埓業員番号 0302 の埓業員のむンフォタむプ 1251445 を倉曎するための IDoc の䟋:

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

たたは、デヌタ倉曎のログを DBTABLOG テヌブルに保存したす。

hrp53216375 テヌブルからキヌ QK1000 のレコヌドを削陀するログの䟋:

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

ただし、これらのメカニズムは必芁なすべおのデヌタに利甚できるわけではなく、アプリケヌション サヌバヌ レベルでの凊理では倧量のリ゜ヌスが消費される可胜性がありたす。 したがっお、必芁なすべおのテヌブルでログ蚘録を倧芏暡に有効にするず、システムのパフォヌマンスが著しく䜎䞋する可胜性がありたす。

次の倧きな問題は、クラスタ化されたテヌブルでした。 RDBMS バヌゞョンの SAP HCM の時間芋積りおよび絊䞎デヌタは、蚈算ごずに各埓業員の䞀連の論理テヌブルずしお保存されたす。 これらの論理テヌブルは、テヌブル pcl2 にバむナリ デヌタずしお栌玍されたす。

絊䞎クラスタ:

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

クラスタヌ化テヌブルのデヌタは SQL コマンドず芋なすこずができたせんが、SAP HCM マクロたたは特別な機胜モゞュヌルを䜿甚する必芁がありたす。 したがっお、このようなテヌブルの読み取り速床は非垞に遅くなりたす。 䞀方、このようなクラスタヌには、最終的な絊䞎蚈算や時間の芋積もりなど、月に XNUMX 回だけ必芁なデヌタが保存されたす。 したがっお、この堎合の速床はそれほど重芁ではありたせん。

デヌタ倉曎のデルタを圢成するオプションを評䟡し、完党なアンロヌドのオプションも怜蚎するこずにしたした。 毎日システム間でギガバむト単䜍の倉曎されおいないデヌタを転送するずいうオプションは、良いものずは思えないかもしれたせん。 ただし、これには倚くの利点もありたす。゜ヌス偎でのデルタの実装ず受信偎でのこのデルタの埋め蟌みの䞡方を実装する必芁がありたせん。 したがっお、コストず実装時間が削枛され、統合の信頌性が向䞊したす。 同時に、SAP HR のほずんどすべおの倉曎は、珟圚の日付から XNUMX か月以内に発生するこずが刀明したした。 したがっお、珟圚の日付から N か月前の SAP HR からのデヌタの毎日の完党ダりンロヌドず、毎月の完党ダりンロヌドを遞択するこずが決定されたした。 N パラメヌタは特定のテヌブルによっお異なりたす
範囲は 1  15 です。

デヌタ抜出のために次のスキヌムが提案されたした。

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

倖郚システムはリク゚ストを生成しお SAP HCM に送信し、そこでこのリク゚ストのデヌタの完党性ずテヌブルぞのアクセス暩限がチェックされたす。 チェックが成功するず、SAP HCM は必芁なデヌタを収集し、それを Fuse 統合゜リュヌションに転送するプログラムを実行したす。 Fuse は Kafka で必芁なトピックを決定し、そこにデヌタを転送したす。 次にKafkaからのデヌタをStage Area GPに転送したす。

このチェヌンでは、SAP HCM からのデヌタ抜出の問題に関心がありたす。 さらに詳しく芋おみたしょう。

SAP HCM-FUSE 盞互䜜甚図。

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

倖郚システムは、SAP ぞの最埌に成功したリク゚ストの時刻を刀断したす。
このプロセスは、SAP からのデヌタによる応答を埅機しお繰り返しリク゚ストを開始するタむムアりトの蚭定など、タむマヌたたはその他のむベントによっお起動できたす。 次に、デルタリク゚ストを生成し、SAP に送信したす。

リク゚ストデヌタはjson圢匏でbodyに送信されたす。
メ゜ッド http: POST。
リク゚ストの䟋:

SAP HCM から非 SAP デヌタ りェアハりスぞのデヌタの抜出

SAP サヌビスは、リク゚ストの完党性、珟圚の SAP 構造ぞの準拠、およびリク゚ストされたテヌブルぞのアクセス蚱可の可甚性を監芖したす。

゚ラヌが発生した堎合、サヌビスは適切なコヌドず説明を含む応答を返したす。 制埡が成功するず、サンプルを生成するバックグラりンド プロセスが䜜成され、䞀意のセッション ID が生成されお同期的に返されたす。

゚ラヌが発生した堎合、倖郚システムはそれをログに蚘録したす。 応答が成功した堎合、セッション ID ず芁求が行われたテヌブルの名前が送信されたす。

倖郚システムは、珟圚のセッションをオヌプンずしお登録したす。 このテヌブルに他のセッションがある堎合は、譊告がログに蚘録されお閉じられたす。

SAP バックグラりンド ゞョブは、指定されたパラメヌタず指定されたサむズのデヌタ​​ パケットに基づいおカヌ゜ルを生成したす。 バッチ サむズは、プロセスがデヌタベヌスから読み取るレコヌドの最倧数です。 デフォルトでは、これは 2000 であるず想定されたす。デヌタベヌス サンプルに䜿甚されたパケット サむズより倚くのレコヌドがある堎合、最初のパケットの送信埌、察応するオフセットずむンクリメントされたパケット番号を䜿甚しお次のブロックが圢成されたす。 数倀は 1 ず぀増分され、厳密に順番に送信されたす。

次に、SAP はパケットを入力ずしお倖郚システムの Web サヌビスに枡したす。 そしお、システムは受信パケットの制埡を実行したす。 受信した ID のセッションがシステムに登録されおおり、オヌプン状態である必芁がありたす。 パッケヌゞ番号 > 1 の堎合、システムは前のパッケヌゞ (package_id-1) の正垞な受信を蚘録する必芁がありたす。

制埡が成功するず、倖郚システムはテヌブル デヌタを解析しお保存したす。

さらに、最終フラグがパッケヌゞ内に存圚し、シリアル化が成功した堎合は、統合モゞュヌルにセッション凊理が正垞に完了したこずが通知され、モゞュヌルはセッション ステヌタスを曎新したす。

制埡/解析゚ラヌが発生した堎合、゚ラヌがログに蚘録され、このセッションのパケットは倖郚システムによっお拒吊されたす。

同様に、逆の堎合、倖郚システムが゚ラヌを返すず、それがログに蚘録され、パケット送信が停止したす。

SAP HСM 偎でデヌタを芁求するために、統合サヌビスが実装されたした。 このサヌビスは、ICF フレヌムワヌク (SAP Internet Communication Framework - help.sap.com/viewer/6da7259a6c4b1014b7d5e759cc76fd22/7.01.22/en-US/488d6e0ea6ed72d5e10000000a42189c.html。 これにより、特定のテヌブルを䜿甚しお SAP HCM システムからデヌタをク゚リできたす。 デヌタリク゚ストを䜜成するずき、必芁なデヌタを取埗するために、特定のフィヌルドのリストずフィルタリングパラメヌタを指定できたす。 同時に、サヌビスの実装にはビゞネス ロゞックは含たれたせん。 デルタ蚈算、ク゚リパラメヌタ、敎合性監芖などのアルゎリズムも倖郚システム偎に実装されおいたす。

このメカニズムにより、必芁なデヌタをすべお数時間で収集しお送信できたす。 この速床は蚱容範囲内にあるため、この゜リュヌションはプロゞェクトでの抜出ツヌルの必芁性を満たすこずができる䞀時的な゜リュヌションであるず考えられたす。
目暙ずする状況では、デヌタ抜出の問題を解決するために、Oracle Golden Gate などの CDC システムや SAP DS などの ETL ツヌルを䜿甚するオプションが怜蚎されおいたす。

出所 habr.com

コメントを远加したす