Re: JSL 스크립팅을 사용한 차세대 자동화첨가 @Jordan_Hiller 그리고 @ChristianBille 이 댓글에.
함께 만들어 주셔서 감사합니다. "일반화"에 대한 후속 질문이 있는데 그것은 내 스크립팅 능력 부족과 더 관련이 있습니다. 일반적으로 내 워크플로에서는 "모든 열을 선택"한 다음 요약, 그룹화, 누락된 값 탐색 등의 작업을 수행해야 합니다. 그러나 수천 개의 열이 있으며 각각의 새 데이터 테이블에서 다른 이름을 갖게 됩니다. , 특정 열 하나를 찾을 수 없다는 메시지가 표시되면 5,000개의 열을 교체할 수 없습니다(몇 시간이 소요됨). 먼저 열을 그룹화한 다음 그룹에서 나머지 워크플로 단계를 수행할 수 있는지 궁금합니다. 그룹에 일반 이름을 지정할 수 있습니다.
대안은 아래 스크립트에서와 같이 이름의 속성별로 열을 선택하는 것입니다. 워크플로의 다음 단계에서 이 스크립트에 의해 생성된 SELECTED 열이 있는 위치로 스크립팅하는 방법이 있다면? 예를 들어 이름에 "the"가 포함된 모든 열을 바꾸려는 경우 이 스크립트를 워크플로에 포함할 수 있습니까? 아직 또 다른 옵션이지만 각 파일에서 열 이름을 다시 코딩해야 하는 것을 피하는 방법을 생각하려고 합니다!
Workflow Builder는 동일한 형식의 테이블이 수십 개 있을 때 가장 잘 작동한다는 것을 알고 있지만 각 테이블이 약간 다를 때 협력할 수 있는지 알아내려고 합니다.
names default to here(1);
dt=current data table();
colNames = dt << get column names(string);
for each({Name}, colNames,
if(contains(Name,"nox"),
for each row(
column(name)[row()] = ???????????; // your formula here
)
);
);
Re: JSL 스크립팅을 사용한 차세대 자동화내가 당신의 질문을 이해한다면, @abmayfield , JMP17 워크플로가 많은 수의 변경되는 열 이름을 수용할 수 있는지 묻고 있습니다. 가능하다고 말할 수 있지만 일부 사용자 지정 JSL을 워크플로에 삽입하지 않고는 불가능합니다.
한 가지 좋은 접근 방식은 워크플로/스크립트가 사용자가 선택한 열에서 작동하도록 하는 것입니다. ~ 전에 워크플로를 실행합니다.
다음은 혈압 샘플 데이터 세트를 사용하는 예입니다.
Names Default To Here( 1 );
//Custom JSL: Get the user-selected columns, save them into list CNames
CNames = Current Data Table() << Get Selected Columns;
//Slightly modified workflow step: replace hard-coded columns with list CNames
Data Table( "Blood Pressure" ) << Transpose(
columns( CNames ),
By( :Dose ),
Label( :Subject ),
Output Table( "tdata" )
);
그러나 이것을 공격하더라도 솔루션에는 아마도 JSL이 포함될 것입니다. 기울기 . 목록에 대해 조금 배우면 새로운 코딩 초능력을 얻을 수 있습니다!
JSL 스크립팅을 사용한 차세대 자동화영상은 2024년 8월에 업데이트되었습니다.
워크플로는 자주 또는 매일 사용하는 분석 및 보고서를 자동화하는 코드 없는 방법입니다. 또한 워크플로를 JSL 스크립트로 변환하여 원활한 사용자 경험과 더욱 세련된 프레젠테이션을 제공하고 다른 사람과 공유할 애드인을 만들 수 있습니다. 이 데모는 워크플로 스크립트를 이해하고 수정하고 새 데이터와 새 사용자에게 더 유연하게 만드는 방법의 기본 사항을 보여줍니다. JMP 워크플로를 만드는 데 대한 배경 지식이 있다고 가정합니다.
이 사례 연구에서는 2015~2017년의 데이터를 사용하여 워크플로를 구축하는 데 사용한 세 가지 소스를 사용했으며, 그 다음 해의 데이터를 사용할 수 있는 스크립트를 만들었습니다.
첨부된 .zip 파일에는 육아 Excel 데이터 두 가지 버전과 육아 분석 JMP 추가 기능을 포함하여 연습하는 데 필요한 모든 파일이 포함되어 있습니다.
방법을 확인하세요:
- JSL 기본 구성 요소 중 일부를 이해하세요
- 댓글
- 데이터 테이블의 열 참조
- 표현과 그것이 참조하는 대상
- 경로 변수
- 워크플로 생성
- 워크플로 스크립트 저장
- 새 데이터와 새 사용자를 일반화하기 위해 스크립트를 편집합니다.
- 테이블 이름과 파일 경로 변경
- 데이터 테이블 이름 변수 생성
- 필요에 따라 사용자 입력 메커니즘을 추가합니다(파일 선택, 열 대화 상자 등)
- 파일을 선택하세요
- 특정 기준에 따라 파일을 선택하기 위한 JSL 생성
- 현재 열려 있는 데이터 표로 기본 설정
- 열을 선택한 다음 대화 상자에서 선택한 열을 언로드하여 나중에 스크립트에서 해당 작업을 수행합니다.
- 열을 선택하는 대신 내장된 보고서 열 전환기를 사용하세요.
- 선택적으로 스크립트를 배포용 JMP 추가 기능으로 저장합니다.
- 파일 > 새로 만들기 > 추가 기능을 사용하여 추가 기능을 만듭니다.
- 스크립트를 시작하기 위해 메뉴 항목 및/또는 도구 모음 항목을 만듭니다.
- 데이터 파일, PDF 등을 포함합니다.
- 추가 기능을 설치하고 *.jmpaddin 파일을 두 번 클릭하여 설치할 수 있는 다른 사용자와 공유하세요.
라이브 웨비나에서 Jordan Hiller @Jordan_Hiller 가 답한 질문:
질문: 내 워크플로가 프로세스에서 새 테이블을 생성하고, 그 새 테이블이 연속적인 단계에서 호출되면 새로 형성된 테이블에 "제목 없음 5"와 같이 예측하기 어려운 이름이 지정되기 때문에 문제가 발생합니다. 이 단계를 비슷한 방식으로 "일반화"할 수 있습니까?
A: 특히 이 문제가 발생하는 곳은 테이블 메뉴에서 스택, 분할, 전치와 같은 항목을 사용할 때이고, 스택, 분할, 전치로 만든 항목입니다. 명확한 이름을 지정하지 않으면 u=Untitled 17 또는 Untitled 32라고 합니다. 따라서 테이블 메뉴 작업 중에 새 출력 테이블의 이름을 지정하세요.

Renamed split table분할 테이블 이름이 변경되었습니다.
질문: Workflow Builder 없이 JSL 스크립트를 실행했다면, 어떻게 Workflow로 전환할 수 있나요?
대답: 네, 새 워크플로 사용자 지정 작업을 만든 다음 스크립트를 복사하여 창에 붙여 넣거나 스크립트를 별도의 사용자 지정 작업으로 나눌 수 있습니다.
질문: Workflow Builder에서 Record를 누른 다음 스크립트를 실행할 수 있나요? WFB가 스크립트의 단계를 캡처할까요?
A: JMP 17 및 이전 버전에서는 단계를 캡처하지 않습니다. 그러나 JMP 18 워크플로는 워크플로가 기록되는 동안 실행되는 스크립트를 실제로 캡처합니다.
질문: "by" 변수로 Fit Model을 실행할 때 제안할 사항이 있나요? Workflow는 각 범주의 세부 정보가 있는 인스턴스를 저장하나요? 하지만 열에 새 범주가 있을 때 더 일반적으로 만드는 방법은 무엇인가요?
A: JSL에서 그룹별로 스크립팅하는 것은 약간 까다롭습니다. JSL 목록을 처리하는 방법을 알아야 합니다. JMP 사용자 커뮤니티에 문의하거나 사용자 커뮤니티에 질문을 제출하면 좋은 조언을 얻을 수 있습니다.
질문: 현재 실행 중인 스크립트가 있는 디렉토리를 참조하는 경로 변수가 있나요?
A: 아니요, 스크립트에 대한 경로 변수는 없습니다. 이를 해결할 수 있습니다. JMP 스크립트에서 파일을 지정할 때 파일이 실행 중인 동일한 스크립트의 동일한 경로/디렉토리/폴더에 있는 경우 파일 이름에서 경로/디렉토리를 제거하고 상대 경로를 사용할 수 있습니다. 아래를 참조하세요.
자원

자동화 및 스크립팅Re: JSL 스크립팅을 사용한 차세대 자동화Workflow Builder에서 Record를 누른 다음 스크립트를 실행해 주시겠습니까? WFB가 스크립트의 단계를 캡처합니까?
Jmp18: 예
Re: JSL 스크립팅을 사용한 차세대 자동화@hogi 감사합니다! 위 질문에 대한 답변을 수정했습니다. hogi가 지적했듯이 JMP 18 작업 흐름은 실제로 작업 흐름이 기록되는 동안 실행되는 스크립트를 캡처합니다.