Hola a todos,
Estoy tratando de crear un script JSL que extrae datos de una base de datos, luego crea varios gráficos y realiza algunos análisis con ese conjunto de datos. Hasta ahora, he podido usar el generador de consultas de la base de datos para obtener los datos que necesito, pero no puedo usar el mismo script para hacer los gráficos que necesito. Siendo nuevo en la creación de scripts en JSL, esta parece ser una tarea realmente abrumadora. A continuación se muestra el script con el que he podido obtener datos de 2 bases de datos y fusionarlas. Sin embargo, quiero guardar esta tabla de datos y luego crear gráficos. Si intento agregar una referencia de Obj antes de la consulta, no devuelve ningún dato. ¿Alguna sugerencia?
Mejor,
Debraj
Nueva consulta SQL (
Versión( 130 ),
Conexión(
"ODBC: DSN = Paramétrico 32; Descripción = Paramétrico 32; UID = INVITADO; PWD =; APP = JMP; WSID = DEBRAJG-W10LT;"
),
QueryName ( "LSO-THK" ),
Seleccione(
Columna ( "OBLEA" , "t1" ),
Columna ( "FECHA Y HORA" , "t1" , Formato numérico ( "m / d / yh: m: s" , "0" , "NO" , "" )),
Columna ( "LOTE" , "t1" ),
Columna ( "ENSAYADOR" , "t1" ),
Columna ( "RECIBO" , "t1" ),
Columna ( "GROSOR_1" , "t1" ),
Columna ( "GROSOR_2" , "t1" ),
Columna ( "GROSOR_3" , "t1" ),
Columna ( "GROSOR_4" , "t1" ),
Columna ( "GROSOR_5" , "t1" ),
Columna ( "GROSOR_6" , "t1" ),
Columna ( "GROSOR_7" , "t1" ),
Columna ( "GROSOR_8" , "t1" ),
Columna ( "GROSOR_9" , "t1" ),
Columna ( "THICKNESS_AVG" , "t1" ),
Columna ( "GROSOR_STD" , "t1" ),
Columna ( "GROSOR_MIN" , "t1" ),
Columna ( "GROSOR_MAX" , "t1" ),
Columna ( "THICKNESS_RANGE" , "t1" ),
Columna ( "OPERACIÓN" , "t2" ),
Columna ( "WIP_MSG_KEY" , "t2" ),
Columna ( "WIP_MSG_LEVEL3" , "t2" ),
Columna ( "WIP_MSG_LEVEL2" , "t2" ),
Columna ( "WIP_MSG_LEVEL1" , "t2" )
),
De(
Mesa( "WFLSOTHK" , Esquema ( "dbo" ), Alias( "t1" )),
Mesa(
"FT_WF_HIST" ,
Alias( "t3" ),
Unirse(
Tipo (Exterior izquierdo),
EQ (
Columna (
"FECHA Y HORA" ,
"t1" ,
Formato numérico ( "m / d / yh: m: s" , "0" , "NO" , "" )
),
Columna (
"FECHA Y HORA" ,
"t3" ,
Formato numérico ( "m / d / yh: m: s" , "0" , "NO" , "" )
)
) Y EQ ( Columna ( "LOTE" , "t1" ), Columna ( "LOTE" , "t3" ))
)
),
Mesa(
"WF_MESA_WIP_MSG_HIST" ,
Alias( "t2" ),
Unirse(
Tipo (Exterior izquierdo),
EQ ( Columna ( "OBLEA" , "t1" ), Columna ( "OBLEA" , "t2" )) Y
EQ ( Columna ( "LOTE" , "t1" ), Columna ( "LOTE" , "t2" ))
)
)
),
Dónde(
En lista(
Columna ( "OPERACIÓN" , "t2" ),
{ "O0TS" },
UI (SelectListFilter (ListBox, Base ( "Categórico" )))
)
)
) >> Ejecutar
No tengo una base de datos para probar esto, pero creo que esta metodología debería funcionar.
Names default to here(1);
New SQL Query(
Version( 130 ),
Connection(
"ODBC:DSN=Parametric 32;Description=Parametric 32;UID=GUEST;PWD=;APP=JMP;WSID=DEBRAJG-W10LT;"
),
QueryName( "LSO-THK" ),
Select(
Column( "WAFER", "t1" ),
Column( "DATE_TIME", "t1", Numeric Format( "m/d/y h:m:s", "0", "NO", "" ) ),
Column( "LOT", "t1" ),
Column( "TESTER", "t1" ),
Column( "RECEIPE", "t1" ),
Column( "THICKNESS_1", "t1" ),
Column( "THICKNESS_2", "t1" ),
Column( "THICKNESS_3", "t1" ),
Column( "THICKNESS_4", "t1" ),
Column( "THICKNESS_5", "t1" ),
Column( "THICKNESS_6", "t1" ),
Column( "THICKNESS_7", "t1" ),
Column( "THICKNESS_8", "t1" ),
Column( "THICKNESS_9", "t1" ),
Column( "THICKNESS_AVG", "t1" ),
Column( "THICKNESS_STD", "t1" ),
Column( "THICKNESS_MIN", "t1" ),
Column( "THICKNESS_MAX", "t1" ),
Column( "THICKNESS_RANGE", "t1" ),
Column( "OPERATION", "t2" ),
Column( "WIP_MSG_KEY", "t2" ),
Column( "WIP_MSG_LEVEL3", "t2" ),
Column( "WIP_MSG_LEVEL2", "t2" ),
Column( "WIP_MSG_LEVEL1", "t2" )
),
From(
Table( "WFLSOTHK", Schema( "dbo" ), Alias( "t1" ) ),
Table(
"FT_WF_HIST",
Alias( "t3" ),
Join(
Type( Left Outer ),
EQ(
Column(
"DATE_TIME",
"t1",
Numeric Format( "m/d/y h:m:s", "0", "NO", "" )
),
Column(
"DATE_TIME",
"t3",
Numeric Format( "m/d/y h:m:s", "0", "NO", "" )
)
) & EQ( Column( "LOT", "t1" ), Column( "LOT", "t3" ) )
)
),
Table(
"WF_MESA_WIP_MSG_HIST",
Alias( "t2" ),
Join(
Type( Left Outer ),
EQ( Column( "WAFER", "t1" ), Column( "WAFER", "t2" ) ) &
EQ( Column( "LOT", "t1" ), Column( "LOT", "t2" ) )
)
)
),
Where(
In List(
Column( "OPERATION", "t2" ),
{"O0TS"},
UI( SelectListFilter( ListBox, Base( "Categorical" ) ) )
)
)
) >> Run;
dt = data table("WF_MESA_WIP_MSG_HIST");
dt << save("Path to save location");
dt << Graph Builder(.............);Muchas gracias Jim. Funcionó. Creo que me faltaba el punto y coma después de la ejecución >> inicialmente, por lo que no se comportó de la manera que esperaba.
Sin embargo, el guión se guardó y produjeron las tramas que puse en él la primera vez. Luego, cuando eliminé el archivo .csv y lo volví a ejecutar, no guardé el archivo nuevamente y trazaron las curvas. Se comporta de forma intermitente. Guarda el archivo y luego traza las curvas varias veces, mientras que en la mayoría de los otros casos, simplemente se detiene después de extraer los datos de la base de datos. ¿Hay algún truco para esto que me falta o algún parámetro que deba cambiarse? A continuación se muestra la parte del código que agregué a la consulta de la base de datos SQL y que funciona de forma intermitente.
dt = data table("WFLSOTHK");
dt << Save ("C:\path to directory\file_name.csv");
dt << Open ( "C:\path to directory\file_name.csv" );
dt << Fit Group(
Bivariate(
.
.
.
),
Bivariate(
.
.
.
),
<<{Arrange in Rows( 1 )}
)