App Builder 매개변수화된 애플리케이션 일반화
매개변수화된 애플리케이션은 열의 수와 유형이 변경되지 않을 때 잘 작동합니다. 많은 JMP 플랫폼에서 App Builder를 사용하려면 처음에 보고서를 작성하는 데 사용된 열의 수와 유형과 향후 분석에 사용된 열이 일대일로 대응되어야 합니다. 많은 경우 이는 너무 제한적입니다.
이 문제를 피하려면 해당하는 경우 원하는 수 또는 유형의 열을 사용할 수 있도록 애플리케이션을 일반화할 수 있습니다. 가장 큰 단점은 사용자 입력을 위해 내장된 대화 상자를 더 이상 사용할 수 없다는 것입니다. 다행히 App Builder를 사용하면 대화 상자를 쉽게 만들고 사용하여 보고서 창을 시작할 수 있습니다.
재료:
샘플 데이터 테이블 – Cars 1993, Cities
난이도 – 어려움
비디오 길이 – 8:04
단계
- 매개변수화된 애플리케이션 구축 레시피에서 생성된 애플리케이션을 엽니다. Cars 1993 샘플 데이터 테이블은 레시피를 생성하는 데 사용되었기 때문에 이 테이블과 함께 열립니다.
- 매개변수화된 접근 방식을 사용하지 않을 것이므로 사용자 입력을 위한 자체 대화 상자를 구축해야 합니다. 새로운 모듈을 추가하는 것부터 시작하세요.
- 속성 패널에서 모듈 이름을 Dialog 로 바꿉니다.
- 보고서 유형을 대화 상자 로 변경합니다. 그러면 대화 상자 창 상단의 메뉴가 표시되지 않습니다.
- 소스 패널의 입력 개요 아래에서 필터 열 선택기를 작업 공간으로 드래그합니다. 변수 이름을 clbAll 로 변경합니다.
- 라인업 상자를 추가합니다.
- 두 개의 Col List Boxes 와 두 개의 Button Boxes를 라인업 으로 드래그하고 각 행에 Col List Box가 이어지는 버튼을 가져오도록 2개씩 정렬합니다. 라인업 내부의 파란색 윤곽선은 개체가 위치할 위치를 보여줍니다. 개체가 있는 경우 드롭 영역에 개체를 넣을 수도 있습니다. 필터 열 선택기 및 열 목록 상자를 사용하려면 현재 응용 프로그램에 데이터 테이블이 열려 있어야 합니다.

- 첫 번째 버튼의 변수 이름 속성을 btnY 로 변경하고 제목을 Add Y 로 변경합니다.
- 다른 버튼의 Name 및 Title 속성을 각각 btnX 및 Add X 로 변경합니다.
- 첫 번째 목록 상자의 변수 이름을 clbY 로 설정합니다.
- 연속 형 열만 추가할 수 있도록 Modeling Type에서 연속형을 제외한 모든 항목을 선택 취소합니다.
- 최소 항목을 1 로 변경합니다. 상자 안의 힌트가 선택 사항에서 필수 로 변경됩니다.
- Max Items를 1 로 설정하여 상자 안에 넣을 수 있는 항목 수를 제한합니다.
- 마지막으로 N Lines를 2 로 변경합니다. 그러면 상자의 높이가 변경됩니다.
- 두 번째 열 목록의 변수 이름을 clbX 로 설정하고 N Lines를 8 로 변경합니다.
- Lineup 주위에 V List Box를 추가합니다.
- V List 내부에 새 Button Box를 드래그하여 하단에 표시되도록 합니다. 새 버튼의 이름을 btnRemove 로 변경하고 제목을 Remove Selected 로 변경합니다.
- 버튼 주위에 H 센터 박스를 추가합니다.
- 다른 요소를 둘러싸는 필터 열 선택기 와 V 목록 상자를 선택합니다. 마우스 오른쪽 버튼을 클릭하고 H List Box를 추가합니다. 가장 바깥쪽 상자를 마우스 오른쪽 버튼으로 클릭하고 모서리로 이동 을 선택합니다.
- 제목이 Run 및 Cancel 인 두 개의 버튼을 추가하여 해당 변수의 이름을 각각 btnRun 및 btnCancel 로 바꿉니다.
- H List Box 에 배치한 다음 H Center Box 에 배치합니다.
- 다른 개체가 포함된 H Center Box 와 H List Box를 선택하고 V List Box 에 추가합니다.

이제 대화 상자가 만들어졌으므로 버튼에 기능을 추가해 보겠습니다.
- 취소 버튼을 선택하세요. 속성 패널 아래쪽으로 스크롤합니다. 마지막 속성 인 Press 는 버튼 스크립트와 연결되어 있습니다. 스크립트는 오른쪽 입력 상자에 직접 추가할 수 있으며, 공간이 더 필요한 경우 점 3개 버튼을 클릭하면 더 많은 공간이 있는 창이 열립니다. 이는 개체 스크립트를 찾을 수 있는 두 장소 중 하나입니다.
- Use the following code for the button:
(thisModuleInstance << Get Box) << Close Window;
취소 버튼이 작동하려면 thisModuleInstance 네임스페이스 참조가 필요합니다. 각 모듈은 동일한 이름을 가진 자체 네임스페이스 참조를 만듭니다. 해당 범위는 연결된 모듈 외부로 확장되지 않으므로 모두 동일한 이름을 가질 수 있습니다. 여러 모듈로 작업할 때 이를 인식하는 것이 중요합니다. Get Box 메시지는 대화 상자 창에 대한 참조를 가져오고 창 을 닫는 데 사용됩니다.
- Y 추가 버튼을 선택합니다. 마우스 오른쪽 버튼을 클릭하고 스크립트 > 하단의 누르기를 선택합니다. 그러면 스크립트의 기본 이름이 생성되고 실행 버튼의 누르기 속성에 추가되며 스크립트 탭에 스크립트 쉘이 추가됩니다. 스크립트를 찾을 수 있는 두 번째 위치입니다. 속성 패널의 스크립트 이름은 스크립트 탭의 스크립트 이름과 동일해야 제대로 작동합니다.
- X 추가 및 선택 항목 제거 버튼에 대해 이 과정을 반복합니다.
- 스크립트 탭으로 이동합니다. 스크립트에 추가된 기본 주석과 코드를 삭제합니다. thisBox 인수는 스크립트가 연결된 개체에 대한 참조입니다. 모든 App Builder 스크립트 속성은 thisBox를 첫 번째 인수로 사용합니다. 이는 선택 사항이며 사용되지 않고 다른 인수가 필요하지 않은 경우 제거할 수 있습니다.
- For the Add Y button script, add the following line:
clbY << Append(clbAll << Get Selected)
이렇게 하면 필터 열 선택기 에서 선택한 내용이 Y 목록 상자에 추가됩니다.
- clbY를 clbX 로 바꾸는 Add X 버튼에 대해 동일한 스크립트를 추가합니다.
- Use the following two lines for the Remove Selected button:
clbY << Remove Selected;
clbX << Remove Selected;
- Add a script for the Run button. Use the following code:
If(N Items(clbY << Get Items) > 0 & N Items(clbX << Get Items) > 0,
(thisModuleInstance << Get Box) << Close Window;
thisApplication:Report << Create Instance(clbY << Get Items,clbX << Get Items);
)
If 문은 X 및 Y 열 목록 상자 모두에 항목이 하나 이상 있는지 확인합니다. 이 조건이 충족되면 2행은 대화 상자 창을 닫고 3행은 보고서 모듈을 시작합니다. thisApplication은 해당 애플리케이션에서 생성된 모든 객체와 변수를 범위로 하는 애플리케이션에서 사용하는 네임스페이스입니다. 이 경우 보고서 모듈을 참조하는 데 사용되며 선택 사항입니다. 인스턴스 생성은 모듈을 시작하는 데 사용되는 메시지입니다. 해당 인수는 시작된 모듈의 OnModuleLoad 함수에 전달됩니다. 사용자가 분석 열을 선택하는 목록 상자의 내용을 전달하겠습니다.
- 모듈을 선택하고 이름을 Report 로 바꿉니다. 애플리케이션이 시작될 때 실행되지 않도록 하려면 오른쪽 하단의 자동 실행을 선택 취소하세요.
- 현재 보고서에 있는 세 개의 보고서를 삭제합니다. 사용자가 분석 열을 선택한 후 런타임에 이를 빌드하기 위해 JSL을 사용합니다.
- 탭 페이지 상자의 이름을 tpbDistribution , tpbFitYbyX 및 tpbScatter 로 바꿉니다.
- To finish building the application, navigate to the Report section of the Scripts tab. It can be found by selecting the Scripts tab and choosing Report using the combo box at the top. We used Create Instance in the Dialog module script to launch the report and pass it the analysis columns. A module receives any arguments in its OnModuleLoad function. This happens before any of the report visuals are rendered. The following code will receive the passed variables and assign them variables local to the module (i.e., in the thisModuleInstance namespace for report).
OnModuleLoad({yCols,xCols},
allCols = Insert(yCols,xCols);
yVars = yCols;
xVars = xCols;
);
allCols 변수는 산점도 플랫폼의 X 및 Y 변수를 결합합니다.
- The 추가 function will be used to add the platforms to the appropriate Tab Page Boxes.
tpbDistribution << Append();
tpbFitYbyX << Append( );
tpbScatter << Append()
- Working from the saved scripts from the Parameterized Application recipe, copy and paste the Scatterplot Matrix code into the 추가 function for tpbScatter. Delete the list of hard coded column names and replace them with 평가(모든 콜).
tpbScatter << Append(
Scatterplot Matrix(
Y( Eval(allCols) ),
)
)
- We will use an alternative form for the 분포 platform:
tpbDistribution << Append(
Distribution(
Y(Eval(allCols))
)
);
이 접근 방식의 장점은 입력 열에 대한 모델링 유형을 지정할 필요가 없어 코드가 훨씬 단순해진다는 것입니다.
- We will also use an alternative for X로 Y 맞추기
tpbFitYbyX << Append(
Fit Y by X(
Y( Eval(yVars)),
X( Eval(xVars) )
) << Fit Line << ANOVA;
);
다양한 모델링 유형에 대한 플랫폼 호출을 변경할 필요가 없을 뿐만 아니라 Fit Line 및 ANOVA 메시지를 모두 사용하여 코드를 더욱 간결하게 만들 수 있습니다.
Cities 샘플 데이터 테이블을 사용하여 애플리케이션을 테스트할 수 있습니다. 단일 응답 열로 제한되지만 X 열의 수와 모델링 유형은 제한되지 않습니다.
자동화 및 스크립팅디저트