Informatica でのランク変換の例

⚡ スマートサマリー

Informaticaのランク変換は、アクティブな接続オブジェクトであり、各グループの上位または下位N行のみを保持し、自動RANKINDEX出力ポートを介して各残存行に位置を割り当てます。

  • 🥇 上または下N: Top/BottomプロパティとNumber of Ranksプロパティを組み合わせることで、フィルター処理後に残る行が決まります。
  • 🗂️ グループ別ランキング: グループ分け機能は、各グループのランキングをリセットするため、各部門が独自のトップ3を返すことができます。
  • 🔢 ランクポート: Rフラグを持つポートはちょうど1つだけであり、その単一の列の値に基づいてランキングが計算されます。
  • 📍 ランクインデックス: デザイナーは、各行のグループ内の位置を保持するために、この出力専用ポートを自動的に追加します。
  • 🧪 実例: 8番目の地図ping 設計手順では、各部門で最も給与の高い従業員上位3名をEMP_TARGETに読み込みます。
  • 💾 キャッシュ済みで有効: グループ値と行データはインデックスとデータキャッシュに保持され、行数は変化します。

Informatica でのランク変換

ランク変換とは何ですか?

ランク変換は、グループとランクに基づいてデータをフィルタリングする、アクティブかつ接続された変換です。たとえば、給与が最も高い従業員のレコードを10件取得したい場合、ランク変換を使用することでそのようなフィルタリングを実行できます。

ランク変換では、グループに基づいてランキングを作成する機能も提供しています。たとえば、部門別に給与の高い従業員の上位10人を取得したい場合、そのグループをping この変換によって実現可能です。

ランク変換は出力行数に影響を与えるため、アクティブな変換です。

Rank 変換には、行にランクを割り当てる出力ポートがあります。そのポートは RANKINDEX という名前で、変換が追加されるとすぐに Designer によって自動的に作成されます。 地図ping.

ランキングでは、どの行が勝つかを決定する前にグループ内のすべての行を比較する必要があるため、統合サービスは受信データをキャッシュします。グループ値はインデックスキャッシュに、残りの行データはデータキャッシュに格納されます。 ジョイナ変換 マスターパイプラインを保持している。

ランク変換における港湾

具体的な例を見る前に、[ポート] タブの各ポートフラグが実際に何をするのかを知っておくと役立ちます。なぜなら、そのうちの 2 つのフラグが、この変換の実際の処理を行っているからです。

ポートタイプ 何それがありません
入力(I) 上流の変換処理から列を受け取ります。ランク変換処理にリンクされているすべての列は入力ポートです。
出力(O) 列を次の変換処理またはターゲットに渡します。
変数(V) 式変換と同様に、変換内部にローカル計算を保持します。
ランク(R) ランキングの計算に使用される列を示します。変換処理において、このフラグを持つことができるポートは1つだけです。
グループ化する 異なる値ごとにランキングをリセットするため、上位3つのフィルターでは、全体で3行ではなく、グループごとに3行が返されます。
ランクインデックス デザイナーによって作成される出力専用ポート。グループ内の各行のランキング順位を格納し、接続せずに放置することも可能です。

ランキングは単一の港湾のみで行うことができるため、「最高給与、次に最長勤続年数」といった要件を満たすには、2位の港湾ではなく、上流でタイブレーク値を準備しておく必要がある。

Informaticaでランク変換を使用する方法

各部門の給与上位3名の従業員を読​​み込むことが要件です。これをランク変換を使用して実装します。マップの以下の8つのステップに従って作業を進めてください。ping デザイナー。

ステップ1) マップを作成するping ソースEMPとターゲットEMP_TARGETを持つ。両方の定義がキャンバス上に配置されている(下図参照)。

地図ping 設計者がEMPソース定義とEMP_TARGETターゲット定義を表示しています。

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

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

次に、「作成」オプションを含む「変換」メニューが表示されます。

マップで変形メニューが開きましたping 「作成」オプションがハイライトされたデザイナー

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

  1. ランク変換の選択
  2. 変換名「rnk_salary」を入力します
  3. 「作成」ボタンを選択します

「ランク」を選択し、「rnk_salary」という名前を入力して変換ウィンドウを作成します。

ステップ4) ランク変換はマップ内に作成されますpingウィンドウ内の「完了」ボタンを選択します。すると、空のrnk_salaryオブジェクトがキャンバスに表示されます。

ランク変換rnk_salaryが作成され、マップ上に配置されましたping キャンバス

ステップ5) すべてのポートを接続します ソース修飾子 ランク変換を適用することで、すべての従業員列がランキングに使用できるようになります。

rnk_salaryランク変換にリンクされたすべてのソース修飾子ポート

ステップ6) Double ランク変換をクリックすると、「変換の編集」ウィンドウが開きます。このウィンドウで

  1. プロパティメニューを選択
  2. 上/下プロパティから「上」オプションを選択します
  3. ランク数に 3 を入力します

スクリーンショットに示すように、「プロパティ」タブには「トップ」と表示され、3つのランクが表示されています。

「ランク変換」の「プロパティ」タブで、「トップ」を選択し、ランク数として「3」を入力した状態。

ステップ7) 再度「変換編集」ウィンドウで

  1. 「ポート」タブの選択
  2. 部門番号列のグループ化オプションを選択します
  3. 給与列でランクを選択します
  4. [OK]ボタンを選択します

「港湾」タブでは、部門番号にグループフラグが、給与にRフラグが表示されるようになりました。

部門番号でグループ化し、給与列でランクを設定したランク変換のポートタブ

ステップ8) Rank変換のポートをターゲットテーブルに接続します。マップping 現在は、EMPからrnk_salaryを経由してEMP_TARGETへと処理が実行されます。

ランク付けされたポートは、rnk_salaryランク変換からEMP_TARGETテーブルにリンクされています。

それでは、地図を保存してください。ping そして作成後にそれを実行する セッション (NAIST) と ワークフローソース修飾子はすべてのレコードを取得しますが、ランク変換では各部門で給与の高いレコードが3件あるレコードのみが渡されます。

ランク変換の特性

ステップ6で使用する「プロパティ」タブには、例で変更する2つの設定以外にも多くの設定項目があります。以下の設定項目は、保持する行数、文字列の比較方法、キャッシュファイルの書き込み場所などを制御します。

プロパティ 制御するもの
上/下 順位付け列には、最高値と最低値のどちらを保持するか。この例では「上位」を使用します。
ランク数 グループごとに返される行数。この例では3を使用しているので、各部署から3人の従業員が返されます。
大文字小文字を区別する文字列比較 文字列比較において、順位付け時に大文字と小文字を区別するかどうか。これは、順位付け対象がテキストである場合にのみ重要になります。
キャッシュディレクトリ インデックスファイルとデータキャッシュファイルが作成されるディレクトリ。デフォルトはプロセス変数$PMCacheDirです。
ランクデータキャッシュサイズ 行データを保持するデータキャッシュのサイズ。デフォルトは「自動」で、統合サービスがサイズを決定します。
ランクインデックスキャッシュサイズ グループ値を保持するインデックスキャッシュのサイズ。デフォルトは自動です。
変革の範囲 ランキングを各トランザクション、またはすべての受信データに適用します。
Tracレベル セッションログに書き込まれる詳細度:簡潔、標準、詳細な初期化、または詳細なデータ。

キャッシュサイズは、大規模なソースの場合に再検討する価値のある設定です。キャッシュが小さすぎると、統合サービスはディスクにページを書き込みます。これは、処理中に最初にチェックされる項目の1つです。 性能調整 地図のping.

ランク変換とアグリゲーター変換の比較

どちらの変換処理もアクティブで、入力データをキャッシュし、グループ化ポートも提供しているため、間違った処理を選択しやすい。違いは、それぞれの処理から出力される結果にある。

比較のポイント ランク変換 アグリゲーター変換
目的 各グループの上位または下位N行の完全な行を返します。 SUMなどの計算値を返します。 AVGグループごとの最大値または最小値
返された行数 グループごとのランク数まで、すべての列がそのままの状態 通常、グループごとに1行の要約行
ポートが追加されました RANKINDEXは、各行の位置を保持します。 なし
順位付けまたは集計された列 1つのポートがランクポートとしてフラグ付けされました 集約式を運ぶポートはいくつでも構いません。

簡単に言えば、 アグリゲーター変換 は「この部署で最も高い給与はいくらか」という質問に答えますが、ランク変換は「どの従業員がそれを稼いでいるか」という質問に答えます。単純な条件に基づいて行のサブセットのみを破棄する必要があり、順序付けが関係しない場合は、 フィルタ変換 キャッシュを全く必要としないため、より安価な選択肢です。

よくあるご質問

いいえ。ランクは接続のみを必要とするため、2つのオブジェクト間のデータフロー内に配置する必要があります。RANKINDEXポートは接続されていない状態にしておくことができますが、変換自体は接続されていないルックアップのように呼び出すことはできません。

同順位の行は順位インデックスに同じ値が割り当てられ、変換処理は次の値をスキップします。したがって、2位が同点の従業員は両方とも2と表示され、次の行には3ではなく4が表示されます。

ソース全体が1つのグループとして扱われるため、変換結果はランクの総数のみを返します。グループポートを指定せずにランクを3つ設定すると、部門別ではなく、会社全体で給与が最も高い上位3名の従業員が表示されます。

はい。数値、文字列、日付/時刻のポートはすべてランクポートとして指定できます。テキストの場合、「大文字小文字を区別する文字列比較」プロパティによって、文字の大文字小文字が順序に影響するかどうかが決まるため、セッション実行前にこのプロパティを確認してください。

保証はできません。この変換では、どの行が残るかを選択するだけで、ターゲットに到達する順序を保証するものではありません。ロード順序が重要な場合は、RANKINDEX ポートにソーター変換を追加してください。

A SQL ウィンドウ関数はすべての行にラベルを付け、フィルタリングは外部クエリに任せます。Informaticaの変換処理は、ラベル付けとフィルタリングを1回の処理で行い、データベースエンジンが利用できないフラットファイルやその他の非リレーショナルソースにも対応します。

機械学習モデルは、解約、不正行為、コンバージョンの可能性に基づいてレコードをスコアリングし、そのスコアがランキング列となります。AIアドバイザーはグループサイズもプロファイリングするため、キャッシュ設定やランク数は推測ではなく実際のデータに基づいて選択されます。

Copilot は同等のウィンドウ関数クエリを作成します。 Python 素早くグループ化できるので、結果の検証に役立ちます。マップを読み取ることはできません。pingそのため、すべての提案を下書きとして扱い、行数をセッションログと比較してください。