ランタイム列伝搬 (Java 統合ステージ)
IBM® DataStage® では、スキーマの一部を定義し、実際の実行時にメタデータに定義されていない追加の列がジョブで検出された場合に、それらの追加の列を採用してジョブの残りの部分に伝搬するように指定することができます。 このプロセスは、ランタイム列伝搬として知られています。
プロジェクトのランタイム列伝搬を有効にして、出力ページの 「列」 タブの個々のリンクに設定することができます。 ランタイム列伝搬を有効にするには、「ランタイム列伝搬」 のチェック・ボックスを選択します。
出力リンクへの列の追加
出力リンク上でランタイム列伝搬が有効になっている場合、ユーザー・コードはこの出力リンクに列を追加できます。 追加の列は、Processor.getAdditionalOutputColumns()
メソッドで指定できます。このメソッドは、ランタイム列伝搬が有効になっている出力リンクごとに呼び出されます。
public List<ColumnMetadata> getAdditionalOutputColumns
Link outputLink, List<Link> inputLinks,
Properties stageProperties)
{
List<ColumnMetadata> addtionalColumns = new
ArrayList<ColumnMetadata>();
ColumnMetadata charCol = new ColumnMetadataImpl
("charCol",ColumnMetadata.SQL_TYPE_CHAR);
addtionalColumns.add(charCol);
ColumnMetadata intCol = new ColumnMetadataImpl
("intCol",ColumnMetadata.SQL_TYPE_INTEGER);
addtionalColumns.add(intCol);
return addtionalColumns;
}
入力リンク 0 にはあるが、出力リンクにはない列を追加する場合は、 InputLink
インターフェースの subtractColumnList()
という名前の以下のヘルパー・メソッドを使用できます。
public List<ColumnMetadata> getAdditionalOutputColumns(Link outputLink,
List<Link> inputLinks, Properties stageProperties)
{
return inputLinks.get(0).subtractColumnList(outputLink);^M
}
あるいは、JavaBean を使用して、実行時に出力リンク上に列定義を指定することもできます。 ランタイム列伝搬が使用可能になっている出力リンクでユーザー・コードが JavaBean を使用し、 JavaBean クラス と 「列マッピング」 プロパティーの両方が空の場合、Java™ Integration ステージは、指定された JavaBean クラスの Bean プロパティーから列を自動的に作成し、それらを出力リンクに追加します。
Java 型 | SQL タイプ |
---|---|
byte[] | バイナリー |
boolean/java.lang.Boolean | Bit |
short/java.lang.Short | TinyInt |
int/java.lang.Integer | SmallInt |
double/java.lang.Double | Double |
float/java.lang.Float | Float |
long/java.lang.Long | 整数 |
java.lang.String | VarChar |
java.math.BigInteger | BigInt |
java.math.BigDecimal | 10 進数 |
java.sql.Date | 日付 |
java.sql.Time | 時刻 |
com.ibm.is.cc.javastage.api.TimeMicroseconds.class | 時刻 |
java.sql.Timestamp | タイムスタンプ |
入力から出力への列データの転送
Java Integration ステージ API は、列メタデータを実行時に動的に照会し、データにアクセスする機能を提供します。 入力リンク上の伝搬された列のデータを読み取るコードを作成し、RCP が有効になっている出力リンクにそれらを書き込む必要があります。
また、Java Integration ステージは、ステージに単一の入力リンクと 1 つ以上の出力リンクがある場合に、入力リンクから出力リンクに列データを自動的に転送する機能も提供します。 この場合、入力リンク上で伝搬された列のデータを転送するためにユーザー・コードは必要ありません。 詳しくは、Java Integration ステージ API の Javadoc 情報の com.ibm.is.cc.javastage.api.ColumnTransferBehavior クラスを参照してください。