Propagación de columnas en tiempo de ejecución (etapa Java Integration en DataStage)
IBM® DataStage® le permite definir parte del esquema y especificar que si el trabajo encuentra columnas adicionales que no están definidas en los metadatos cuando se ejecuta realmente, adoptará estas columnas adicionales y las propagará a través del resto del trabajo. Esto se conoce como propagación de columnas en tiempo de ejecución.
Puede habilitar la propagación de columnas en tiempo de ejecución para un proyecto y establecer enlaces individuales en la pestaña Columnas de la página Salida. Para habilitar la propagación de columnas en tiempo de ejecución, seleccione el recuadro de selección Propagación de columnas en tiempo de ejecución.
Adición de columnas adicionales al enlace de salida
Cuando la propagación de columnas en tiempo de ejecución se habilita en un enlace de salida, el código de usuario puede añadir columnas adicionales a este enlace de salida. Las columnas adicionales se pueden especificar mediante el método Processor.getAdditionalOutputColumns(), que se llama para cada enlace de salida cuya propagación de columna en tiempo de ejecución está habilitada.
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;
}
Si desea añadir columnas que están en el enlace de entrada 0, pero no en el enlace de salida, puede utilizar el siguiente método de ayuda denominado subtractColumnList() de la interfaz de InputLink:
public List<ColumnMetadata> getAdditionalOutputColumns(Link outputLink,
List<Link> inputLinks, Properties stageProperties)
{
return inputLinks.get(0).subtractColumnList(outputLink);^M
}De forma alternativa, puede utilizar JavaBean para especificar definiciones de columna en los enlaces de salida en tiempo de ejecución. Si el código de usuario utiliza JavaBean en los enlaces de salida cuya propagación de columna de tiempo de ejecución está habilitada, y tanto la clase JavaBean como la propiedad Correlación de columnas están vacías, la etapa Java™ Integration crea automáticamente columnas a partir de las propiedades de bean en una clase JavaBean determinada y las añade a un enlace de salida.
| Tipo Java | Tipo de SQL |
|---|---|
| byte[] | Binario |
| boolean/java.lang.Boolean | Bit |
| short/java.lang.Short | TinyInt |
| int/java.lang.Integer | SmallInt |
| double/java.lang.Double | Double |
| float/java.lang.Float | Flotante |
| long/java.lang.Long | Entero |
| java.lang.String | VarChar |
| java.math.BigInteger | BigInt |
| java.math.BigDecimal | Decimal |
| java.sql.Date | Fecha |
| java.sql.Time | Hora |
| com.ibm.is.cc.javastage.api.TimeMicroseconds.class | Hora |
| java.sql.Timestamp | Indicación de fecha y hora |
Transferencia de datos de columna de la entrada a la salida
La API de la etapa Java Integration proporciona la funcionalidad para consultar metadatos de columna dinámicamente en tiempo de ejecución y acceder a los datos. Debe crear código para leer los datos de las columnas propagadas en el enlace de entrada y escribirlos en el enlace de salida para el que se ha habilitado la RCP.
La etapa Java Integration también proporciona la funcionalidad para transferir automáticamente los datos de columna de un enlace de entrada a un enlace de salida si la etapa tiene un único enlace de entrada y uno o más enlaces de salida. En este caso, no se necesita su código de usuario para transferir los datos de las columnas propagadas en el enlace de entrada. Para obtener más información, consulte la clase com.ibm.is.cc.javastage.api.ColumnTransferBehavior en la información de Javadoc para la API de la etapa Java Integration.