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.

Para analizar varias filas XML o JSON como un registro, puede utilizar uno de los dos métodos siguientes:

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.

El ejemplo siguiente muestra los valores del conector para pasar un archivo XML de formato DOS que se encuentra en Amazon S3:
Tabla 1.
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

  1. 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.
  2. 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.

    1. Especifique los valores siguientes:
      Tabla 2.
      Valor Valor
      Formato del archivo Delimitado
      Definición de registro Ninguna
      Delimitador de campo ~
      Delimitador de fila <CR>
    2. 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.

    3. Pulse Aplicar y volver.
    4. Abra la etapa Transformer y, a continuación, pulse Añadir variable de etapa +. Denomine la nueva variable "combinada".
    5. 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, donde Link_1 es el nombre del enlace que conecta el conector y la etapa Transformer. A continuación, pulse Aplicar y devolver.
    6. 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.
    7. Abra la pestaña Salida y, a continuación, añada un valor de restricción de LastRow().
    8. 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 por outputString y establezca la longitud en un número grande mayor que la longitud de serie de archivo completa.
    9. Pulse Guardar y volver.