스크립터 클럽 레코딩: 팁과 요령비디오 1 @thickey1 : 데이터 테이블 관리하기.
- 열 이름을 수정합니다.
- 열 이름을 참조하는 대체 방법.
- 테이블에 스크립트를 추가/임베드합니다. 그러면 사용자는 언제든지 실행할 수 있습니다.
(파일: 팁과 요령 및 프로브)
비디오 2 @Georg : 스크립트를 작성하고 JMP 스크립트 편집기를 사용하는 방법에 대한 일반적인 팁
- 코드 폴딩
- 표현 처리
- 수식의 JSL
- eval (eval expr(먼저 평가할 expr(코드)))
- 변수 유형에 대한 테스트
- 연관 배열
(파일: 20241120_Scripters_Club_tipps_and_tricks-inspec)
비디오 3 @Mauro_Gerber : 여러 개의 가져오기에 열려 있고 현재 스크립트의 경로 가져오기
(파일: SC-2024_ini 및 SC-2024_multi-import)
비디오 4 @Daniel_Valente : JMP Marketplace 개요
https://marketplace.jmp.com/
저는 Ndoubled를 10으로 설정하는 것을 감히 하지 못했습니다 : )
내 꿈: 빠르고 역동적이며 사용하기 쉬운 :folded_hands: 사양(가치)
"코드 로스팅"이라는 아이디어와 함께 속도를 개선할 수 있는 아이디어가 있나요?
그리고 JSL에 대한 경험이 부족한 다른 사용자도 이 접근 방식을 쉽게 사용할 수 있게 하려면 어떻게 해야 할까요?


Re: 스크립터 클럽 레코딩: 팁과 요령이건 더 빠르지만, 사양이 조정될 때 업데이트를 트리거하지 않습니다.
따라서 현재로서는 실제 이점이 없습니다.
각각의 (... dt[0,colname] = ...)
또는 새로운 열(값 설정())
Names Default To Here( 1 );
Ndoubled = 10;
dynamic = 1;
Try( Close( cdt, NoSave ) );
cdt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
Wait( 0 );
bigger = Expr(
cdt = cdt << concatenate( cdt, append to first table( 1 ) )
);
For( I = 1, i <= Ndoubled, i++, bigger );
col_lst = cdt << get column group( "Processes" );
Wait( 0 );
cdt << New Table Variable( "trigger update", 1 ); // can this be used to force an update?
cdt << begin data update();
t0 = HP Time();
If( dynamic,
col_lst = cdt << get column group( "Processes" );
For Each( {col}, col_lst,
col_Name = col << get name() || "_inSpecDynamic";
colnew = New Column( col_Name, Nominal );
col_Name = colnew << get name();
Eval(
Substitute(
Expr(
Column( col_Name ) << set Formula(
Local(
{t0 = As Constant(
dt = Current Data Table();
limits = _col_ << get property( "Spec Limits" );
nr = nrows(dt);
usl = limits["USL"];
lsl = limits["LSL"];
myRows = Where( _col_ > lsl & _col_ < usl );
NmyRows = N Items( myRows );
dt[0, _col_Name_] = J( nr, 1, 0 );
If( NmyRows,
dt[myRows, _col_Name_] = J( NmyRows, 1, 1 )
);
1
)},
Stop();
)
)
),
Expr( _col_ ), Name Expr( col ), Expr(_col_name_), col_name
)
);
cdt << move selected columns( {Column( col_name )}, after( col ) );
);
);
cdt << run formulas() << end data update();
Show( (HP Time() - t0) / 1000000 );
Wait( 0 );
Caption( "Process screening - don't dare ..." );
Stop();
// TEST THE RESULT
// check result in table visually
ps = cdt << Process Screening( Process Variables( Eval( col_lst ) ), Spec Limits Dialog( "No (skip columns with no spec limits)" ) );
ps << Color Out Of Spec Values( 1 );
ps << Close Window;
cdt << Clear Select << Clear Column Selection;
Re: 스크립터 클럽 레코딩: 팁과 요령Der @hogi , 코드와 추가 구현을 살펴보셔서 감사합니다. 프레젠테이션에서는 속도 등에 대해 너무 많이 살펴보지 않았고, 다양한 방법과 접근 방식을 보여주는 데 중점을 두었습니다. 실제로 가장 좋은 구현은 경계 조건에 따라 달라지므로 사례에 따라 다를 것 같습니다.
프로그램 흐름을 살펴보면, 공식 접근법을 사용하여 각 행에서 사양 한계를 끌어내는 것이 이상적이지 않을 수 있지만, 어떤 경우에는 유용할 수 있습니다. 그러나 JMP는 불필요한 계산을 피하면서 런타임에 프로그램을 내부적으로 개선할 수 있습니다. 이 모든 세부 사항을 아는 것은 불가능하지만, 그래서 우리는 다른 접근법을 시도해야 합니다.
일반적으로 속도가 중요할 경우, 프로세스 스크리닝에서 색상을 통한 플랫폼 옵션을 사용합니다. 왜냐하면 이러한 옵션이 대용량 데이터에 최적화되어 있다고 가정하기 때문입니다.
로스팅 시리즈에서 다시 살펴볼 수도 있을 것 같아요. 그리고 네, 다시 말씀드리지만, in_spec은 아주 좋은 내장 함수가 될 것 같아요. 모든 세부 사항을 처리하다 보면 구현이 어려워질 수 있습니다. 개발자들이 좋은 방법을 찾기를 바랍니다.
Re: 스크립터 클럽 레코딩: 팁과 요령공식 플랫폼의 성능과 비교하려면 stop()을 삭제하거나 주석 처리하세요.
Re: 스크립터 클럽 레코딩: 팁과 요령사양 제한에 대해 기억해야 할 한 가지는 일방적인 사양입니다. 이는 온갖 재미있는 문제를 일으킬 수 있습니다.
Re: 스크립터 클럽 레코딩: 팁과 요령네, 맞아요.
단순성을 위해 양면 사양을 사용해도 괜찮다고 생각합니다.
온사이드 사양(또는 사양이 없는 열)을 설명하는 것은 매우 간단하지만, 실제로 잊지 말아야 할 사항입니다.
계산 속도를 높이고, 동적으로 만들 수 있는 비결이 있나요?
Re: 스크립터 클럽 레코딩: 팁과 요령대부분의 경우, 이는 해결하려는 문제에 따라 크게 달라질 것입니다. (따라서 솔루션은 사용 사례에 따라 크게 달라집니다.)
Re: 스크립터 클럽 레코딩: 팁과 요령사용 사례:
규격 외/규격 내 값에 대해 0/1 값을 생성하는 공식이 있는 새 열입니다.
사양에 오타가 있거나 사용자가 사양을 조정하고 싶은 경우 열의 값은 자동으로 업데이트되어야 합니다(기존 설정에 고정되어서는 안 됩니다).
아마 10~30개 열 정도일 거예요.
10만~1,000만 줄.
합격/불합격 정보를 분석하기 위해 JMP를 사용하려는 새로운 동료들과 쉽게 공유할 수 있는 솔루션입니다.
Re: 스크립터 클럽 레코딩: 팁과 요령이 내용은 주제와 약간 어긋날 수 있습니다.
몇 가지 사양이 부족합니다(?) (저는 제 자신을 전문적인 XY 문제 해결사라고 생각하지만, 당신이 그런 사람이 되고 싶어한다고는 생각하지 않습니다):
- 입력: 단순한 데이터 테이블
- 사양 제한이 설정된 모든 열을 사용하시겠습니까?
- 하지만 이것이 잘못 설정되었을 수도 있다는 점을 명심하세요(내 생각엔 훨씬 더 큰 문제입니다)
- 얼마나 잘못되었을까요? 둘 다 누락된 값이 있을 수 있을까요? 연속 측정이 있어도 둘 다 같은 값이 있을까요? 아니면 그냥 "버그가 있는" 값일 수 있습니다(예전에는 JMP에서 사양 한계로 "평가되지 않은" 값을 사용할 수 있었지만 여전히 올바른 숫자 값으로 표시되었습니다. 이것이 JMP18에서도 여전히 그런지는 잘 모르겠습니다).
- 별도의 사례는 사용자가 이를 조정하고자 할 수 있다는 것입니다(나는 이것을 0/1이 있는 단일 열과는 다른 사용 사례로 생각합니다)
- 사용 사례는 무엇입니까? 사용자가 테이블에서 30개의 열과 1,000만 개의 셀을 시각적으로 분석하지 않을 것이라고 확신합니다.
- 그들은 결과를 어떻게 사용하고 있나요? 계산을 거기에 구현할 수 있을까요? -> 이런 종류의 작업을 위한 맞춤형 플랫폼이 있나요?
이 경우 " 문제를 해결" 하려면 먼저 잘못된 사양 제한을 해결하거나 사양 제한이 변경되는 상황을 해결해야 합니다. 실제로 무엇을 보고자 합니까? 1,000만 개의 데이터 행이 있는데 사양 제한에 따라 0/1인 열이 있는 것은 정말 의심스럽습니다.
(또는 제가) 그런 열을 만드는 기능을 만들 수 있습니다(얼마나 빨리 만들 수 있을지 잘 모르겠지만). 하지만 그것이 정말 문제 의 해결책일까요? 모든 열에 대한 현재 사양 제한에 따라 0/1 열을 원한다면 동적이어야 할 필요는 없다고 생각합니다(즉시 업데이트). 사용자는 메뉴에서 단일 버튼을 눌러 결과를 업데이트할 수 있습니다(특정 열 이름이나 테이블 변수를 사용하는 추가 기능을 생각하고 있습니다). 사양을 조정하는 것이 목적이라면 10개의 행이 있을 때 0이 1로 바뀌는 것을 보는 것은 가치가 없습니다(그 사용 사례에 대한 특수 플랫폼을 만드세요. 다른 것이 없고 속도만 "관심"이 있다면 아마도 더 빠를 것입니다).
아니면 이건 단지 이걸 빨리 하는 방법에 대한 이론적인 질문일까요?
Re: 스크립터 클럽 레코딩: 팁과 요령안녕하세요 Jarmo, 댓글을 남겨주셔서 감사합니다.
맞습니다. "여기를 클릭하여 업데이트" 한 번만 하면 모든 문제가 사라집니다.
하지만 솔직히 말해서 저는 "그래프 빌더 - 설정만 하면 JMP가 세부 사항을 처리해 준다"는 접근 방식을 좋아합니다.
커뮤니티를 통해 세부 사항을 논의/구현할 필요가 없습니다(일방적 사양에도 작동하도록 공식을 확장하는 방법은 명확합니다). 여기서는 개념을 보여주는 짧은 코드를 선호합니다 .
그 외에도 빠르고 역동적이며 사용하기 쉬운 :folded_hands: 사양(가치)에 맞는 다면 뭔가 유용한 데 사용될 것이라는 점을 의심할 필요가 없습니다.
그래서, :folded_hands:가 spec(value)에 있을 때까지는 가능합니다 -- 만약 누군가가 더 나은 해결책을 가지고 있다면, 그것을 수동으로 설정하는 방법을 알려준다면, 저는 매우 기쁠 것이고 바로 사용할 것입니다. 이론적인 질문이 아닙니다 .:)