Artículo
Muhammad Waseem · Mar 29 Lectura de 5 min

12 conjuntos de datos médicos junto con 43 tablas creadas de forma dinámica usando la nueva funcionalidad LOAD DATA SQL

 

He desarrollado una aplicación para importar de forma dinámica 12 conjuntos de datos junto con 43 tablas usando el comando LOAD DATA, que carga los datos de una fuente a una tabla SQL de IRIS. 

Lista de los conjuntos de datos

Características

  • Creación dinámica de tablas basadas en los datos de un archivo CSV.
  • Importación del conjunto de datos mediante la función LOAD DATA por medio de Terminal o de la aplicación web.
  • Eliminación del conjunto de datos de forma programada mediante Terminal o la aplicación web.
  • Consulta de forma dinámica de los datos importados desde la aplicación web.
  • Funcionalidad para importar datos en formato CSV, Excel o PDF.
  • Aplicación web para consultar el estado del conjunto de datos.
  • Alguno o todos los conjuntos de datos se pueden instalar o eliminar mediante un solo comando.
  • Uso de las tablas %SQL_Diag.Result y %SQL_Diag.Message con LOAD DATA

Se recomienda leer la documentación relacionada LOAD DATA (SQL).

 

Cómo instalar o eliminar cualquier conjunto de datos desde Terminal

Utiliza el siguiente comando para importar un conjunto de datos en particular al introducir su ID o utiliza 999 para importar todos los conjuntos de datos

do ##class(dc.data.medical.utility).ImportDS(1)

A continuación se muestra el script principal para crear la tabla de forma dinámica y cargar los datos mediante la función LOAD DATA. Ten en cuenta que la tabla se crea de forma dinámica 

//Get file name 
SET filename=tRS.Get("Name")
//Remove .csv from the file name
SET tableName=$REPLACE("dc_data_"_ds_"."_tRS.Get("ItemName"),".csv","") 
//Get columns based on the header row of csv file
Do ##class(dc.data.medical.utility).GetColTypes(filename,.coltype) 
//Dynamically create table based on tablename and column types
SET qry = "CREATE TABLE "_tableName_" ("_coltype_")"
SET rset = ##class(%SQL.Statement).%ExecDirect(,qry)
//Check if table created successfully
IF rset.%SQLCODE
{
   WRITE "ERROR : ",rset.%Message,!    
}
ELSE
{
  //Dynamically construct LOAD DATA statement
  SET qry = "LOAD DATA FROM FILE  '"_filename_"' INTO "_tableName_ " "_"USING {""from"":{""file"":{""header"":""1""}}}"
  SET rset = ##class(%SQL.Statement).%ExecDirect(,qry)
  // Check result set sqlcode, In case of error write resultset message
  IF rset.%SQLCODE
  {
   WRITE "ERROR Table : " _tableName_" IMPORT FAILED: ",rset.%Message,!
  }
  ELSE
  {
  WRITE "SUCCESS table : " _tableName_" created and "_rset.%ROWCOUNT_" Rows Imported Successfully",!
  }
}

Utiliza el siguiente comando para eliminar un conjunto de datos en particular al introducir su ID o utiliza 999 para eliminar todos los conjuntos de datos
 

do ##class(dc.data.medical.utility).RemoveDS(1)

 

A continuación se muestra el script principal para eliminar la tabla de forma dinámica

//Get file name
SET filename=tRS.Get("Name")
//Remove .csv from file name
SET tableName=$REPLACE("dc_data_"_ds_"."_tRS.Get("ItemName"),".csv","")
//Drop table
SET qry = "DROP TABLE "_tableName
SET rset = ##class(%SQL.Statement).%ExecDirect(,qry)
//Check if table deleted successfully
IF rset.%SQLCODE
{
  WRITE "ERROR : ",rset.%Message,!          
}
ELSE
{
  WRITE "Table "_tableName_" deleted successfully",!
}

 

Cómo instalar o eliminar cualquier conjunto de datos desde una aplicación web

Ve al panel de control de la aplicación: http://localhost:52773/csp/datasets/index.csp  

Si el conjunto de datos no está instalado, el botón "Install DataSet" estará visible y si el conjunto de datos está instalado, el botón "Remove Dataset" estará visible.

Solo hay que hacer clic en el botón adecuado para instalar o eliminar cualquier conjunto de datos

 

Cómo visualizar y exportar datos desde Dataset

Ve a la página View Datasets http://localhost:52773/csp/datasets/datasets.csp

Selecciona un conjunto de datos específico y después una tabla de la lista. Haz clic en el botón Excel, CSV o PDF para exportar los datos.

 

Espero que os resulte útil.

0
0 36
Debate (0)2
Inicie sesión o regístrese para continuar