Pasar varias filas desde un archivo XML o JSON a la etapa Jerárquica (DataStage)
Puede pasar varias filas de un archivo XML o JSON a la etapa Hierarchical como un único registro. Este método es necesario cuando el archivo XML o JSON se encuentra en un conector de almacenamiento de archivos.
Al crear un flujo DataStage® para analizar un archivo XML o JSON que se encuentra en un conector de almacenamiento de archivos (como IBM Cloud® Object Storage, Amazon S3, o Google Cloud Storage) a la etapa Datos jerárquicos, debe pasar una cadena XML o JSON completa como un registro. Normalmente, un archivo XML o JSON contiene varias filas.
Especificación de propiedades de formato de archivo para el archivo XML o JSON
Establezca el formato de archivo del conector en delimitado y establezca los valores del delimitador de campo y del delimitador de fila de forma que el conector lea el formato de archivo como una fila y una columna.Los distintos conectores tienen valores diferentes, por lo que asegúrese de hacer referencia a la documentación del conector para obtener los valores correctos.
| Valor | Valor |
|---|---|
| Formato del archivo | Delimitado |
| Definición de registro | Ninguna |
| Delimitador de campo | ~ Nota: El delimitador de campo puede ser ~ o cualquier otro carácter que todavía no exista en el archivo XML o JSON, que establece toda la fila como delimitador de campo.
|
| Delimitador de fila | <CRLF> |
| Todos los demás valores | Déjelo como predeterminado. |
Utilización de la etapa Transformer para fusionar todas las filas en una fila
- Abra la pestaña Etapa del conector y, a continuación, abra la sección Avanzado. A continuación, establezca la modalidad de ejecución en "Secuencial" y pulse Guardar.
- Configure la etapa Transformer para fusionar todas las filas en una fila.
En el ejemplo siguiente, configura un flujo de DataStage para que tenga un conector Amazon S3 para un origen, que enlaza con una etapa Transformer, que enlaza con una etapa Jerárquica, que enlaza con un archivo secuencial como destino.
En la etapa Transformer, pulse la pestaña Salida, abra la sección Columnas y, a continuación, pulse Editar. Establezca la lista de columnas para que solo contenga una columna.
- Especifique los valores siguientes:
Tabla 2. Valor Valor Formato del archivo Delimitado Definición de registro Ninguna Delimitador de campo ~ Delimitador de fila <CR> - Pulse la pestaña Salida, abra la sección Columnas y, a continuación, pulse Editar. A continuación, establezca la lista de columnas para que contenga solo una columna.
Puede establecer el nombre de columna, por ejemplo, en COLUMN_1 y el tipo en VARCHAR. Establezca que el valor de longitud sea mayor que la longitud máxima de las filas del archivo XML.
- Pulse Aplicar y volver.
- Abra la etapa Transformer y, a continuación, pulse Añadir variable de etapa +. Denomine la nueva variable "combinada".
- Pulse el icono de calculadora para abrir el generador de expresiones. A continuación, establezca la derivación en
if combined="" then Link_1.COLUMN_1 else combined:Link_1.COLUMN_1, dondeLink_1es el nombre del enlace que conecta el conector y la etapa Transformer. A continuación, pulse Aplicar y devolver. - Abra la pestaña Etapa Transformer y, a continuación, abra la sección Avanzado. A continuación, establezca la modalidad de ejecución en "Secuencial" y pulse Guardar.
- Abra la pestaña Salida y, a continuación, añada un valor de restricción de
LastRow(). - En la sección Salida, establezca la derivación en
combined, el nombre de variable de la etapa que ha creado anteriormente. Cambie el nombre de columna poroutputStringy establezca la longitud en un número grande mayor que la longitud de serie de archivo completa. - Pulse Guardar y volver.
- Especifique los valores siguientes: