Informatica でのルーター変換: 複数の条件の例

⚡ スマートサマリー

Informaticaのルーター変換は、アクティブな接続オブジェクトであり、受信した行を複数のグループフィルタ条件に対して一度にテストし、各行を一致する出力グループ、またはデフォルトグループに送信します。

  • 🔀 複数の条件: 1つのルーターは、複数の条件を1回の処理でテストすることで、一連のフィルター変換を置き換えます。
  • 📦 グループ構成: 1つの入力グループから、ユーザー定義の出力グループと1つの自動デフォルトグループにデータが供給されます。
  • 🗃️ デフォルトのグループ: すべての条件を満たさない行もここに到着するため、拒否されたデータは失われることなく捕捉される。
  • 🧪 実例: deptno=20という条件を持つdeptno_20という名前のグループは、部門20の行のみをEMP_TARGETにロードします。
  • ♻️ 重複ping ルール: 2つの条件を満たす行は、一致する出力グループごとに1回ずつ渡されます。
  • ⚡ 効率性: ソースデータは一度だけ読み込まれるため、同じ行を読み込む複数のフィルタ変換よりも、1つのルーターの方がコスト効率が良い。

Informatica でのルーター変換

ルーター変換とは何ですか?

ルーター変換は、フィルタ変換に似たアクティブで接続された変換であり、ソースデータをフィルタリングするために使用されます。

フィルタリングに加えて提供される追加機能は、破棄されたデータ(フィルタリングされたデータ)もマップに収集できることです。pingまた、複数のフィルタ条件を適用することで、複数のデータセットを取得することも可能です。

例えば、deptno = 10 のデータをフィルタリングする場合、deptno が 10 と等しくないレコードも取得できます。このように、ルーター変換では複数の出力グループが生成され、各出力グループには独自のフィルタ条件を設定できます。

さらに、デフォルトグループも存在します。このデフォルトグループには、いずれのグループ条件も満たさないレコードセットが含まれます。例えば、フィルタ条件「deptno=10」と「deptno=20」に対してそれぞれグループを作成した場合、deptnoが10でも20でもないレコードは、このデフォルトグループに渡されます。

つまり、フィルタグループによって拒否されたデータは、このデフォルトグループによって収集されます。そして、場合によっては、この拒否されたデータを保存する必要があることがあります。そのようなシナリオでは、デフォルト出力グループが役立ちます。

複数のフィルタ条件を許可するため、ルーター変換にはグループオプションが用意されています。

  • 入力データを受け取るデフォルトの入力グループがあります。
  • また、どのフィルタ条件にも該当しないすべてのデータを提供するデフォルトの出力グループも存在します。
  • フィルタ条件ごとに、ルーター変換で出力グループが作成されます。これらの異なるグループに、異なるターゲットを接続できます。

ルーター変換の構成要素

地図を作成する前にpingそのため、Designer が作成する 4 つの部分を知っておくと便利です。ルーター変換は、1 つの入力グループ、一連の出力グループ、それらの内部のポート、および各行の配置場所を決定する条件で構成されます。

成分 何それがありません
入力グループ 変換処理の唯一のエントリポイントです。出力グループがいくつ存在しても、入力されるすべての行はここに一度だけ到着します。
ユーザー定義出力グループ 自分で作成して名前を付けるグループ(例:deptno_20)。各グループには独自のグループフィルタ条件があります。
デフォルト出力グループ 最初のユーザー定義グループが存在するとすぐに自動的に作成されます。フィルター条件はなく、編集または削除することはできません。
グループフィルター条件 式エディタで記述されたブール式。この式がTRUEと評価される行は、そのグループを通過します。

設計者は入力グループから出力グループにポート定義をコピーするため、ポートをグループごとに再作成する必要はありません。この設計から、次の2つのルールが導き出されます。

  • 行は重複させることができます。 ある行が複数のグループフィルタ条件を満たす場合、一致する各グループに一度ずつ渡されます。これが、ターゲットの行数がソースの行数より多くなる一般的な理由です。
  • 行を削除できます。 デフォルトグループが接続されていない場合、そこに到達した行はパイプラインから単純に消えてしまうため、不要なデータを破棄する最も迅速な方法となります。

ルーター変換とフィルタ変換の比較

どちらのオブジェクトもデータを条件と照合し、どちらもアクティブな変換処理であるため、どちらを選択するかは、関係する条件の数と、拒否された行が重要かどうかによって決まります。

比較のポイント フィルタ変換 ルーター変換
オブジェクトごとの条件 1 1つまたは複数、それぞれが独自のグループに属する
拒否された行 削除され、利用できません デフォルトグループに収集されました
出力グループ 単一の出力パイプライン グループごとに1つのパイプライン、加えてデフォルトグループ
情報源によると 条件が連鎖している場合、フィルターごとに1回の読み取りが必要です。 あらゆる状況に対応できる1つの読み物
典型的な使用 不要な行を削除する 1つのソースを複数のターゲットに分割する

フィルタ変換で 3 つの条件をテストすると 3 つのオブジェクトが生成され、チェーンされた設計では同じソース行が繰り返し評価されます。 1 つのルーターは同じ作業を 1 回のパスで実行するため、2 番目の条件が現れた場合は一般的にルーターの方が効率的なオプションとなります。 1 つの使い捨て条件の場合は、よりシンプルな フィルタ変換 やはりそちらの方が適している。

Informaticaでルーター変換を作成する方法

以下の手順では、部門20の従業員をターゲットテーブルに送信するルーターを作成します。マップの9つのステップを順番に実行してください。ping デザイナー。

ステップ1) 作る 地図ping ソース「EMP」とターゲット「EMP_TARGET」を持つマップ。ping デザイナーキャンバスには、以下に示すように、ソース定義、そのソース修飾子、およびターゲット定義が格納されます。

地図ping EMPソース、そのソース修飾子、およびEMP_TARGETターゲット定義を含むデザイナーキャンバス

ステップ2) 次に地図上でping

  1. 変換メニューを選択します
  2. 作成オプションを選択

ウィザードを起動するために使用するメニューパスは、次のスクリーンショットで強調表示されています。

マップで変形メニューが開きましたping 作成オプションを選択したデザイナー

ステップ3) 変換の作成ウィンドウで

  1. ルーター変換の選択
  2. 変換の名前「rtr_deptno_10」を入力します。
  3. 「作成」オプションを選択します

ステップ4) ルーター変換はマップ内に作成されますpingウィンドウで「完了」オプションを選択します。両方の手順で使用される「変換の作成」ウィンドウを以下に示します。

ルーターを選択し、rtr_deptno_10という名前を入力して、変換ウィンドウを作成します。

ステップ5) すべての列をドラッグ アンド ドロップします。 ソース修飾子 ルーターへの変換です。スクリーンショットに示すように、すべてのポートが新しいオブジェクトにリンクされます。

すべてのソース修飾子列がrtr_deptno_10ルーター変換にドラッグされました

ステップ6) Double ルーター変換をクリックし、その変換プロパティで

  1. グループタブを選択
  2. グループ名「deptno_20」を入力
  3. グループフィルター条件をクリックします

次に、新しく追加されたグループが表示された「グループ」タブが表示されます。

ユーザー定義グループ deptno_20 が追加された Router 変換のグループ タブ

ステップ7) 式エディタで、フィルタ条件「deptno=20」を入力し、「OK」ボタンを選択します。この条件を含むエディタ画面を以下に示します。

式エディタで、deptno_20グループのグループフィルタ条件deptno=20を保持しています。

ステップ8) グループウィンドウで「OK」ボタンを選択します。次のスクリーンショットに示すように、条件がグループに表示されます。

グループフィルタ条件は、[変換の編集]ウィンドウでdeptno_20グループに対して保存されました。

ステップ9) Router変換のグループdeptno_20のポートをターゲットテーブルのポートに接続します。完成したマップping ソースからグループを経由してEMP_TARGETまで実行されます。

deptno_20出力グループのポートはEMP_TARGETターゲットテーブルにリンクされています。

さて、このマップを実行するとping、フィルタリングされたレコードがターゲットテーブルにロードされます。

ルーター変換のベストプラクティスとよくあるエラー

地図ping 上記では1つのグループを使用しているため、後々サポートチケットが発生する原因となる動作のほとんどが隠蔽されています。以下では、2つ目のグループが登場した場合に何が変わるかを説明します。

  • 重複した行に注意してください。 グループ条件は相互に排他的ではありません。あるグループで「sal>1000」、別のグループで「deptno=20」と記述すると、両方の条件を満たす従業員が二重に登録されてしまいます。条件を排他的にするか、意図的に重複を許容してください。
  • 拒否が重要な場合は、デフォルトグループに接続してください。 デフォルトグループがターゲットまたは拒否ファイルに接続されている場合を除き、どの条件も満たさない行は失われます。監査可能なロードでは通常、これらの行は保持されます。
  • グループ名は、対象ではなくルールに基づいて命名してください。 例のグループ deptno_20 は明確に読み取れますが、group1 というグループはそうではありません。このチュートリアルでは変換自体の名前が rtr_deptno_10 であるのに対し、グループは deptno 20 でフィルタリングしていることに注意してください。これはまさに命名規則によって防止される種類の不一致です。
  • 可能な限り、ルーティング前にフィルタリングを行ってください。 どのグループも必要としない行は、ルーターに渡すよりもソース修飾子クエリで削除する方がコストが低い。
  • ルーターを結合として扱わないでください。 1 つのパイプラインを複数に分割します。分岐を再び結合するにはユニオン変換が必要であり、2 つの異なるソースを組み合わせるには ジョイナ変換.

条件がTRUEまたはFALSEではなくNULLを返すグループは一致しないものとして扱われるため、テスト対象の列にNULL値がある行はデフォルトグループにフォールスルーされます。条件でNULLを明示的に処理することで、このような予期せぬ事態を回避できます。 性能調整 そしてテスト。

よくあるご質問

はい。統合サービスは、すべてのグループフィルタ条件をすべての行に対して評価するため、2つの条件を満たす行は、一致する各グループを一度ずつ通過します。重複ping 条件が、予期しない重複行が発生する一般的な原因です。

そこにルーティングされた行はパイプラインから削除されます。デフォルトグループを未接続のままにしておくのは、どの条件にも該当しないデータを破棄する標準的な方法であり、拒否された行が気づかれずに消えてしまうことがある理由でもあります。

いいえ。最初のユーザー定義グループが作成されると自動的に表示され、グループフィルタ条件は適用されず、デザイナーでは編集や削除はできません。追加、名前変更、削除できるのはユーザー定義グループのみです。

正確には1つです。すべての行はその単一の入力グループを経由して入力され、Designerはポート定義を各出力グループにコピーするため、マップの各ブランチごとにポートを再作成する必要はありません。ping.

ユニオン変換は、一致するポートを持つ複数の入力グループを受け取り、単一の出力パイプラインを返します。ルーターはデータを分割しますが、ユニオンだけが分岐を1つのターゲットに統合します。

接続された出力グループの順序は、統合サービスが条件を評価する順序を決定します。これは、後続のグループに一致する行を妨げるものではないため、順序はどの行が選択されるかではなく、実行順序に影響します。

AIアシスタントは、ソースデータを分析して値の分布状況を明らかにし、分割条件を提案したり、重複する行を警告したりします。また、機械学習ベースのアドバイザーは、NULL値の割合が高い列を特定し、それらの行がデフォルトグループに自動的に追加される前に検出します。

Copilotはブール式とそれに対応するSQLを迅速に生成するため、繰り返し行うルール作成にかかる時間を節約できます。ただし、ポート名やデータボリュームは認識できないため、マップを保存する前に式エディタですべての提案を検証してください。ping.