Cómo crear un script que genere un diagrama de Pareto con filtros de fechaHola a todos,
Espero que lo estés haciendo bién.Tengo un problema al crear una secuencia de comandos para generar un diagrama de Pareto a partir de una tabla que quiero filtrar por fechas (fecha1 y fecha2).
Como primer paso,Llamé a mi mesa usando:
dt2 = Open( "/D:/Project JMP/Tables/Table NOK PY.jmp", invisible );
Próximo :
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
);y creé el diagrama de Pareto en mi ventana:
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 )
),
)
)
pero después de ejecutar mi script, recibí este error:

Se espera el objeto script al acceder o evaluar "Enviar", dt_pareto_subset << /*###*/
Parcela de Pareto(
Y(:CodeError),
Frecuencia("Frecuencia"),
Mostrar porcentajes(1),
Mostrar línea acumulativa(1)
)/*###*/
Tengo un pequeño fragmento de código que genera un diagrama de Pareto. Actualmente, tengo que seleccionar manualmente la tabla de datos cada vez y no puedo aplicar un filtro de fecha:
Pareto Plot(
Cause( :CodeError ),
SendToReport(
Dispatch( {"Plots"}, "Pareto Report", FrameBox, {Frame Size( 1555, 725 )} )
)
);
Gracias por toda tu ayuda,
Atentamente,
yass
ventanasRe: Cómo crear un script que genere un diagrama de Pareto con filtros de fecha¿Tiene el subconjunto que espera en dt_pareto_subset?
Re: Cómo crear un script que genere un diagrama de Pareto con filtros de fechasí y espero que dt_pareto_subset contenga solo las filas de dt2_top5 donde el valor en la columna: Fecha se encuentra entre fecha1 y fecha2
Re: Cómo crear un script que genere un diagrama de Pareto con filtros de fechaEl mensaje de error indica que la variable dt_pareto_subset no tiene un objeto programable (en este caso, una tabla de datos). Podría haber muchas causas diferentes para esto y es totalmente una conjetura sin ver sus datos o el script completo.
Re: Cómo crear un script que genere un diagrama de Pareto con filtros de fecha
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: Cómo crear un script que genere un diagrama de Pareto con filtros de fecha¿Funciona según lo previsto si crea la trama después de haber creado el subconjunto? Así que no lo pongas dentro de la nueva ventana.
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: Cómo crear un script que genere un diagrama de Pareto con filtros de fechaHola,
Probé el método en tu script, me da el diagrama de Pareto pero sin filtro de datos. Por ejemplo, el pareto de hoy debe ser 2024-07-29 <=: Fecha < 2024-07-30.
Entonces usé estas funciones:
// 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)); Adjunto una muestra de mi base de datos como referencia.
Re: Cómo crear un script que genere un diagrama de Pareto con filtros de fecha¿Quiere tener un filtro de datos en su diagrama de Pareto o simplemente quiere filtrar los datos? Parece que solo desea crear un subconjunto a partir de sus datos y NO tener un filtro.
Re: Cómo crear un script que genere un diagrama de Pareto con filtros de fechaNecesito filtrar los datos con Fecha usando un subconjunto para crear un diagrama de Pareto para los resultados de producción de ayer porque genero un informe diario de resultados de producción todas las mañanas.
Re: Cómo crear un script que genere un diagrama de Pareto con filtros de fechaNo debería haber necesidad de realizar conversiones de números y caracteres a números.
¿Quizás algo como esto?
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));

También puedes crear paretoplot a partir de tu tabla inicial (el filtrado puede requerir un poco de trabajo)

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