Closed sebasrod closed 5 years ago
Para implementar esta funcionalidad, se crea un nuevo método para traspaso de DataFrame desde RAW (DF_from_RAW) y se agrega un parámetro obligatorio en método DF_from_DF.
val DF_RAW_final = new raw_DatosOldValue(huemulLib, Control)
if (!DF_RAW_final.open("DF_RAW_final", Control, Ano.toInt, Mes.toInt, 1, 0, 0, 0,"fin")) {
Control.RaiseError(s"Error al intentar abrir archivo de datos fin: ${DF_RAW.Error.ControlError_Message}")
}
TablaMaster.DF_from_RAW(DF_RAW, "DF_Original")
2. DF_from_DF(DFFrom: DataFrame, **AliasFrom: String**, AliasTo: String): Modificación de método. Permite asignar un DataFrame externo al objeto huemul_Table. En esta versión, se agrega el parámetro "**AliasFrom: String**", el cual enlaza el Alias de SQL anterior con el nuevo Alias SQL, de esta forma se crea el linaje de datos.
```scala
val DF_RAW_final = new raw_DatosOldValue(huemulLib, Control)
if (!DF_RAW_final.open("DF_RAW_final", Control, Ano.toInt, Mes.toInt, 1, 0, 0, 0,"fin")) {
Control.RaiseError(s"Error al intentar abrir archivo de datos fin: ${DF_RAW.Error.ControlError_Message}")
}
TablaMaster.DF_from_DF(DF_RAW.DataFramehuemul.DataFrame, "DF_RAW_final", "DF_Original")
Para registrar el linaje de datos a nivel de campos, se han agregado 3 tablas al modelo:
- control_query: Registra las querys ejecutadas en el proceso - control_querycolumn: Registra las columnas devueltas en cada query - control_querycolumnori: Registra el origen de datos para la creación de cada columna, enlazando con otra query, un archivo RAW o una tabla.
\i huemul_bdg_upgrade_1.4_to_2.0.sql
La sección del script que aplica este cambio contiene lo siguiente:
create table control_query (query_id varchar(50)
,processexecstep_id varchar(50)
,processexec_id varchar(50)
,rawfiles_id varchar(50)
,rawfilesdet_id varchar(50)
,table_id varchar(50)
,query_alias varchar(200)
,query_sql_from varchar(4000)
,query_sql_where varchar(4000)
,query_numerrors int
,query_autoinc int
,query_israw int
,query_isfinaltable int
,query_isquery int
,query_isreferenced int
,query_numrows_real int
,query_numrows_expected int
,query_duration_hour int
,query_duration_min int
,query_duration_sec int
,error_id varchar(50)
,mdm_fhcreate varchar(30)
,mdm_processname varchar(200)
,primary key (query_id)
);
create table control_querycolumn (querycol_id varchar(50)
,query_id varchar(50)
,rawfilesdet_id varchar(50)
,column_id varchar(50)
,querycol_pos int
,querycol_name varchar(200)
,querycol_sql varchar(4000)
,querycol_posstart int
,querycol_posend int
,querycol_line int
,mdm_fhcreate varchar(30)
,mdm_processname varchar(200)
,primary key (querycol_id)
);
create index idx_control_querycolumn_i01 on control_querycolumn (query_id, querycol_name)
create table control_querycolumnori (querycolori_id varchar(50)
,querycol_id varchar(50)
,table_idori varchar(50)
,column_idori varchar(50)
,rawfilesdet_idori varchar(50)
,rawfilesdetfields_idori varchar(50)
,query_idori varchar(50)
,querycol_idori varchar(50)
,querycolori_dbname varchar(200)
,querycolori_tabname varchar(200)
,querycolori_tabalias varchar(200)
,querycolori_colname varchar(200)
,querycolori_isselect int
,querycolori_iswhere int
,querycolori_ishaving int
,querycolori_isorder int
,mdm_fhcreate varchar(30)
,mdm_processname varchar(200)
,primary key (querycolori_id)
);
Para obtener el linaje de datos, se utiliza la librería huemul-sql-decode, el cual se debe incluir en el proyecto
Implementar trazabilidad a nivel de campos, identificando cada query que se ejecuta dentro de un proceso, y mapeando con los campos de la query anterior