Definir un intervalo de fechas entre el inicio del mes y la fecha de hoy JMP16Buenos dias,
Desde esta mañana he encontrado un problema con mi script en JMP y necesito su ayuda, por favor.
J'ai essayé de définir deux fonctions pour avoir la date de début de mois et la date d'aujourd'hui :
axe1:get_day_of_month- Esta función toma una fecha como entrada y devuelve el día del mes como un número.
axe1:get_dates- Esta función recupera la fecha de inicio del mes actual y la fecha de hoy.
Luego una función para calcular:
//nb_total_ict y nb_total_fct: permiten contar el número total de pruebas realizadas
//nb_nok_ict y nb_nok_fct: te permiten contar el número de noks entre todas las pruebas
Para calcular el porcentaje de NOK para TIC y FCT entre el inicio del mes y la fecha de hoy.
Adjunto una copia de parte de mi código.
Le agradezco de antemano.
Atentamente,
yass
// Fonction pour obtenir le jour du mois
axe1:get_day_of_month = Function({date},
day_of_month = Num(Format(date, "dd"));
day_of_month
);
// Fonction pour récupérer les dates
axe1:get_dates = Function({},
today_date = Format(Today(), "yyyy-mm-dd");
day_of_month = axe1:get_day_of_month(Today());
start_of_month = Format(Today() - (day_of_month - 1), "yyyy-mm-dd");
{start_of_month, today_date}
);
// Fonction pour calculer les pourcentages de NOK
axe1:calculate_nok_percentages = Function({dt},
{start_of_month, today_date} = axe1:get_dates();
// Initialisation des variables
nb_total_ict = 0;
nb_total_fct = 0;
nb_nok_ict = 0;
nb_nok_fct = 0;
// Récupération des lignes correspondant à la période spécifiée
FileRows = dt << Get Rows Where(
Num(Char(:Date)) >= Num(start_of_month) & Num(Char(:Date)) <= Num(today_date) & Contains(:File Name, "GOLDEN") == 0
);
total_rows = N Items(FileRows);
For(j = 1, j <= total_rows, j++,
If(dt:ICT_FCT[FileRows[j]] == "ICT",
nb_total_ict += dt:Nb_de_lignes[FileRows[j]];
If(dt:Result[FileRows[j]] == "NOK",
nb_nok_ict += dt:Nb_de_lignes[FileRows[j]]
)
);
If(dt:ICT_FCT[FileRows[j]] == "FCT",
nb_total_fct += dt:Nb_de_lignes[FileRows[j]];
If(dt:Result[FileRows[j]] == "NOK",
nb_nok_fct += dt:Nb_de_lignes[FileRows[j]]
)
);
);
// Calcul des pourcentages NOK
percent_nok_ict = (nb_nok_ict / nb_total_ict) * 100;
percent_nok_fct = (nb_nok_fct / nb_total_fct) * 100;
// Affichage des résultats
Window("Analyse des données") << Append(
V List Box(
Outline Box("Résultat NOK",
Border Box(
Text Box("Pourcentage de NOK ICT du " || start_of_month || " au " || today_date || " : " || Char(Round(percent_nok_ict, 2)) || "%"),
Text Box("Pourcentage de NOK FCT du " || start_of_month || " au " || today_date || " : " || Char(Round(percent_nok_fct, 2)) || "%")
)
)
)
);
);
Automatización y secuencias de comandosventanasRe: Definir un intervalo de fechas entre el inicio del mes y la fecha de hoy JMP16¿Cuál es el problema que tienes (la traducción en la comunidad puede ser incorrecta ya que no pude encontrar el problema fácilmente)? Lo más probable es que desee utilizar Date Difference() o Date Increment() . Utilice "mes" como nombre de intervalo e "inicio" como alineación para obtener la primera fecha del mes. Por ejemplo la primera fecha de este mes.
Date Increment(Today(), "Month", 0, "start");
JMP también tiene Month() para obtener el mes de la fecha y muchas más funciones de fecha y hora que pueden resultarle útiles para este tipo de trabajo.

Re: Definir un intervalo de fechas entre el inicio del mes y la fecha de hoy JMP16Intenté definir dos funciones para obtener la fecha de inicio del mes y la fecha de hoy para calcular el porcentaje de resultados NOK en una tabla para ICT y FCT basada en una tabla de fechas (dt).
yo usé
axe1:get_day_of_month - This function takes a date as input and returns the day of the month as a number.axe1:get_dates - This function gets the start date of the current month and today's date.axe1:calculate_nok_percentages - This function calculates the percentage of NOK results for ICT and FCT based on a date table (dt). It filters the data for rows where the file name does not contain "GOLDEN" and then calculates the percentage of NOK for ICT and FCT for the specified date range.
pero cada vez que aparece este mensaje de error:
Alerta JMP
La evaluación del símbolo es demasiado recursiva (>250 niveles),en la línea 1 durante el acceso o evaluación de << inicio_del_mes,inicio_del_mes
en la línea 1
Se ha detectado un desbordamiento de pila.Se ha superado el número máximo de niveles de llamada.La ejecución terminó en la línea 1
Re: Definir un intervalo de fechas entre el inicio del mes y la fecha de hoy JMP16Supongo que el problema está en tu bucle For. Lo más probable es que se pueda optimizar y ni siquiera necesites utilizar un bucle. Si ya conoce las filas, puede utilizar, por ejemplo, los subíndices de la tabla de datos para obtener los valores que desea de la tabla. Lo más probable es que también puedas usar Subconjunto + Resumen para realizar los cálculos.
Si puede proporcionar un pequeño ejemplo de sus datos (o una fecha simulada) que pueda usarse para demostrar, puedo darle más sugerencias. Además, si puede proporcionar un ejemplo, intente proporcionar alguna información sobre los resultados correctos.
Re: Definir un intervalo de fechas entre el inicio del mes y la fecha de hoy JMP16Dos posibilidades, la segunda parece probable.
axe1:get_day_of_month = Function({date},
{ day_of_month },// 1: use local variables
day_of_month = Num(Format(date, "dd"));
day_of_month
);
// Fonction pour récupérer les dates
axe1:get_dates = Function({},
today_date = Format(Today(), "yyyy-mm-dd");
day_of_month = axe1:get_day_of_month(Today());
start_of_month = Format(Today() - (day_of_month - 1), "yyyy-mm-dd");
// 2: use evallist
evallist( {start_of_month, today_date} )
);
1: day_of_month puede ser global y puede confundirse entre las funciones
2: la lista que devuelve tiene los nombres de las variables, no los valores, y se almacenan en... ellos mismos. Creo que esa será la recursividad.
(¡Bonito código!)
Re: Definir un intervalo de fechas entre el inicio del mes y la fecha de hoy JMP16Me gustaría agradecerles por sus sugerencias y ayuda.
Terminé modificando mi función get_dates donde obtuve la fecha de hoy y la fecha de inicio del mes y usando un bucle For diferente porque encontré algunos errores en el bucle original. Sin embargo, tus sugerencias fueron muy útiles.
esa es la función get_dates:
axe1:get_dates = Function({},
today_date = Format(Today(), "yyyy-mm-dd");
start_of_month = Format(Date Increment(Today(), "Month", 0, "Start"), "yyyy-mm-dd");
evallist({start_of_month, today_date});
);¡Gracias de nuevo por todo!