Qlik ReplicateによるSAPからのSAP Extractor利用のデータ抽出

この記事を書いたメンバー:

Shoki Shiratori

Qlik ReplicateによるSAPからのSAP Extractor利用のデータ抽出

目次

目的

「SAPのデータを抽出し、他システムにデータを格納したい」という内容を実現するソリューションの一つとして、Qlik社が提供している「Qlik Replicate」があります。
Qlik Replicateを使用して、実際にSAPのデータを抽出し、他システムにデータを格納できるかを検証してみました。

結論

SAPのデータを抽出し、他システム(今回の検証では、Microsoft SQL Serverを使用)にデータを格納することができました。
格納後の差分更新(CDC)も対応されることを確認しました。

検証

検証内容

SAP ERPからSAP BWへデータを抽出する機能である、ビジネスコンテンツデータソース / ジェネリックデータソースを使用してデータを抽出し、任意のデータベース(今回の検証では、Microsoft SQL Serverを使用 )にデータを格納できるか。
SAP BWへのデータ抽出では、完全更新(全件更新)及びデルタ更新(差分更新)を行う事が出来る為、Qlik Replicateの同機能であるFull Load(完全更新)とChange Processing(デルタ更新)を使用して検証を行います。

環境

【Source環境 】
OS:Linux / UNIX
インストール:
 ・ SAP ERP 6.0
【Qlik &Target環境】
OS:Windows Server 2019
インストール:
 ・ Qlik Replicate November 2021
 ・ Microsoft SQL Server 2019
※ 今回は検証のため、Qlik ReplicateとTarget DBを同一環境にインストールしています。

【従来のSAP ERP ⇒ SAP BWの場合】

検証手順

・ Full Load(BWの「完全更新」に相当する機能)
ビジネスコンテンツデータソースを使用して、検証を行います。
Source環境のテーブルに格納されているレコードを、すべてTarget環境のテーブルに格納できるか。

・ Change Processing(BWの「デルタ更新」に相当する機能)
ジェネリックデータソースを使用して、検証を行います。
Full Load後、Source環境のテーブルのレコードに変更(DML)があった場合、Target環境のテーブルに反映できるか。

検証結果

Full Load(BWにおける「完全更新」に相当)

① Source環境のFull Loadを検証するビジネスコンテンツデータソースのレコード数を確認。
今回の検証では、"17425"件存在。

② Source環境にて検証するビジネスコンテンツデータソースを有効化する必要がある。
※ こちらで有効化を行うことにより、Qlik Replicate Console側でテーブルが認識される。

③ Qlik Replicate ConsoleでTaskを作成。
Task OptionsをFull Loadのみ有効化。
※ Full Loadのみを選択すると、BWにおける完全更新を行う。

④ Taskを作成し、Full Loadを行うテーブルを選択。

⑤ Microsoft SQL Server Management StudioでFull Loadを行うテーブルが
作成されていないことを確認。

⑥ Qlik Replicate ConsoleでTaskをRun(実行)すると、"17425"件キャプチャされる。

⑦ Microsoft SQL Server Management StudioでFull Loadを行ったテーブルが
自動作成されたことを確認。
※ 作成されるテーブルは、主キー / 一意インデックスなしで作成される。

⑧ Microsoft SQL Server Management Studioで件数を確認すると、
キャプチャされた件数と一致。

Change Processing(BWにおける「デルタ更新」に相当)

① Source環境のChange Processingを検証するジェネリックデータソースの
レコード数を確認。
今回の検証では、"7696"件存在。

② ジェネリックデルタソースを設定。
今回の検証では、日付項目の[ERDAT]をデルタ項目として使用。
安全間隔は、デルタのレコードを取得しやすくするために設定。

③ ジェネリックデルタの現在のステータスを確認。

④ Source環境にて検証するジェネリックデータソースを有効化する必要がある。
※ こちらで有効化を行うことにより、Qlik Replicate Console側でテーブルが認識される。

⑤ Qlik Replicate ConsoleでTaskを作成。
Task OptionsをFull LoadとApply Changesを有効化。
Full LoadがBWにおける「デルタの初期化」を行い、
Apply ChangesがBWにおける「デルタ転送」を行う。
※ Full LoadとApply Changesを設定した際に、SAP側でデルタ設定をしていない場合、
データが1件も取得できない。

⑥ Taskを作成後、テーブルを選択。

⑦ SAP ExtractorのChange Processingの更新頻度を確認。必要であれば変更。
今回は「5分毎」に設定することにより、TaskをRunし続ける限り、5分毎に差分を抽出する。

⑧TaskのTargetテーブルにキーを設定。
このキーはTask内でのみ作用する。

⑨ Error Handlingを設定。
SAP ExtractorをSourceとした場合、「差分はすべてINSERTとしてキャプチャされる」ので、
キー重複時にUPDATEを行うように設定する。

⑩ Qlik Replicate ConsoleでTaskをRun(実行)すると、"7696"件キャプチャされる。

⑪ Microsoft SQL Server Management Studioで件数を確認すると、
キャプチャされた件数と一致。

⑫ Full Load後に、Source環境のテーブルにレコードを追加。

⑬ Qlik Replicate ConsoleでTaskをRunした状態で、Change Processingの更新頻度の時間に
到達した際に、INSERTがキャプチャされたことを確認。
※ TaskをRunし続けることで、設定したChange Processingの更新頻度に伴って、
キャプチャされていく。

⑭ Microsoft SQL Server Management Studioで件数を確認すると"1"件増加している。
("7696"件から"7697"件へ)

⑮ INSERTされたレコードを確認。

⑯ INSERTしたレコードの[ANAME]と[ERDAT]の内容をUPDATE。
[ANAME]:TESTUSER ⇒ QLIKUSER
[ERDAT]:2022/03/12 ⇒ 2022/03/15

⑰ Qlik Replicate ConsoleでTaskをRunした状態で、Change Processingの更新頻度の時間に
到達した際に、INSERTがキャプチャされたことを確認。
前回のINSERTの"1"件からUPDATEの"1"件が加算されて"2"件になる。
※ SAP ExtractorをSourceとした場合、差分はすべてINSERTとしてキャプチャされる。

⑱ Microsoft SQL Server Management Studioでレコード件数を確認するが、
UPDATEのため、件数が増加していないことを確認。

⑲ Microsoft SQL Server Management StudioでINSERTしたレコード(UPDATE前)を
再度確認するが、UPDATEされているため、SELECTされない。

⑳ Microsoft SQL Server Management StudioでUPDATEしたレコードを確認すると、
UPDATEされている。

まとめ

Qlik Replicateは、SAP ERPとBW間の連携に従来から利用されてきたExtractorの差分データ抽出に対応し、SAP標準のビジネスコンテンツデータソースを活用したSAPデータの外部連携を行うことができます。
これにより、開発効率性・保守性を高めながら、Google BigQuery、Microsoft Synapse、Amazon Redshift等にSAPデータをリアルタイム転送することができます。
Qlik Replicateでは、SAP以外にも多様なシステム(Microsoft SQL ServerやOracle等)を対象にすることができるので、様々な形のデータ抽出から格納までを行うことができます。
Qlik Replicateの利点は、ビジネスコンテンツが使えることです。
この利用により、ビジネスコンテンツが備える差分の仕組みを利用することが可能です。

カテゴリー
タグ

この記事を書いたメンバー

Pick upピックアップ

Search記事を探す

キーワード

SAPシステムや基幹システムのクラウド移行・構築・保守、
DXに関して
お気軽にご相談ください

03-6260-6240 (受付時間 平日9:30〜18:00)