안녕하세요,
데이터베이스에서 데이터를 가져온 다음 다양한 플롯을 만들고 해당 데이터 세트로 일부 분석을 수행하는 JSL 스크립트를 만들려고합니다. 지금까지 데이터베이스 쿼리 빌더를 사용하여 필요한 데이터를 얻을 수 있었지만 동일한 스크립트를 사용하여 필요한 플롯을 수행 할 수 없습니다. JSL에서 스크립팅을 처음 접하는 것은 정말 어려운 작업 인 것 같습니다. 아래는 2 개의 데이터베이스에서 데이터를 가져 와서 병합 할 수있는 스크립트입니다. 그러나이 데이터 테이블을 저장 한 다음 플롯을 만들고 싶습니다. 쿼리 앞에 Obj 참조를 추가하려고하면 데이터가 반환되지 않습니다. 어떤 제안?
베스트,
Debraj
새 SQL 쿼리 (
버전( 130 ),
연결(
"ODBC : DSN = 파라 메트릭 32; Description = 파라 메트릭 32; UID = GUEST; PWD =; APP = JMP; WSID = DEBRAJG-W10LT;"
),
QueryName ( "LSO-THK" ),
고르다(
기둥 ( "웨이퍼" , "t1" ),
기둥 ( "날짜 시간" , "t1" , 숫자 형식 ( "m / d / yh : m : s" , "0" , "아니" , "" )),
기둥 ( "제비" , "t1" ),
기둥 ( "시험 장치" , "t1" ),
기둥 ( "영수증" , "t1" ),
기둥 ( "THICKNESS_1" , "t1" ),
기둥 ( "THICKNESS_2" , "t1" ),
기둥 ( "THICKNESS_3" , "t1" ),
기둥 ( "THICKNESS_4" , "t1" ),
기둥 ( "THICKNESS_5" , "t1" ),
기둥 ( "THICKNESS_6" , "t1" ),
기둥 ( "THICKNESS_7" , "t1" ),
기둥 ( "THICKNESS_8" , "t1" ),
기둥 ( "THICKNESS_9" , "t1" ),
기둥 ( "THICKNESS_AVG" , "t1" ),
기둥 ( "THICKNESS_STD" , "t1" ),
기둥 ( "THICKNESS_MIN" , "t1" ),
기둥 ( "THICKNESS_MAX" , "t1" ),
기둥 ( "THICKNESS_RANGE" , "t1" ),
기둥 ( "조작" , "t2" ),
기둥 ( "WIP_MSG_KEY" , "t2" ),
기둥 ( "WIP_MSG_LEVEL3" , "t2" ),
기둥 ( "WIP_MSG_LEVEL2" , "t2" ),
기둥 ( "WIP_MSG_LEVEL1" , "t2" )
),
에서(
표( "WFLSOTHK" , 스키마 ( "dbo" ), 별칭 ( "t1" )),
표(
"FT_WF_HIST" ,
별명( "t3" ),
붙다(
유형 (왼쪽 바깥 쪽),
EQ (
기둥 (
"날짜 시간" ,
"t1" ,
숫자 형식 ( "m / d / yh : m : s" , "0" , "아니" , "" )
),
기둥 (
"날짜 시간" ,
"t3" ,
숫자 형식 ( "m / d / yh : m : s" , "0" , "아니" , "" )
)
) 및 EQ ( 기둥 ( "제비" , "t1" ), 기둥 ( "제비" , "t3" ))
)
),
표(
"WF_MESA_WIP_MSG_HIST" ,
별명( "t2" ),
붙다(
유형 (왼쪽 바깥 쪽),
EQ ( 기둥 ( "웨이퍼" , "t1" ), 기둥 ( "웨이퍼" , "t2" )) &
EQ ( 기둥 ( "제비" , "t1" ), 기둥 ( "제비" , "t2" ))
)
)
),
어디(
목록 (
기둥 ( "조작" , "t2" ),
{ "O0TS" },
UI (SelectListFilter (ListBox, Base ( "범주" )))
)
)
) >> 실행
이를 테스트 할 데이터베이스가 없지만이 방법론이 작동해야한다고 생각합니다.
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(.............);고마워요 짐. 작동했습니다. 나는 처음에 >> run 후에 세미콜론을 놓치고 있다고 믿습니다. 이것이 내가 기대했던 방식으로 작동하지 않는 이유입니다.
그러나 스크립트는 저장하고 내가 처음 넣은 플롯을 생성했습니다. 그런 다음 .csv 파일을 삭제하고 다시 실행하면 파일이 다시 저장되지 않고 곡선이 그려집니다. 간헐적으로 작동합니다. 파일을 저장 한 다음 곡선을 몇 번 플로팅하지만 다른 대부분의 경우 데이터베이스에서 데이터를 가져온 후 중지됩니다. 내가 놓친 트릭이나 변경해야 할 매개 변수가 있습니까? 아래는 SQL 데이터베이스 쿼리에 추가하고 간헐적으로 작동하는 코드의 일부입니다.
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 )}
)