達成するためのDataStageジョブでのTransformerStageの使用と機能の分析
Analysis Transformer Stage Usage
製品の背景
IBM InfoSphere DataStageは、業界の主流のETL(抽出、変換、ロード)ツールであり、クライアントサーバーアーキテクチャ、サーバー側ストレージ上のすべてのアイテムとメタデータを使用し、大量のデータのサポートが複数のデータ構造で収集されました。 、統合と変換。クライアントのDataStageDesignerは、ETLプロセス全体、ユーザーの設計、およびDesignerでのDataStageジョブの開発のためのグラフィカルな開発環境を提供します。 DataStageでは、ステージETLのニーズを満たすためにいくつかの処理プロセスが提供されていますが、これらはステージ内のTransformerステージであり、最も広く使用されている方法の使用方法です。この記事では、ETLプロセスの使用法におけるTransformerステージについて説明し、実装されている機能について詳しく説明します。 。 IBM Information Server8.0.1バージョン用のIBMInfoSphereDataStageに関連する記事。
トランスフォーマーステージのご紹介
Transformer Stageは、ETLプロセスの強力なコンポーネントであるDataStageで重要であり、「T」(つまり変換データ)の責任を負います。 Transformer Stageでソースデータと宛先データを指定し、対応する入力フィールドと出力フィールドを照合し、変換ルールと制約を指定できます。
図1で使用される。 1.使用中のTransformerStageDataStageジョブ
図2.トランスフォーマーステージの列マッピングフィールド式
DataStageジョブの関数およびケーストランスフォーマーステージは、分析で実現できます
1.フィールド変換
Transformer Stageフィールド変換は、最も一般的な機能の1つであり、特定の仕様変換に従ってターゲットデータソースデータになることができます。次のETLプロセスは、より一般的な日付とタイムスタンプの相互変換です。たとえば、フィールド変換の実装を示しています。
1.1ソースデータ型はタイムスタンプ、ターゲットタイプは日付です
リスト1.時間変換関数
1 | TimestampToDate(in.ADD_DATE) |
図3.への式フィールド
図4.変換前後の比較フィールド
1.2データ型Dateのソース、ターゲットタイプTimestamp
この変換は、最初にDate型Varchar型を変換し、次に入力されたVarchar文字に必要な分と秒のタイムスタンプを変換してから、それをTimestampに変換するために必要です。
リスト2.時間変換関数
1 2 | StringToTimestamp((DateToString(in.ADD_DATE,'%yyyy-%mm-%dd'):' 00:00:00'), '%yyyy-%mm-%dd %hh:%nn:%ss') |
図5.への式フィールド
図6.変換前後の比較フィールド
1.3その他のタイプの変換
DataStageは、豊富なフィールド変換関数を提供します。次の図は、変換関数リストフィールドを示しています。ユーザーは、実際のニーズに応じて、変換を実現する最も簡単な方法の1つを選択できます。
図7の伝達関数のフィールドにおける並列ジョブ。
2.分析とフィールドロジック操作
また、Transformer Stageを使用して、論理演算と機能的に同等であるフィールド間の差がSQLで決定されるかどうかを計算します。
次の図は、ソースフィールドの長さに基づくターゲットフィールドの戻り値を示しています。トランスフォーマーステージ決定ロジックは「YES」と3つの値NLLL「NO」を返します
リスト3.論理演算式
1 2 3 | IF Len(trim(in.CLASS_CODE)) <10 THEN 'NO' ELSE IF Len(trim(in.CLASS_CODE)) = 10 THEN 'YES' ELSE SetNull() |
図8.式フィールドの論理演算
3.データレプリケーション
ETLは、同じデータストリームを複製する必要があるプロセスにある可能性があり、さまざまなターゲットの出力として使用され、次にフィールドの単純な複製でTransformerStageが使用されます。ユーザーは、選択した列マッピングにコピーされ、列マッピングに直接コピーされてドラッグされ、出力ステージプロパティを設定できます。
図9.コピーリンクは複製されたデータストリーム出力リンクです
図10.データストリームをコピーして、データの整合性の列マッピングを確保します
4.データをフィルタリングする
SQLステートメントに対応するデータをフィルタリングする場合、出力データをステージングするためにさまざまな条件で記述されたさまざまなロジックに従って、フィルタリングされたデータTransformerStageが有利になります。
ポップアップウィンドウの図の下の二重のTransformerStage Constraintsプロパティボタンは、特定のビジネスロジックに従って、ブロックに対応する各リンクのプロパティを表示し、リンクごとに制約を埋めます。これは、出力が制約されるそれぞれのTransformerStageに基づきます。状態データ。
図11の変圧器ステージ制約式。
関連するフィールド
Transformer Stageは、関連するフィールドがサーバージョブの機能に限定されていることを認識します。変換ステージは、ハッシュファイルで生成されたデータソースのキー値に従ってメインデータに関連付けることができます。これは、関連付けられたデータベーステーブルの実装と同等です。たとえば、2次元テーブルに関連付けられたプライマリテーブルへのFIGジョブが詳細に作成されます。
ポップアップウィンドウの図の下の二重のTransformerStage Constraintsプロパティボタンは、特定のビジネスロジックに従って、ブロックに対応する各リンクのプロパティを表示し、リンクごとに制約を埋めます。これは、出力が制約されるそれぞれのTransformerStageに基づきます。状態データ。
図。 12.使用サーバージョブのTransformerStage関連データ
次の2つの式に関連するフィールドを関連付けることにより、2次元テーブルのジョブのメインデータは、関連付けられたタイプおよび長さのフィールドと一致する、DataStageServerジョブ関数によって提供される関連付けられたフィールドに従って前処理される場合があります。
リスト4.ハンドル式関連フィールド
1 2 | TRIM(Master_data.CNTRY_CODE) SUBSTRINGS(Master_data.CNT_AUDIT_DATE,1,10) |
12.FIG列マッピングおよび関連する条件式
TransformerStageのカスタム関数と変数
1.カスタム関数を使用する
Routines関数関数で提供されるDataStageであるRoutinesは、開発者が使用できる非常に強力な関数ライブラリです。もちろん、関数の量が特定のビジネスニーズを満たさない場合もあるため、開発者はRoutinesカスタム関数を開発してから変換プロセスを行うこともできます。 。次の例では、開発者は関数Routinesを開発し、Transform Stageを呼び出す方法を学ぶことができます。最初にRoutinesを作成するか、使用法に応じてServer Transform Stage ParallelRoutineを選択することができます。
図14.新しいルーチン
[全般]タブで、TestRoutineという名前を付けます
図15.ルーチン名
スイッチングタブへの引数、入力パラメータ定義関数、以下に示すように、パラメータ入力inputparaを定義します
図16.ルーチンで定義された入力パラメーター
実際のコードロジックの準備が行われる[コード]タブに切り替えます
コードを保存した後、[コンパイル]ボタンをクリックし、関連するテストを実行して、機能ロジックインターフェイスのテスト準備を確認します。
5.カスタム関数エンコーディングリスト
1 2 3 4 5 6 7 8 9 10 11 12 | * If the input parameter is null or empty string, returns 'BLANK' If the input parameter is less than 10, then add 1 since, otherwise 'Great than 10' * If inputpara='' OR IsNull(inputpara) Then Ans='BLANK' GoTo ExitFunc End If inputpara<=10 Then Ans=inputpara +1 End Else Ans='Great than 10' End ExitFunc: |
図17.ルーチンで定義された入力パラメーター
Transform Stage open Transformer Stage Propertyプロパティページの対応するフィールドで関数呼び出しが必要な場合は、目的の編集フィールドを選択し、参照ボタンをクリックして、図16に示すDSルーチンを選択し、関連する操作を実行します。
図18.変換段階の参照関数
ステージ2。ステージ変数変数の使用
また、可変位相の複雑なロジックと処理効率を実現するような方法でDataStageステージ変数を提供しました。 Transformer Stage Stage Variablesを定義できます。フィールドには、計算量を減らすために1回以上Derivation StageVariablesが割り当てられます。ジョブレベル変数のステージ変数。したがって、プロジェクト全体で直接呼び出すことはできません。次の例では、開発者はステージ変数を開発し、ステージを変換する方法を学ぶことができます。同じバッチを生成するために使用されるステージ変数の例一意のキーをロードします。ポップアップウィンドウで[プロパティ]ボタントランスフォーマーステージステージのプロパティをダブルクリックし、[変数]タブを選択して、「BatchKey」という名前のジョブレベル変数を定義します。そして保存します。
図19.ジョブで定義されたステージ変数
右側の列のマッピングTransformerStage Stage変数のプロパティボックスの部分で、「BatchKey」が定義されていることを示すことができます。式の入力変数です。
図20.ステージ変数の式
リスト6.ステージ変数の式
1 | '#':in.FILE_CODE:'_':CurrentDate():'_': TimetFromTimestamp(DSJobStartTimestamp) |
特に注目すべきは、多数のデータが読み込まれる一意のキーを確保するために、ここで使用される関数DSJobStartTimestamp DataStageと、ジョブの実行が開始されるたびに関数によって返される結果が返されることです。ユニークな時間。
図21.定義されたステージ変数を参照した列マッピング
図22.生成された一意のキーを定義したステージ変数を介したデータベース
TransformerStageで最適化されたジョブパフォーマンスと代替コンポーネント
Transformer Stageには、同時に非常に強力なデータ処理があります。DataStageは、Stageの処理のより実用的で単純なプロセスも提供します。これは、のそれぞれのサブ機能TransformerStageと機能的に同等です。
表1.トランスフォーマーステージ機能がステージリストに置き換わる
機能を使用する | 代替芸名 | 使用法の説明 |
---|---|---|
フィールド変換 | ステージの変更 | ステージの変更1つの入力と1つの出力のみを変更し、テーブル構造を変更できます。削除、フィールドに名前が変更された予約済みフィールドは、フィールドのデータ型を変更します。 |
データレプリケーション | コピーステージ | コピーステージは、1つの入力と複数の出力を持つことができます。出力のフィールドの順序を変更することはできますが、フィールドタイプを変更することはできません。 1つの入力と1つの出力のみを強制的にTrueに設定するのが最適な場合、実行の終了を確認できます。そうでない場合、実行の終了は識別されませんが、結果はDesignerのデータの操作に影響しません。 。 |
データアソシエーション | ルックアップステージまたは参加ステージ | LookUp Stageデータはメモリに読み込まれ、非常に効率的ですが、より多くの物理メモリを消費します。したがって、参照データが比較的小さい場合は、参照データが比較的大きい場合はルックアップステージを使用することをお勧めします。結合ステージを使用することをお勧めします。 |
データフィルタリング | フィルターステージ | フィルタステージは1つの入力のみで、複数の出力が存在する場合があります。スクリーニング条件に応じて、異なる出力リンクへの出力データ。 |
トランスステージの原理の最適化
1.運用効率の向上
ジョブは、ロジックの処理速度を加速したり、さまざまな柔軟なアプリケーションステージを実行したり、さまざまな処理プロセスを実行したりして、ジョブの全体的な処理速度を向上させます。これにより、より大きな効果が得られます。可能な限り共有データソース、(並列ルーチン)の使用を減らし、その他の可能な代替Transformer StageStage。運用効率を向上させることができるパーティション最適化モード。
2.大きなデータテーブル、JoinStageまたはLookupStageを使用します
通常、LookUp Stageでの作業を見つけるために、データマッチングについて行います。のリファレンスリンクルックアップステージの場合、DataStageはデータをメモリに入れようとし、すべてのリファレンスリンクデータを読み取ることができる場合にのみ完了します。ルックアップステージが機能し始めるため、大量のデータ時間(メモリサイズを超える)が発生した場合、同じ機能を実現するために推奨される結合ステージに接続されています。
3.フィールドとフィールドフィルターの組み合わせ
プロセスフロー全体がソースデータフィールドの一部のみを必要とする場合、またはできればフィルターフィールドの入力時にコピーステージシーケンシャルファイルステージドロップを使用する場合。ソースがデータベースの場合は、必要なフィールドのみを選択してください。プロセスでのシステムリソースの消費を可能な限り削減します。フィールドの一部のみを処理する必要があるが、すべてのフィールドをエクスポートする必要がある場合があります。フィールドの推奨される継続的な操作は、合併プロセスには関与しません。これにより、解析されるデータが削減され、処理量が削減されます。ツールが変換を必要とするより少ないフィールドのみを処理する必要があるようにします。複数のフィールドの計算は、互いに接続されている場合には関与しません。このアプローチも効果があります。
4.並列ルーチンの使用とトランスステージの削減
効率を上げるために他のステージトランスステージと交換することも役立ちます。たとえば、Modify Stage null値での処理、およびデータ分割に使用されるキャストの処理FilterStageのように。
ParallelRoutineはC ++言語で記述され、サーバー側に格納され、C ++演算子としてコンパイルされます。並列ルーチンの使用を最小限に抑えます。複雑なロジックで数十のステージが完了する必要がある場合は、適切と見なされ、ParallelRoutineに置き換えられます。
結論
トランスフォーマーステージはほぼ「ユニバーサル」なコンポーネントに見えますが、それをいかにうまく利用するか、それ自体の特性を発揮させることが最も重要です。 DataStageの仕事は、前述の使用法と機能の分析、コンポーネントの合理的な使用法を決定することです。これにより、Transformer Stageアセンブリとその他のコンポーネントは、補完的なものを使用して完全に適合します。