날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 작성하는 방법여러분, 안녕하세요,
당신이 잘 지내길 바랍니다.날짜(date1 및 date2)를 기준으로 필터링하려는 테이블에서 Pareto 플롯을 생성하는 스크립트를 생성하는 데 문제가 있습니다.
첫 번째 단계로,다음을 사용하여 테이블에 전화했습니다.
dt2 = Open( "/D:/Project JMP/Tables/Table NOK PY.jmp", invisible );
다음 :
dt2_top5 = dt2 << Summary(
Group( :Date, :Ref Produit, :ProductName, :Baie, :ICT_FCT, :CodeError),
Freq( "Aucun(e)" ),
Weight( "Aucun(e)" ),
output table name( "Table2 Top 5" ),
invisible
);
// Subset of data for Pareto plot filtered by Date
dt_pareto_subset = dt2_top5 << Select Where( Num( Char( :Date ) ) >= Num( date1 ) & Num( Char( :Date ) ) < Num( date2 ) );
dt_pareto_subset = dt2_top5 << Subset(
Selected Rows(1),
Columns(:CodeError),
output table name("Pareto Subset"),
invisible
);그리고 나는 내 창에서 파레토 플롯을 만들었습니다.
Border Box(Left(25), Top(50), Bottom(200),
V List Box(
// Add the Pareto plot here
paretoPlot = dt_pareto_subset << Pareto Plot(
Y( :CodeError ),
Freq( "Freq" ),
Show Percents( 1 ),
Show Cumulative Line( 1 )
),
)
)
하지만 스크립트를 실행한 후 다음 오류가 발생했습니다.

"보내기"에 액세스하거나 평가할 때 스크립트 개체가 필요합니다. dt_pareto_subset << /*###*/
파레토 도표(
Y(:코드오류),
Freq("주파수"),
백분율 표시(1),
누적 라인 표시(1)
)/*###*/
파레토 플롯을 생성하는 작은 코드 조각이 있습니다. 현재는 매번 데이터 테이블을 수동으로 선택해야 하며 날짜 필터를 적용할 수 없습니다.
Pareto Plot(
Cause( :CodeError ),
SendToReport(
Dispatch( {"Plots"}, "Pareto Report", FrameBox, {Frame Size( 1555, 725 )} )
)
);
도움을 주신 모든 분들께 감사드립니다.
친애하는,
야스
윈도우Re: 날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 만드는 방법dt_pareto_subset에 예상한 하위 집합이 있습니까?
Re: 날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 만드는 방법예, 그리고 dt_pareto_subset에는 :Date 열의 값이 date1과 date2 사이에 있는 dt2_top5의 행만 포함될 것으로 예상합니다.
Re: 날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 만드는 방법오류 메시지는 dt_pareto_subset 변수에 스크립팅 가능한 개체(이 경우 데이터 테이블)가 없음을 알려줍니다. 이에 대한 원인은 다양할 수 있으며 데이터나 전체 스크립트를 보지 않고도 완전히 추측에 불과합니다.
Re: 날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 만드는 방법
Names Default To Here( 1 );
TOP5 = New Namespace(
"TOP5"
);
TOP5:get_dates = Function({},
////
);
TOP5:calculate_nok_percentages = Function({dt},
/////
);
// Define the Do function
TOP5:Do = Function ({nb_date1, nb_date2},
//Ouverture de la table de données
dt = Open( "/D:/Project JMP/Tables/TableData PY.jmp", invisible );
dt2 = Open( "/D:/Project JMP/Tables/Table NOK PY.jmp", invisible );
{percent_nok_ict, percent_nok_fct} = TOP5:calculate_nok_percentages(dt);
current_month = Format(Today(), "Format Pattern", "<MONTH>", << Use Locale(0));
date1 = Date Increment(Today(), "day", nb_date1, "start");
date2 = Date Increment(Today(), "day", nb_date2, "start");
dt_top5 = dt << Summary(
Group( :Date, :Nom de fichier, :Ref Produit, :ProductName, :Baie, :ICT_FCT, :Result, :CodeError),
Freq( "Aucun(e)" ),
Weight( "Aucun(e)" ),
output table name( "Table Top 5" ),
invisible
);
dt2_top5 = dt2 << Summary(
Group( :Date, :Ref Produit, :ProductName, :Baie, :ICT_FCT, :CodeError),
Freq( "Aucun(e)" ),
Weight( "Aucun(e)" ),
output table name( "Table2 Top 5" ),
invisible
);
// Subset of data for Pareto plot filtered by Date
dt_pareto_subset = dt2_top5 << Select Where( Num( Char( :Date ) ) >= Num( date1 ) & Num( Char( :Date ) ) < Num( date2 ) );
dt_pareto_subset = dt2_top5 << Subset(
Selected Rows(1),
Columns(:CodeError),
output table name("Pareto Subset"),
invisible
);
/*
//
//
//
Here i have the logic of production repport.
it's fine it works
//
//
//
*/
//Création de la fenetre du top 5
window = new Window ("TOP5",
V List Box(
pb = Picture Box( Open( "D:\Project JMP\Images\logo.png", png ) ),
Border Box( Top(50),
V List Box(
tb1 = Text Box("Production results report of "||Format( date2, "yyyy-mm-dd" )),
tb1 << Set Base Font( "Title" ),
tb1 << Set Font Scale (3),
tb1 << Justify Text("Center"),
tb1 << Set Width(2770),
tb1 << Background Color(RGB Color(225, 225, 225)),
tb2 = Text Box ("SVI, PY"),
tb2 << Justify Text("Center") << Set Font Size(25),
tb2 << Set Width(2770),
tb2 << Background Color(RGB Color(240, 240, 240)),
)
),
V List Box (
Border Box (Top (100), Bottom(100), Left (25),
H List Box(
// TOP 5 ICT
V List Box(
tb3 = Text Box( "Top 5 NOK results for ICT"),
tb3 << Set Base Font( "Title" ),
tb3 << Set Font Scale (2),
H List Box(
// column bay
// column product ref
// column test number
//column %nok
// column product name
)
),
V List Box(
//nok percent for this month
),
)
),
Border Box(Left(25), Top(50), Bottom(200),
//TOP 5 FCT
V List Box(
tb4 = Text Box( "Top 5 NOK results for FCT"),
tb4 << Set Base Font( "Title" ),
tb4 << Set Font Scale (2),
H List Box(
// column bay
// column product ref
// column test number
//column %nok
// column product name
)
)
V List Box(
//nok percent for this month
),
)
),
Border Box(Left(25), Top(50), Bottom(200),
V List Box(
// Add the Pareto plot here
paretoPlot = dt_pareto_subset << Pareto Plot(
Y( :CodeError ),
Freq( "Freq" ),
Show Percents( 1 ),
Show Cumulative Line( 1 )
),
)
)
)
)
);
window << Maximize Window (1);
//Enregistrement du fichier image .png et du fichier texte .txt
window << Save Picture ("D:\Project JMP\Rapports de Production Quotidiens\Rapport du "||Format( date2, "yyyy-mm-dd" )||".png", "png");
window << Save Text ("D:\Project JMP\Rapports de Production Quotidiens\Rapport du "||Format( date2, "yyyy-mm-dd" )||".txt");
);</MONTH>
Re: 날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 만드는 방법하위 집합을 생성한 후 플롯을 생성하면 의도한 대로 작동합니까? 그러니 새 창 안에 넣지 마세요
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Time Series/Steel Shipments.jmp");
dt << New Column("Errors", Character, Nominal, Formula(
Match(Floor(:Steel Shipments / 1000),
4, "1000",
5, "2000",
6, "3000",
7, "4000",
8, "5000"
)
));
rows_of_interest = dt << Get Rows Where(02Feb1985<= :Date <= 09Jan1990);
dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Output Table("Subset"));
paretoplot = dt_subset << Pareto Plot(Cause(:Errors));Re: 날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 만드는 방법안녕하세요,
나는 귀하의 스크립트에서 방법을 시도했지만 파레토 플롯을 제공하지만 데이터 필터는 없습니다. 예를 들어 오늘의 파레토는 2024-07-29 <= :Date < 2024-07-30이어야 합니다.
그래서 나는 다음 기능을 사용했습니다.
// Function to get today's and yesterday's date
GetTodayAndYesterday = Function({},
today = Today();
yesterday = Date Increment(today, "day", -1, "start");
evallist({Format(yesterday, "yyyy-mm-dd"), Format(today, "yyyy-mm-dd")});
); dt = Open( "/D:/Project JMP/Tables/DB.jmp", invisible );
{yesterday, today} = GetTodayAndYesterday();
dt_top5 = dt << Summary(
Group( :Date, :Ref Produit, :Baie, :ICT_FCT, :Result, :CodeError),
Freq( "Aucun(e)" ),
Weight( "Aucun(e)" ),
output table name( "Table Top 5" ),
invisible
); // Create a subset of data for the Pareto Plot filtered by the date range
rows_of_interest = dt_top5 << Get Rows Where( Num( Char( :Date ) ) >= Num( yesterday ) & Num( Char( :Date ) ) <= Num( today ) );
dt_pareto_subset = dt_top5 << Subset(Rows(rows_of_interest), Selected Columns(0), Output Table("Pareto Subset"), invisible);
// Generate the Pareto Plot
paretoplot = dt_pareto_subset << Pareto Plot(Cause(:CodeError)); 참조용으로 내 데이터베이스 샘플을 첨부했습니다.
Re: 날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 만드는 방법파레토 플롯에 데이터 필터를 사용하시겠습니까, 아니면 데이터만 필터링하시겠습니까? 데이터에서 하위 집합을 만들고 필터를 사용하지 않으려는 것 같습니다.
Re: 날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 만드는 방법매일 아침 일일 생산 재염 보고서를 생성하기 때문에 어제의 생산 결과에 대한 파레토 플롯을 생성하기 위해 하위 집합을 사용하여 날짜로 데이터를 필터링해야 합니다.
Re: 날짜 필터를 사용하여 파레토 플롯을 생성하는 스크립트를 만드는 방법num 및 char을 num로 변환할 필요가 없습니다.
아마 이런 게 있지 않을까요?
Names Default To Here(1);
dt = Open("$DOWNLOADS/DB.jmp");
yday = Date Increment(Today(), "day", -1, "start");
tday = Date Increment(Today(), "day", 0, "start");
dt_top5 = dt << Summary(
Group(:Date, :Ref Produit, :Baie, :ICT_FCT, :Result, :CodeError),
Freq("Aucun(e)"),
Weight("Aucun(e)"),
output table name("Table Top 5")
);
rows_of_interest = dt_top5 << Get Rows Where(yday <= :Date <= tday);
show(rows_of_interest);
dt_pareto_subset = dt_top5 << Subset(
Rows(rows_of_interest),
Selected Columns(0),
Output Table("Pareto Subset")
);
pp = dt_pareto_subset << Pareto Plot(Cause(:CodeError), Freq(:N Rows));

초기 테이블에서 파레토플롯을 만들 수도 있습니다(필터링에는 약간의 작업이 필요할 수 있음).

dt << Pareto Plot(
Cause(:CodeError),
Local Data Filter(
Add Filter(
columns(:Date),
Where(:Date == 3805056000),
Display(:Date, N Items(4))
)
)
);