Please enable JavaScript.
Coggle requires JavaScript to display documents.
PREPARACIÓN - Coggle Diagram
PREPARACIÓN
Creamos file format
CREATE FILE FORMAT IF NOT EXISTS csv_no_delim
TYPE = 'CSV'
SKIP_HEADER = 0
FIELD_DELIMITER = None
FIELD_OPTIONALLY_ENCLOSED_BY = '"';
Creamos tabla de entidades válidas [CALENDARIO, PRODUCTO, TIENDA, VENTA]
Creamos la tabla de logs 'file_sharing_logs'
[COD_ASOCIADO, NUM_SECUENCIA, ID_LOG, DES_NOMBRE_FICHERO, DES_ENTIDAD, TS_INICIO_EXTRACCION, COD_METODO_EXTRACCION, FEC_NEGOCIO, TS_FIN_EXTRACCION, NUM_REGISTROS, CHK_SHARE_TRATADO, TS_SHARE_TRATADO, CHK_SHARE_COMPARTIDO, DES_SHARE_ERRORES}
Insertamos en 'file_sharing_logs' los nombres de los ficheros pendientes que cumplan el formato
Es decir, insertamos nombres de archivos que no hayan sido ya insertados
Y nos aseguramos que cumplan con el formato:
^[0-9]{5}
[A-Za-z0-9]{5,10}
[0-9]{8}_[0-9]{6}.*$'
SHARE
Creamos el share y otorgamos permisos
Creamos y compartimos tablas de share
[shared_producto, shared_calendario, shared_tienda, shared_venta] a demás de 'file_sharing_logs'
INFORMAMOS
HEADER Y FOOTER
Iteramos entre los registros de 'file_sharing_logs' no tratados
CURSOR FOR SELECT * FROM file_sharing_logs
WHERE CHK_SHARE_TRATADO = FALSE;
Para cada iteración creamos la tabla 'temp_raw_variant'
Contiene el fichero en cuestión (al completo)
Con ella informamos del header y footer en 'file_sharing_logs'
Al informar estandarizamos el campo entidad
VALIDACIÓN Y CARGA
DE FICHEROS
Validamos nomenclatura
Código asociado correcto
Entidad de datos válida
Timestamp válido
Para cada iteración creamos la tabla 'temp_variant'
Contiene el fichero en cuestión (sin header ni footer)
Validamos que nº de rows footer sea igual
al nº rows en 'temp_variant'
Validamos que el nº columnas de cada línea
sean las esperadas
Iteramos entre los registros de 'file_sharing_logs' no tratados
Ordenados por fecha de negocio
CURSOR FOR SELECT * FROM file_sharing_logs
WHERE CHK_SHARE_TRATADO = FALSE
ORDER BY DES_ENTIDAD ASC,
FEC_NEGOCIO ASC,
TS_FIN_EXTRACCION ASC;
Si salta alguna validación, el registro se marca como tratado y no compartido y saltamos a la siguiente iteración, sin terminar el proceso
Añadimos la info de 'temp
variant' (para la iteración en cuestión) a la tabla a compartir (shared
{entity})
Informamos en 'file_sharing_logs' que el archivo ha sido tratado y compartido:
CHK_SHARE_TRATADO = TRUE,
CHK_SHARE_COMPARTIDO = TRUE