En esta página, se explica cómo puedes transcodificar datos de mainframe de forma local en el mainframe a un formato compatible y, luego, mover el contenido a BigQuery. La transcodificación es el proceso de convertir información de una forma de representación codificada a otra. En esta página, se explica cómo puedes usar Mainframe Connector para transcodificar datos de unidades centrales a formato Optimized Row Columnar (ORC) y, luego, guardar los datos en Cloud Storage.
Mainframe Connector proporciona dos formas en las que puedes transcodificar datos de la unidad central de forma local en la unidad central.
- Usa los comandos de
qsam
(versión 5.16.0 y posteriores). - Usa el comando
gsutil cp
Ventajas de los comandos qsam
Los comandos qsam
proporcionan las siguientes ventajas:
- Admite tipos de datos compuestos, incluidas las cláusulas OCCURS (listas), REDEFINES y registros anidados. Para obtener más información sobre estos tipos de datos, consulta la referencia de transcodificación de
qsam
. - Admite la configuración del proceso de transcodificación a través de un archivo de configuración del transcodificador. Esta capacidad ofrece más flexibilidad cuando se decodifican datos para Google Cloudy cuando se vuelven a codificar los datos en el mainframe.
- Admite la creación de un conjunto de datos de desbordamiento, que es una tabla de errores de transcodificación que se puede usar para la inspección de errores.
- Admite varios formatos de entrada y salida. Esta capacidad te permite cargar tus datos en varios almacenes de datos y desde ellos.
Antes de comenzar
Instala Mainframe Connector en cualquier conjunto de datos particionado de la unidad central que quieras usar como biblioteca de procedimientos (PROCLIB).
Transfiere los datos transcodificados de forma local en la unidad central a Google Cloud
Para transcodificar datos de forma local en un mainframe y, luego, transferirlos a BigQuery, debes realizar las siguientes tareas:
- Lee y transcodifica un conjunto de datos en un mainframe, y súbelo a Cloud Storage en formato ORC (para otros formatos compatibles solo con
qsam commands
, consulta TranscodeFormat). La transcodificación se realiza durante las operacionesqsam decode
ogsutil cp
(según el comando que elijas), en las que un conjunto de datos de código de intercambio decimal codificado en binario extendido (EBCDIC) de mainframe se convierte al formato ORC en UTF-8 durante la copia a un bucket de Cloud Storage. - Carga el conjunto de datos en una tabla de BigQuery.
- (Opcional) Ejecuta una consulta en SQL en la tabla de BigQuery.
- (Opcional) Exporta datos de BigQuery a la computadora central.
En las siguientes secciones, se describe en detalle cómo puedes mover datos transcodificados de forma local en el mainframe a Google Cloud con los comandos qsam
y el comando gsutil cp
.
Transcodifica de forma local con comandos de qsam
Para transcodificar tus datos de unidad central de procesamiento de forma local en tu unidad central de procesamiento con comandos de qsam
, sigue estos pasos:
Crea un trabajo para leer el conjunto de datos en tu mainframe y transcodificarlo al formato ORC, como se muestra en el siguiente comando. Leer los datos del conjunto de datos INFILE y el diseño de registros del DD COPYBOOK El conjunto de datos de entrada debe ser un archivo de método de acceso secuencial en cola (QSAM) con una longitud de registro fija o variable.
Puedes modificar el comportamiento predeterminado del proceso de transcodificación del conector de Mainframe proporcionando un archivo de configuración del transcodificador con el argumento
--transcode-configuration
.//STEP01 EXEC BQSH //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS //STDIN DD * BUCKET=BUCKET_NAME qsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename /*
Reemplaza
BUCKET_NAME
por el nombre del bucket de Cloud Storage en el que deseas copiar los datos del mainframe.Para evitar especificar variables como IDs de proyectos y nombres de bucket en cada procedimiento del lenguaje de control de trabajos (JCL), puedes agregarlos en BQSH PROCLIB y hacer referencia a ellos en varios procedimientos de JCL como variables de entorno. Este enfoque también te ayuda a tener una transición fluida entre los entornos de producción y los que no son de producción, ya que las variables específicas del entorno se configuran en la PROCLIB de BQSH del entorno.
En este ejemplo, se usa
DD DataPath
para especificar la ruta de acceso del copybook, la entrada y la configuración de transcodificación. ConsultaDataPath
para ver otras opciones.Si quieres registrar los comandos que se ejecutan durante este proceso, puedes habilitar las estadísticas de carga.
Crea y envía un trabajo de carga de BigQuery que cargue particiones de archivos ORC desde
tablename.orc
enMY_DATASET.MY_TABLE
, de la siguiente manera.Example JCL //STEP02 EXEC BQSH //STDIN DD * BUCKET=BUCKET_NAME PROJECT=PROJECT_NAME bq load --project_id=$PROJECT \ myproject:MY_DATASET.MY_TABLE \ gs://$BUCKET/tablename.orc/* /*
Reemplaza lo siguiente:
BUCKET_NAME
: Es el nombre del bucket de Cloud Storage que contiene los archivos ORC que deseas cargar en BigQuery.PROJECT_NAME
: Es el nombre del proyecto en el que deseas ejecutar la consulta.
(Opcional) Crea y envía un trabajo de consulta de BigQuery que ejecute una lectura de SQL desde el archivo DD de QUERY. Por lo general, la consulta será una instrucción
MERGE
oSELECT INTO DML
que genere la transformación de una tabla de BigQuery. Ten en cuenta que Mainframe Connector registra los datos en las métricas de trabajo, pero no escribe los resultados de la consulta en un archivo.Puedes consultar BigQuery de varias maneras: de forma intercalada, con un conjunto de datos independiente usando DD o con un conjunto de datos independiente usando DSN.
Example JCL //STEP03 EXEC BQSH //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME LOCATION=LOCATION bq query --project_id=$PROJECT \ --location=$LOCATION/* /*
Reemplaza lo siguiente:
PROJECT_NAME
: Es el nombre del proyecto en el que deseas ejecutar la consulta.LOCATION
: Es la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
(Opcional) Crea y envía un trabajo de exportación que ejecute una lectura de SQL desde el archivo DD de QUERY y exporte el conjunto de datos resultante a un mainframe como un archivo binario.
Puedes modificar el comportamiento predeterminado del proceso de transcodificación del conector de Mainframe proporcionando un archivo de configuración del transcodificador con el argumento
--transcode-configuration
.//STEP04 EXEC BQSH //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME qsam encode \ dd:QUERY dd:OUTFILE --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG --input-format=BIGQUERY \ --input-parameter project_id=PROJECT_NAME \ --input-parameter location=LOCATION/* /*
Reemplaza lo siguiente:
PROJECT_NAME
: Es el nombre del proyecto en el que deseas ejecutar la consulta.LOCATION
: Es la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
Los datos se exportan al conjunto de datos OUTFILE DD. El diseño del registro se describe en el COPYBOOK DD. Para conocer otras opciones de rutas de configuración de copybook, outfile y transcodificación, consulta
DataPath
.
Transcodifica de forma local con el comando gsutil cp
Para transcodificar tus datos de unidad central de forma local en tu unidad central con el comando gsutil cp
, sigue estos pasos:
Crea un trabajo para leer el conjunto de datos en tu mainframe y transcodificarlo al formato ORC, como se muestra en el siguiente comando. Leer los datos del conjunto de datos INFILE y el diseño de registros del DD COPYBOOK El conjunto de datos de entrada debe ser un archivo de método de acceso secuencial en cola (QSAM) con una longitud de registro fija o variable.
//STEP01 EXEC BQSH //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME //STDIN DD * BUCKET=BUCKET_NAME gsutil cp --replace gs://$BUCKET/tablename.orc /*
Reemplaza
BUCKET_NAME
por el nombre del bucket de Cloud Storage en el que deseas copiar los datos del mainframe.Para evitar especificar variables como los IDs de proyectos y los nombres de bucket en cada procedimiento de JCL, puedes agregarlos a BQSH PROCLIB y hacer referencia a ellos en varios procedimientos de JCL como variables de entorno. Este enfoque también te ayuda a tener una transición fluida entre los entornos de producción y los que no son de producción, ya que las variables específicas del entorno se establecen en la PROCLIB de BQSH del entorno. Para obtener la lista completa de las variables de entorno compatibles con Mainframe Connector, consulta Variables de entorno.
En este ejemplo, la entrada estándar (STDIN) se proporciona como datos en el flujo al DD de STDIN. Como alternativa, puedes proporcionar esta entrada con un nombre de fuente de datos (DSN), lo que facilita la administración de la sustitución de símbolos.
Si quieres registrar los comandos que se ejecutan durante este proceso, puedes habilitar las estadísticas de carga.
Crea y envía un trabajo de carga de BigQuery que cargue particiones de archivos ORC desde
tablename.orc
enMY_DATASET.MY_TABLE
, de la siguiente manera.Example JCL //STEP02 EXEC BQSH //STDIN DD * BUCKET=BUCKET_NAME PROJECT=PROJECT_NAME bq load --project_id=$PROJECT \ myproject:MY_DATASET.MY_TABLE \ gs://$BUCKET/tablename.orc/* /*
Reemplaza lo siguiente:
BUCKET_NAME
: Es el nombre del bucket de Cloud Storage que contiene los archivos ORC que deseas cargar en BigQuery.PROJECT_NAME
: Es el nombre del proyecto en el que deseas ejecutar la consulta.
(Opcional) Crea y envía un trabajo de consulta de BigQuery que ejecute una lectura de SQL desde el archivo DD de QUERY. Por lo general, la consulta será una instrucción
MERGE
oSELECT INTO DML
que genere la transformación de una tabla de BigQuery. Ten en cuenta que Mainframe Connector registra los datos en las métricas de trabajo, pero no escribe los resultados de la consulta en un archivo.Puedes consultar BigQuery de varias maneras: de forma intercalada, con un conjunto de datos independiente usando DD o con un conjunto de datos independiente usando DSN.
Example JCL //STEP03 EXEC BQSH //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME LOCATION=LOCATION bq query --project_id=$PROJECT \ --location=$LOCATION/* /*
Reemplaza lo siguiente:
PROJECT_NAME
: Es el nombre del proyecto en el que deseas ejecutar la consulta.LOCATION
: Es la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
(Opcional) Crea y envía un trabajo de exportación que ejecute una lectura de SQL desde el archivo DD de QUERY y exporte el conjunto de datos resultante a un mainframe como un archivo binario.
Example JCL //STEP04 EXEC BQSH //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME DATASET_ID=DATASET_ID DESTINATION_TABLE=DESTINATION_TABLE bq export --project_id=$PROJECT \ --dataset_id=$DATASET_ID \ --destination_table=$DESTINATION_TABLE \ --location="US" \ --remoteHost <mainframe-connector-url>.a.run.app \ --remotePort 443 /*
Reemplaza lo siguiente:
PROJECT_NAME
: Es el nombre del proyecto en el que deseas ejecutar la consulta.DATASET_ID
: Es el ID del conjunto de datos de BigQuery que contiene la tabla que deseas exportar.DESTINATION_TABLE
: Es la tabla de BigQuery que deseas exportar.
Los datos se exportan al conjunto de datos OUTFILE DD. El diseño del registro se describe en el COPYBOOK DD.