日付フィルター付きのパレート図を生成するスクリプトを作成する方法こんにちは、みんな、
あなたが元気だと嬉しいです。日付 (date1 と date2) でフィルタリングするテーブルからパレート図を生成するスクリプトを作成するときに問題が発生しています。
最初のステップとして、私は次のようにしてテーブルを呼び出しました:
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 )
),
)
)
しかし、スクリプトを起動した後、次のエラーが発生しました:

「Send」にアクセスまたは評価するときにスクリプト オブジェクトが期待されます。dt_pareto_subset << /*###*/
パレート図(
Y(:コードエラー)、
頻度("頻度"),
パーセントを表示(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))
)
)
);