Salut à tous,
J'essaie de créer un script JSL qui extrait les données d'une base de données, puis crée divers graphiques et effectue une analyse avec cet ensemble de données. Jusqu'à présent, j'ai pu utiliser le générateur de requêtes de base de données pour obtenir les données dont j'ai besoin, mais je ne peux pas utiliser le même script pour faire les tracés dont j'ai besoin. Étant nouveau dans la création de scripts en JSL, cela semble être une tâche vraiment ardue. Vous trouverez ci-dessous le script avec lequel j'ai pu obtenir des données de 2 bases de données et les fusionner. Cependant, je souhaite enregistrer cette table de données, puis créer des graphiques. Si j'essaye d'ajouter une référence Obj avant la requête, cela ne renvoie aucune donnée. Aucune suggestion?
Meilleur,
Debraj
Nouvelle requête SQL (
Version( 130 ),
Lien(
"ODBC: DSN = Paramétrique 32; Description = Paramétrique 32; UID = GUEST; PWD =; APP = JMP; WSID = DEBRAJG-W10LT;"
),
QueryName ( «LSO-THK» ),
Sélectionner(
Colonne ( "TRANCHE" , "t1" ),
Colonne ( «DATE_TIME» , "t1" , Format numérique ( "m / j / yh: m: s" , "0" , "NON" , "" )),
Colonne ( "LOT" , "t1" ),
Colonne ( "TESTEUR" , "t1" ),
Colonne ( "RECEIPE" , "t1" ),
Colonne ( "THICKNESS_1" , "t1" ),
Colonne ( "EPAISSEUR_2" , "t1" ),
Colonne ( "EPAISSEUR_3" , "t1" ),
Colonne ( "THICKNESS_4" , "t1" ),
Colonne ( "THICKNESS_5" , "t1" ),
Colonne ( "EPAISSEUR_6" , "t1" ),
Colonne ( "EPAISSEUR_7" , "t1" ),
Colonne ( "EPAISSEUR_8" , "t1" ),
Colonne ( "EPAISSEUR_9" , "t1" ),
Colonne ( "THICKNESS_AVG" , "t1" ),
Colonne ( "THICKNESS_STD" , "t1" ),
Colonne ( "THICKNESS_MIN" , "t1" ),
Colonne ( "THICKNESS_MAX" , "t1" ),
Colonne ( "THICKNESS_RANGE" , "t1" ),
Colonne ( "OPÉRATION" , "t2" ),
Colonne ( "WIP_MSG_KEY" , "t2" ),
Colonne ( "WIP_MSG_LEVEL3" , "t2" ),
Colonne ( "WIP_MSG_LEVEL2" , "t2" ),
Colonne ( "WIP_MSG_LEVEL1" , "t2" )
),
De(
Table( «WFLSOTHK» , Schéma ( "dbo" ), Alias ( "t1" )),
Table(
"FT_WF_HIST" ,
Alias( "t3" ),
Joindre(
Type (Extérieur gauche),
EQ (
Colonne (
«DATE_TIME» ,
"t1" ,
Format numérique ( "m / j / yh: m: s" , "0" , "NON" , "" )
),
Colonne (
«DATE_TIME» ,
"t3" ,
Format numérique ( "m / j / yh: m: s" , "0" , "NON" , "" )
)
) Et égaliseur ( Colonne ( "LOT" , "t1" ), Colonne ( "LOT" , "t3" ))
)
),
Table(
"WF_MESA_WIP_MSG_HIST" ,
Alias( "t2" ),
Joindre(
Type (Extérieur gauche),
EQ ( Colonne ( "TRANCHE" , "t1" ), Colonne ( "TRANCHE" , "t2" )) Et
EQ ( Colonne ( "LOT" , "t1" ), Colonne ( "LOT" , "t2" ))
)
)
),
Où(
Dans la liste(
Colonne ( "OPÉRATION" , "t2" ),
{ "O0TS" },
UI (SelectListFilter (ListBox, Base ( "Catégorique" )))
)
)
) >> Courir
Je n'ai pas de base de données pour tester cela, mais je pense que cette méthodologie devrait fonctionner.
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(.............);Merci beaucoup Jim. Cela a fonctionné. Je crois que je manquais le point-virgule après >> run au départ, c'est pourquoi il ne s'est pas comporté comme je m'y attendais.
Cependant, le script a sauvegardé et ils ont produit les intrigues que j'ai placées la première fois. Ensuite, lorsque je supprime le fichier .csv et que je le relance, il n'a pas enregistré à nouveau le fichier et tracé les courbes. Il se comporte par intermittence. Il enregistre le fichier puis trace les courbes plusieurs fois, tandis que dans la plupart des autres cas, il s'arrête juste après avoir extrait les données de la base de données. Y a-t-il une astuce à ce que je manque ou un paramètre qui doit être changé? Vous trouverez ci-dessous la partie du code que j'ai ajoutée à la requête de base de données SQL et qui fonctionne par intermittence.
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 )}
)