조건이 충족된 후 JSL 명령을 실행하는 방법JMP 커뮤니티 사용자 여러분,
저는 JMP를 처음 접했고 문제에 직면했습니다. 바라건대, 나는 너희들로부터 도움을 얻을 수 있었다.
데이터 테이블이 있습니다. 특정 값의 열에 대해서만 그래프 빌더를 실행하고 싶습니다.
예를 들어 "monitor_set_name" 및 "measurement_set_name" 열에 속한 AB766 및 RSDF인 셀과 " AB766" 및 "RSDF"에 해당하는 다른 열 및 행을 선택하고 싶습니다.

그런 다음 필요한 정보가 포함된 테이블에 대해 " Graph builder "를 실행하고 싶습니다.
"monitor_set_name" 및 "measurement_set_name"에 "AB766" 및 "RSDF"가 포함되어 있지 않으면 건너뛰고 "graph builder" 실행
조언 좀 해주실 수 있나요?
감사합니다,
대량 맞춤화Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?친애하는 Mr. Brady,
지원해 주셔서 감사합니다. 나중에 스크립트에 귀하의 제안을 적용하겠습니다.
감사합니다,
Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?시도해 보겠습니다. 감사합니다.
그건 그렇고, 포럼에서 제안된 한 가지 방법을 찾았고 그것은 저에게 효과적입니다
CHECK_U2_CT_HDF = Contains(
df << get column names( string ),
"centerline@u2_holdforceduration_2"
);
If( CHECK_U2_CT_HDF == 0,
df << New Column( "centerline@u2_holdforceduration_2",
Numeric,
Continuous,
Format( "Best", 10 )
)
);
당신의 강한 지원을 주셔서 감사합니다!
Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?Try() 함수는 이를 처리하는 한 가지 방법입니다.
U1_UCL_HDF =Try( Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1],.);
if(isMissing(:U1_UCL_HDF),
add and populate the new column
);
U1_UCL_HDF는 열과 행이 존재하는 경우 유효한 값을 갖지만 시도가 실패하면 누락된 값을 반환합니다.따라서 흐름은 다음과 같을 수 있습니다.
Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?친애하는 txnelson님,
JMP는 참조 열을 찾을 수 없을 때 실행을 중지합니다 --> 맞습니다.
내 질문을 명확히하고 싶습니다. 회사의 시스템에서 데이터를 가져오려고 합니다. 제품 범주가 다르기 때문에 데이터 테이블이 달라집니다.
예를 들어:
제품 A: 열 포함: up_control_lmt@u1_holdforceduration_2 그리고 up_control_lmt@u2_holdforceduration_2
제품 B: 열만 포함: up_control_lmt@u1_holdforceduration_2
두 제품 모두에 적용할 수 있는 스크립트를 만들고 싶기 때문입니다.
귀하의 제안에 따라 제품 B의 데이터 테이블에 열이 포함되어 있지 않은 경우 제품 B에 대한 열을 하나 더 추가해야 합니다. up_control_lmt@u2_holdforceduration_2.
따라서 제품 B의 데이터 테이블에 다음이 포함되어 있는지 여부를 확인하는 데 사용할 수 있는 기능이 있습니다. up_control_lmt@u2_holdforceduration_2. --> 데이터 테이블에 다음이 포함된 경우: up_control_lmt@u2_holdforceduration_2. , 데이터 테이블에 새 열을 추가하겠습니다.
내 질문을 이해할 수 있기를 바랍니다.
감사합니다,
Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?나는 혼란스럽다.지정된 열인 셀 1에서 값을 읽고 싶지만 해당 열이 없다고 나타냅니다.
JMP는 참조 열을 찾을 수 없으면 실행을 중지합니다.따라서 오류가 발견되면 처리를 계속하지 않습니다.
그러한 열이 없는데 갖고 싶다면 데이터 테이블에 열을 추가하고 원하는 값으로 셀 1을 채워야 합니다.그것이 해결책입니다........하지만 저는 질문을 정말로 이해하고 있지 않다고 생각합니다.
Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?친애하는 Txnelson,
효과가있다. 귀하의 제안에 감사드립니다. 스크립팅 가이드를 참고하겠습니다.
한편, 더 많은 질문이 있습니다.
그래프에 변수를 사용하고 싶기 때문에 열의 셀에서 값을 추출한 다음 변수에 값을 할당하고 싶습니다.
그러나 내 테이블에 열이 없는 경우: lo_control_lmt@u2_holdforceduration_2 또는 : up_control_lmt@u2_holdforceduration_2 , 내 스크립트에 그래프가 표시되지 않습니다.
아래 내 스크립트에서 2줄을 삭제하면 내 스크립트에 그래프가 표시됩니다.
U2_UCL_HDF = 열(dt,"up_control_lmt@u2_holdforceduration_2")[1];
U2_LCL_HDF = 열(dt,"lo_control_lmt@u2_holdforceduration_2")[1];
이 경우에 대한 해결책이 있습니까? 감사합니다.
내 스크립트:
U1_UCL_HDF = Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U1_LCL_HDF = Column( dt, "lo_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U2_UCL_HDF = Column( dt, "up_control_lmt@u2_holdforceduration_2" )[1]; //extract value from cell
U2_LCL_HDF = Column( dt, "lo_control_lmt@u2_holdforceduration_2" )[1]; // extract value from cell
NW = New Window( "KPP summarize",
Variability Chart(
Y( :HOLDFORCEDURATION_2 ),
X( :COMPLEVEL_1, :LINK_ID, :TEST_OR_BOND_HEAD_ID, :LOT, :BONDSTAGE, :CARRIER_X ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Connect Cell Means( 1 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
AIAG Labels( 0 ),
SendToReport(
Dispatch(
{"Variability Chart for HOLDFORCEDURATION_2"},
"2",
ScaleBox,
{Min( 332 ), Max( 641 ), Inc( 50 ), Minor Ticks( 1 ),
Add Ref Line( 0, "Dotted", "Medium Light Gray", "", 1 ),
Add Ref Line( U1_UCL_HDF, "Solid", "Red", "UCL_U1", 2 ),
Add Ref Line( U1_LCL_HDF, "Solid", "Red", "LCL_U1", 2 ), // put the value in here extract
Add Ref Line( U1_CT_HDF, "DashDot", "Red", "CL_U1", 2 ), // put the value in here extract
Add Ref Line( U2_UCL_HDF, "Solid", "BlueCyan", "UCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_LCL_HDF, "Solid", "BlueCyan", "LCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_CT_HDF, "DashDot", "BlueCyan", "CL_U2", 2 )} // put the value in here extract
)
)
)
);Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?변수 "df"는 하위 집합 데이터 테이블을 가리킵니다.데이터 테이블에서 보고서를 만들면 데이터 테이블의 일부가 되지 않습니다.그것은 그 자체로 실체입니다.따라서 생성된 보고서에 액세스하는 가장 쉬운 방법은 이를 가리키는 변수를 지정하는 것입니다.아래 스크립트 수정에서 이 작업을 수행했습니다.
gb = df << Graph Builder(
변수 "gb"는 Graph Builder 개체를 가리킵니다.코드 후반부에 Save Picture 메시지가 Graph Builder 플랫폼에서 생성된 보고서에 적용됩니다.
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
다음은 수정된 스크립트입니다.
names default to here( 1 );
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
gb = df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
도움말 풀다운 메뉴 아래에 있는 JMP 설명서 라이브러리에서 제공되는 스크립팅 가이드를 시간을 내어 읽어 보시기 바랍니다.
Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?친애하는 txnelson님,
효과가있다. 많이 감사합니다.
나는 당신의 지침을 따르고 그것을 나 자신에게 적용하려고 노력합니다
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
df << save picture( "C:\Users\lamquocb\image.jpg" );
그러나 사진을 저장할 수 없는 또 다른 문제인 df용 그래프 빌더가 발생합니다.
사진을 저장하려는 위치에 액세스하려고 시도했지만 찾을 수 없습니다.
조언이 있습니까?
감사합니다,
Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?안녕,
JMP를 처음 사용하는 경우 로컬 데이터 필터 및 열 전환기를 확인하십시오. 로컬 데이터 필터가 여기에서 도움이 될 것입니다... 제 예제에 컬럼 스위처가 무엇을 할 수 있는지 알려드리기 위해 컬럼 스위처를 포함시켰습니다.
고려하려는 데이터로 그래프를 제한하려면 메뉴 항목을 클릭하기만 하면 됩니다. 코딩이 필요없고 사용하기 쉽습니다. 누구나 사용할 수 있습니다.
로컬 데이터 필터를 가져오려면 Graph Builder의 빨간색 삼각형 메뉴에서 로컬 데이터 필터 추가를 선택합니다.
Column Switcher를 가져오려면 메인 메뉴에서 Redo > Column Switcher를 선택합니다. 또한 교체할 열과 회전할 열을 선택해야 합니다. 교체하려는 열을 이 세트에 포함해야 합니다. 모든 열은 동일한 데이터 유형이어야 합니다.
아래 스크립트를 실행하여 이러한 작업을 엿볼 수 있습니다.
건배,
브래디

Names Default To Here(1);
dt = open ("$Sample_Data\Car Physical Data.jmp");
Graph Builder(
Size( 526, 448 ),
Show Control Panel( 0 ),
Variables( X( :Country ), Y( :Gas Tank Size ) ),
Elements( Box Plot( X, Y, Legend( 8 ) ), Points( X, Y, Legend( 9 ) ) ),
Local Data Filter(
Show Histograms and Bars( 0 ),
Add Filter(
columns( :Type ),
Where( :Type == "Compact" ),
Display( :Type, N Items( 5 ) )
)
),
Column Switcher(
:Gas Tank Size,
{:Weight, :Turning Circle, :Displacement, :Horsepower, :Gas Tank Size}
)
);
Re: 조건이 충족된 후 JSL 명령을 실행하려면 어떻게 해야 합니까?아래 JSL을 생성하기 위해 단계를 대화식으로 실행한 다음 로그에서 코드를 가져와 스크립트 창에 붙여넣었습니다.
names default to here(1);
// Open Data Table: big class.jmp
// → Data Table( "big class" )
Open( "$SAMPLE_DATA/big class.jmp" );
// Select matching cells
Data Table( "big class" ) << Select Where( :age == 12 & :sex == "F" );
// Subset data table
// → Data Table( "Subset of big class" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class - Graph Builder
Data Table( "Subset of big class" ) << Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
// Invert current selection
Data Table( "big class" ) << Invert Row Selection;
// Subset data table
// → Data Table( "Subset of big class 2" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class 2 - Graph Builder
Data Table( "Subset of big class 2" ) <<
Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);