0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Tosca Data Integrityを利用してみる(実践編: Row by Row Comparison実行

0
Posted at

Tosca Data Integrityを利用してみる(実践編: Row by Row Comparison実行)

本記事はTosca Data Integrityを利用してみる(準備編: SAP接続・ODBC接続)を実施した上での実践編の記事です。

背景

準備編で ODBC接続 と SAP Custom Data Reader の設定が完了したら、次は実際に比較テストを回して差分を確認します。

本記事ではData Integrityの Complete Row by Row Comparisonを最小構成で実施し、結果ファイルの読み方までを整理します。

本記事の範囲

  1. Complete Row by Row Comparison の基本設定を作る
  2. Row Key と General Options を実務向けに調整する
  3. 比較レポートを出力して、差分の見方を押さえる

前提

  • Source/Targetで比較したいテーブルやクエリを用意済み
  • Row Key候補(業務キーまたは複合キー)を決められる

Step 1: テストケースを作成する

Tosca CloudでData Integrityフォルダ配下にテストケースを作成し、Complete Row by Row Comparison モジュールを追加します。

まずは最小構成で、Source と Target の接続を設定します。

Source / Target の設定例

  • DB接続を使う場合: Connection にDI connection名を指定
  • SAP Readerを使う場合: Custom Data Reader を選び、Class Attribute Name = SapReader と Parameters を設定

準備編で作成したDI connectionを使う場合、DSN / UserID / Password / Connection String は Connection で置き換えられます。

SAP Data Rader設定

SAP Tableを読み込む場合は、Custom Data Readerを利用しSAPReaderを指定します。
Parametersには必要な情報を入力します。

Parameter name Value(日本語説明) Optional
SystemNumber ABAPアプリケーションサーバーのインスタンス番号(0〜99の値)。 No
ApplicationServer RFC要求を受け付けるアプリケーションサーバーのゲートウェイプロセスのサービス名、またはポート番号。DNS名またはIPアドレスを指定(例:sap-server.acme.com)。 No
Client SAPシステムへログインする際に使用するクライアントID(例:200)。 No
Language SAPシステムへログインする際の言語コード(例:EN)。 No
Username テスト実行時にSAPシステムへアクセスするユーザー名。 No
Password 指定ユーザーのパスワード。 No
Tablename 読み取り対象となるデータを保持するSAPテーブル名(大文字・小文字を区別)。 No
DataProvisioningTimeout SAPからデータが返却されるまでTosca Cloudが待機する秒数。デフォルトは300秒。 Yes
RowFilters SAPテーブルから特定行のみ取得するためのフィルタ設定。構文:F[], O[], L[], H[], S[]。 Yes

image.png

ODBC接続設定

ODBC接続の場合は接続情報を記載するか、準備編で登録したConnection情報を利用します。
以下の例ではConnectionを利用した設定を記載します。
image.png

Step 2: Row Keyを定義する

Row by Row比較にて実施する2テーブル間のUnique Keyを定義します。
単一の列名でも、複数の列名でも構いません。複数列名の場合は; semicolonでつなげます。

指定ルール

  • 1列指定: OrderID
  • 複数列指定: OrderID;LineNo
  • すべての列をキー扱い: All Source Columns
  • 未指定: 行全体を識別子として扱う

列名はテーブル定義と完全一致が必要です(大文字小文字、空白含む)。

ここではMANDTとBUKRSします

image.png

Step 3: General Optionsを設定する

最初は次の設定から始めると扱いやすいです。

項目 初期推奨値 意図
Max Errors 100 エラー過多時に早めに停止
Columns to Exclude 必要列のみ除外 監査対象外列を比較から外す
Case Sensitive Column Names False から開始 列名大小文字差分での失敗を抑える
Skip Rowcount False(大規模時はTrue検討) 件数カウント時間とのトレードオフ
Allow Empty Data Sources 要件に応じて設定 空データを許容する比較で使用
Report Unmatched Target Rows True ターゲット側余剰行も検知
Export Matched Data False レポート肥大化を防ぎ性能維持

ここでは簡易的に以下のように設定します。
image.png

Step 4: Toleranceを入れて誤検知を減らす

値の微差を許容したい列にはToleranceを設定します。

数値トレランスの例:

  • -2;+2(絶対値で許容)
  • -1%;+1%(割合で許容)

注意点:

  • Row Key列にはToleranceを設定できない
  • 小数点と桁区切りはLocale依存なので、Source/TargetのLocale設定をそろえる

Step 5: 実行して結果を確認する

テスト結果の確認にはTestStepのResult欄をOK*と指定する事で結果確認が簡単に検証できます。

image.png

それではテストを実行しましょう。
テストを実行したら、まず次の順番で見ます。

  1. 失敗件数と Max Errors 到達有無
  2. Unmatched Source / Unmatched Target の件数
  3. Matched row内のセル差分(Tolerance適用後でも残る差分)

Report Path を設定しておくと、比較結果をSQLiteベースのレポートとして保存できます。
必要に応じてReport ExporterでHTML/CSVへ展開し、レビュー共有しやすくします。

成功時

成功時はLogInfoより処理件数などが確認できます。
(上記のResultでOK*と設定している場合)
image.png

エラー時

エラー時はLogInfoよりエラー件数等の詳細が確認可能です。
image.png

Step 6: Report Exporter/Report Viewer

実行結果のレポート等が必要な場合は実施結果のDBファイルからHTML形式またはCSV形式での出力が可能です。
Report Exporterはexeファイルをダウンロードし、利用します。

使用例

C:\Files\DI>Tricentis.DataIntegrity.Report.Exporter.exe ^
  --input "C:\Files\DI\Row by Row Comparison\Cloud\TestResultReport_yyyymmdd-hhmmss.db" ^
  --output "C:\Files\DI\Row by Row Comparison\Cloud" ^
  --format HTML

Report Exporter 引数一覧

Argument 説明
--i, --input Data Integrity テストレポートの絶対パスを指定します。
--o, --output 出力ファイルの保存先を指定します。

使用方法:
・1テーブルのみ出力する場合:ディレクトリまたはファイルパスを指定可能
・複数テーブルを出力する場合:ディレクトリを指定(形式:<レポート名>_<テーブル名>)
・全テーブルを出力する場合:ディレクトリを指定

⚠ Summaryタブは常にJSON形式で出力されます。ファイル指定時は .json 拡張子が必須です。
--f, --format 出力形式を指定します。
デフォルト:CSV
HTML を指定するとHTML形式でエクスポートします。
--t, --table 出力対象テーブルを指定します。

指定可能値:
Differences / Unmatched / Invalid / UnmatchedSource / UnmatchedTarget / InvalidSource / InvalidTarget / Summary

※ HTML形式では Matched 行のエクスポートは未対応。

複数テーブル出力方法:
・引数を複数回指定(テーブル毎)
・未指定の場合は全テーブルを出力
--d, --delimiter CSV出力時のみ使用。区切り文字を指定します。
デフォルト:,(カンマ)
--progress エクスポート進捗を表示します。
--h, --help ヘルプを表示します。
--v, --version バージョン情報を表示します。

Report Viewer を利用すると比較結果の差異一覧が容易に確認できますので
手動でエクセルなどで比較する場合と比べても、圧倒的に簡単に差分比較が実現可能です。

Report Viewer Summary

image.png

Report Viewer Differences

image.png

Report Viewer In Source Only

image.png

Report Viewer In Target Only

image.png

トラブルシュート

行が大量に不一致になる

  • Row Keyが一意でない可能性を確認
  • Source/Targetで比較対象の抽出条件(WHERE句)が一致しているか確認

実行が重い

  • Export Matched Data=False を徹底
  • 必要なら Skip Rowcount=True を試す
  • 比較不要列は Columns to Exclude へ移す

想定外の「差分なし」になる

  • Columns to Exclude に重要列を入れていないか確認
  • Tolerance設定が広すぎないか確認

まとめ

実践編の要点は以下です。

  1. Row Keyは一意性重視で設計する
  2. General Optionsは「精度」と「性能」のバランスで調整する
  3. レポート出力まで含めて運用設計を目指す

この次のステップとしては、定期実行を前提に「失敗時の切り分けフロー」と「運用メトリクス(失敗率・差分傾向)」まで落とし込むのがおすすめです。

補足

注 SAPReader利用時の列名指定について
SAPReaderを利用する際にはテーブル情報のTechnical Nameを指定します。
Technical NameはSE16やSE11で確認してください。

image.png

最小設計サンプル

image.png

参考リンク(公式ドキュメント)


本記事は 2026-02-24 時点の公開ドキュメントをもとに作成しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?