En esta página, se explica cómo puedes transcodificar datos de la unidad central de forma local en la unidad central 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 la unidad central a un formato de columna de fila optimizado (ORC) y, luego, guardar los datos en Cloud Storage.
Mainframe Connector proporciona tres formas en las que puedes transcodificar datos de la unidad central de forma local en la unidad central.
- Usa los comandos
qsam(versión 5.16.0 y posteriores). - Usa el comando
vsam decode(versión 5.18.0 y posteriores). - Usa el comando
gsutil cp.
Ventajas de los comandos qsam y vsam
Los comandos qsam y vsam proporcionan las siguientes ventajas:
- Compatibilidad con tipos de datos compuestos, incluida la cláusula OCCURS (listas), la cláusula REDEFINES y los registros anidados. Para obtener más información sobre estos tipos de datos, consulta la referencia de transcodificación
qsamyvsam. - Compatibilidad con 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 a Google Cloud, y se vuelven a codificar en la unidad central.
- Compatibilidad con 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.
- Compatibilidad con varios formatos de entrada y salida. Esta capacidad te permite cargar tus datos desde varios almacenes de datos y hacia 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).
Mueve los datos transcodificados de forma local en la unidad central a Google Cloud
Para transcodificar datos de forma local en una unidad central y, luego, moverlos a BigQuery, debes realizar las siguientes tareas:
- Lee y transcodifica un conjunto de datos en una unidad central y súbelo a Cloud Storage
en formato ORC (para otros formatos compatibles solo con los
qsamovsamcomandos, consulta TranscodeFormat). La transcodificación se realiza durante las operacionesqsam decode,vsam decodeogsutil 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 la unidad central 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.
- Ejecuta una consulta en SQL en la tabla de BigQuery (opcional).
- Exporta datos de BigQuery a la unidad central (opcional).
En las siguientes secciones, se describe en detalle cómo puedes mover los datos transcodificados
de forma local en la unidad central a Google Cloud usando
qsam o vsam comandos y el
gsutil cp comando.
Transcodifica de forma local con los comandos qsam y vsam
Para transcodificar los datos de la unidad central de forma local en la unidad central con los comandos qsam o vsam, sigue estos pasos:
Crea un trabajo para leer el conjunto de datos en la unidad central y transcodificarlo al formato ORC, como se muestra en el siguiente comando. Lee los datos del conjunto de datos INFILE y el diseño de registro del COPYBOOK DD.
Puedes modificar el comportamiento predeterminado del proceso de transcodificación de Mainframe Connector si proporcionas un archivo de configuración del transcodificador con el argumento
--transcode-configuration.Si tu conjunto de datos de entrada es un archivo del método de acceso secuencial en cola (QSAM) con una longitud de registro fija o variable, usa el siguiente comando:
//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 /*Si tu conjunto de datos de entrada es un archivo del método de acceso de almacenamiento virtual (VSAM) con una longitud de registro fija o variable, usa el siguiente comando:
//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 vsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename /*
Reemplaza
BUCKET_NAMEpor el nombre del bucket de Cloud Storage en el que deseas copiar los datos de la unidad central.Para evitar especificar variables como IDs de proyectos y nombres de bucket en cada procedimiento del lenguaje de control de trabajos (JCL), puedes agregarlas en el BQSH PROCLIB y hacer referencia a ellas en varios procedimientos de JCL como variables de entorno. Este enfoque también te ayuda a realizar una transición sin problemas entre los entornos de producción y que no son de producción, ya que las variables específicas del entorno se establecen en el BQSH PROCLIB del entorno.
En este ejemplo, se usa
DD DataPathpara especificar la ruta de acceso del copybook, la entrada y la configuración de transcodificación. ConsultaDataPathpara ver otras opciones.Si deseas registrar los comandos ejecutados 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 de
tablename.orcenMY_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: el nombre del bucket de Cloud Storage que contiene los archivos ORC que deseas cargar en BigQuery.PROJECT_NAME: el nombre del proyecto en el que deseas ejecutar la consulta.
Crea y envía un trabajo de consulta de BigQuery que ejecute una lectura de SQL desde el archivo QUERY DD (opcional). Por lo general, la consulta será una instrucción
MERGEoSELECT INTO DMLque dará como resultado la transformación de una tabla de BigQuery. Ten en cuenta que Mainframe Connector registra las métricas de los trabajos, pero no escribe los resultados de las consultas en un archivo.Puedes consultar BigQuery de varias maneras: intercalada, con un conjunto de datos independiente con DD o con un conjunto de datos independiente con 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: el nombre del proyecto en el que deseas ejecutar la consulta.LOCATION: la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
Crea y envía un trabajo de exportación que ejecute una lectura de SQL desde el archivo QUERY DD y exporte el conjunto de datos resultante a una unidad central como un archivo binario (opcional).
Puedes modificar el comportamiento predeterminado del proceso de transcodificación de Mainframe Connector si proporcionas 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: el nombre del proyecto en el que deseas ejecutar la consulta.LOCATION: 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 de registro se describe en el COPYBOOK DD. Para ver otras opciones de copybook, archivo de salida y rutas de acceso de configuración de transcodificación, consulta
DataPath.
Transcodifica de forma local con el comando gsutil cp
Para transcodificar los datos de la unidad central de forma local en la unidad central con el comando gsutil cp, sigue estos pasos:
Crea un trabajo para leer el conjunto de datos en la unidad central y transcodificarlo al formato ORC, como se muestra en el siguiente comando. Lee los datos del conjunto de datos INFILE y el diseño de registro del COPYBOOK DD.
El conjunto de datos de entrada debe ser un archivo del 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_NAMEpor el nombre del bucket de Cloud Storage en el que deseas copiar los datos de la unidad central.Para evitar especificar variables como IDs de proyectos y nombres de bucket en cada procedimiento de JCL, puedes agregarlas en el BQSH PROCLIB y hacer referencia a ellas en varios procedimientos de JCL como variables de entorno. Este enfoque también te ayuda a realizar una transición sin problemas entre los entornos de producción y que no son de producción, ya que las variables específicas del entorno se establecen en el BQSH PROCLIB 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 intercalados al STDIN DD. 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 deseas registrar los comandos ejecutados 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 de
tablename.orcenMY_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: el nombre del bucket de Cloud Storage que contiene los archivos ORC que deseas cargar en BigQuery.PROJECT_NAME: el nombre del proyecto en el que deseas ejecutar la consulta.
Crea y envía un trabajo de consulta de BigQuery que ejecute una lectura de SQL desde el archivo QUERY DD (opcional). Por lo general, la consulta será una instrucción
MERGEoSELECT INTO DMLque dará como resultado la transformación de una tabla de BigQuery. Ten en cuenta que Mainframe Connector registra las métricas de los trabajos, pero no escribe los resultados de las consultas en un archivo.Puedes consultar BigQuery de varias maneras: intercalada, con un conjunto de datos independiente con DD o con un conjunto de datos independiente con 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: el nombre del proyecto en el que deseas ejecutar la consulta.LOCATION: la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
Crea y envía un trabajo de exportación que ejecute una lectura de SQL desde el archivo QUERY DD y exporte el conjunto de datos resultante a una unidad central como un archivo binario (opcional).
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: el nombre del proyecto en el que deseas ejecutar la consulta.DATASET_ID: el ID del conjunto de datos de BigQuery que contiene la tabla que deseas exportar.DESTINATION_TABLE: la tabla de BigQuery que deseas exportar.
Los datos se exportan al conjunto de datos OUTFILE DD. El diseño de registro se describe en el COPYBOOK DD.