애플리케이션 및 대시보드용 DataTables안녕하세요 여러분,
애플리케이션/대시보드에 대한 코드를 빌드하고 싶습니다. 코드의 첫 번째 부분은 일부 테이블을 가져오고, 필터링 및 서식을 지정한 다음 일부 그래프와 보고서를 빌드합니다.
그 다음에는 기존 데이터 테이블(필터링 및 서식 지정 후)을 사용하여 이전에 만든 보고서를 표시하는 애플리케이션/대시보드를 빌드하는 일반 코드가 필요합니다. 분석에 사용된 데이터 테이블을 선택하라는 메시지가 표시되거나 이미 내장되었지만 잘못 내장되어 있지 않은 경우 스크립팅을 통해 이를 알아낼 수 없습니다. 기본적으로 데이터 테이블 1은 현재 데이터 테이블 지정을 사용하는데 괜찮지만 필요한 두 번째 테이블은 내장되지만 기본적으로는 서식이 지정되지 않고 필터링되지 않은 테이블로 기본 설정됩니다. 변수로 서식이 지정되어 원본에 덮어쓰여지더라도 마찬가지입니다.
포맷된 표를 저장한 다음 전체 경로(전역 변수)를 사용하여 표를 다시 불러오려고 했지만 코드를 실행하려고 하면 여전히 애플리케이션을 빌드할 표를 선택하라는 메시지가 표시됩니다.
전반적으로, 이것을 가능한 한 일반적으로 만들고 스크립트로 만들려고 노력하는데, 매번 실행할 때마다 사용되는 데이터 테이블에는 다른 데이터가 있기 때문입니다(같은 열이거나 거의 같은 열이지만 다른 데이터).
대시보드 빌더에서 대시보드를 만들고 스크립트를 완전히 작성한 것 외에는 대시보드에 대한 경험이 많지 않습니다.
감사해요
자동화 및 스크립팅윈도우Re: 애플리케이션 및 대시보드용 DataTablesApplication/Dashboard Builder를 사용하고 계신가요, 아니면 JSL만 사용하고 계신가요?
Re: 애플리케이션 및 대시보드용 DataTables결국 모든 것에 JSL을 사용하는 것을 선호합니다. 하지만 지금은 JSL을 사용하여 테이블을 가져와서 다시 포맷하고 있지만 애플리케이션의 일부 코드를 빌드하기 위해 애플리케이션/대시보드 빌더를 사용하고 있습니다.
Re: 애플리케이션 및 대시보드용 DataTables스크립트의 JSL 부분을 제공하고 어떤 부분에 문제가 있는지 표시/설명해 줄 수 있나요? 경로는 어디에서 가져오나요? 스크립트를 실행하기 전에 사용자가 테이블을 열었나요(current data table()을 사용하는 것이 필수인가요)? 또한 워크플로 빌더로 이 작업을 시도해 보셨나요?
Re: 애플리케이션 및 대시보드용 DataTables
dt1 = Open( "XXXXX.csv" );
If( Not( Is Scriptable( dt1 ) ),
dt1 = Open( "XXXXX.csv" ),);
Wait( 2 );
dt2=Data Table( dt1 ) << Subset(
Rows(
Data Table( dt1 ) <<
Select Where (
:X == "1" & :"Y"n == "2" &
:Z == "3)), All Columns);
Wait( 2 );
dt3 = Open( "YYYY.csv" );
If( Not( Is Scriptable( dt3 ) ),
dt3 = Open( "YYYY.csv" ),);
dt2 << Set Name("MainDataTable");
dt3 << Set Name("SpecTable");<BR />::saveloc_dt2 = Concat Items( {new_folder, "\MainDataTable",".csv"}, "" );<BR />dt2 << Save(saveloc_dt2);<BR />::saveloc_dt3 = Concat Items( {new_folder, "\SpecTable",".csv"}, "" );<BR />dt3 << Save(saveloc_dt3);
Current Data Table( dt2 );
cc = Control Chart Builder(Show Control Panel(0),Show Capability(0),Size(700,450),Show Excluded Region( 0 ),
Variables( Y( :X ) ),
Local Data Filter(
Add Filter(
columns( :Z),
Display( :A, Find( Set Text( "" ) ) ))),
Chart( Position( 1 ), Limits( Shade Zones( 0 ) ) )););
Current Data Table( dt2 );
process_screening = Process Screening(
Process Variables(
:A, :B, :C,
Grouping( :Y ),Control Chart Type( "Indiv and MR" ),Within Sigma( 0 ),Overall Sigma( 0 ),Stability Index( 0 ),Show Tests( 0 ),Out of Spec Count( 1 ),Out of Spec Rate( 1 ),
Latest Out of Spec( 0 ),N Subgroups (0 ),Ppk( 1 ),Cp( 1 ),Cpk(1),Cpm(1),Spec Limits( 1 ),
Use Limits Table(
1,
Data Table( "SpecTable" ),
Process Variables( :Process ),
Grouping( :Z ),
LSL( :LSL ),
USL( :USL ),
Target( :Target ),
Go
),
Goal Plot( 0, Capability Lines( 1.33 ), Shade Levels( 0 ) ),
Process Performance Graph( 0 ));
JMP App(
Set Name( "Application" ),
Set Description(
"An empty workspace for creating custom applications with one or more windows and scripts"
),
Auto Launch( 1 ),
Snap To Grid( 1 ),
Show Grid( 1 ),
Show Properties( 1 ),
Show Sources( 1 ),
Group By Category( 1 ),
Dashboard Mode( 0 ),
Parameters,
Tables(
DataTable2 = GuiTable(
Set Path( saveloc_dt2 ),
Set Label( "MainDataTable" ),
Location( "Full Path" ),
Invisible( 0 )
),
DataTable3 = GuiTable(
Set Path( saveloc_dt3 ),
Set Label( "SpecTable" ),
Location( "Full Path" ),
Invisible( 1 ))),<BR />. . . . 저는 이 방법으로 방금 애플리케이션에서 포맷하고 저장한 데이터 테이블을 참조할 수 있다고 생각했지만 대신 어떤 테이블을 사용할지 선택하라는 창이 나타납니다. 제가 피하고 싶은 부분입니다.
다른 옵션은 원하는 보고서를 만들고, 창 결합 기능을 사용하여 대시보드 유형 창에 넣은 다음 적절한 간격 등을 찾는 것입니다.
Re: 애플리케이션 및 대시보드용 DataTables스크립트의 첫 번째 부분을 약간 정리했고 이를 통해 스크립팅과 JSL 작성에 관한 몇 가지 아이디어를 얻을 수 있기를 바랍니다.
Names Default To Here(1);
new_folder = "MYFOLDER";
// Checking for scriptable should be unnecessary
dt1 = Open("XXXXX.csv");
// Datatable(dt1) is unnecessary in 99% of cases
// Use << Get Rows Where instead of Select Where with Rows() in subset
// Use output table() to make debugging much easier
dt2 = dt1 << Subset(Rows(dt1 << Get Rows Where(:X == "1" & :"Y"n == "2" & :Z == "3")), Selected Columns(0), Output Table("MainDataTable"));
dt3 = Open("YYYY.csv");
dt3 << Set Name("SpecTable");
// simpler in this case
saveloc_dt2 = new_folder || "\MainDataTable.csv";
dt2 << Save(saveloc_dt2);
saveloc_dt3 = new_folder || "\SpecTable.csv";
dt3 << Save(saveloc_dt3);
// You can send messages directly to data table, do not use current data table() if possible
cc_expr = Expr(dt2 << Control Chart Builder(
Show Control Panel(0),
Show Capability(0),
Size(700, 450),
Show Excluded Region(0),
Variables(Y(:X)),
Local Data Filter(Add Filter(columns(:Z), Display(:A, Find(Set Text(""))))),
Chart(Position(1), Limits(Shade Zones(0)))
));
ps_expr = Expr(dt2 << Process Screening(
Process Variables(
:A,
:B,
:C,
Grouping(:Y),
Control Chart Type("Indiv and MR"),
Within Sigma(0),
Overall Sigma(0),
Stability Index(0),
Show Tests(0),
Out of Spec Count(1),
Out of Spec Rate(1),
Latest Out of Spec(0),
N Subgroups(0),
Ppk(1),
Cp(1),
Cpk(1),
Cpm(1),
Spec Limits(1),
Use Limits Table(1, Data Table("SpecTable"), Process Variables(:Process), Grouping(:Z), LSL(:LSL), USL(:USL), Target(:Target), Go),
Goal Plot(0, Capability Lines(1.33), Shade Levels(0)),
Process Performance Graph(0)
)
));
nw = New Window("My report",
V List Box(
cc = cc_expr,
ps = ps_expr
)
);
보고서를 작성하는 한 가지 옵션은 플랫폼 호출을 Expr()로 래핑한 다음 새 창 내부에서 해당 표현식을 호출하는 것입니다. 표현식을 건너뛰고 플랫폼 호출로 창을 빌드할 수도 있습니다(또는 다른 몇 가지 메서드를 사용할 수도 있음)
nw = New Window("My report",
V List Box(
cc = dt2 << Control Chart Builder(
Show Control Panel(0),
Show Capability(0),
Size(700, 450),
Show Excluded Region(0),
Variables(Y(:X)),
Local Data Filter(Add Filter(columns(:Z), Display(:A, Find(Set Text(""))))),
Chart(Position(1), Limits(Shade Zones(0)))
),
ps = dt2 << Process Screening(
Process Variables(
:A,
:B,
:C,
Grouping(:Y),
Control Chart Type("Indiv and MR"),
Within Sigma(0),
Overall Sigma(0),
Stability Index(0),
Show Tests(0),
Out of Spec Count(1),
Out of Spec Rate(1),
Latest Out of Spec(0),
N Subgroups(0),
Ppk(1),
Cp(1),
Cpk(1),
Cpm(1),
Spec Limits(1),
Use Limits Table(1, Data Table("SpecTable"), Process Variables(:Process), Grouping(:Z), LSL(:LSL), USL(:USL), Target(:Target), Go),
Goal Plot(0, Capability Lines(1.33), Shade Levels(0)),
Process Performance Graph(0)
)
)
)
);
JMP Help에서 Scripting Guide를 확인해 보세요. 모든 것을 다 읽을 필요는 없지만 여기저기 살펴보고 무엇이 들어 있는지 확인하세요.
Re: 애플리케이션 및 대시보드용 DataTables고맙습니다. 이것들을 확인해 보겠습니다.