cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
hcarr01
Level VI

semaine glissante

Bonjour à tous,

 

J’ai une base de données qui contient des données de début 2019 à Avril 2023.
J’ai créé un script qui, quand je le relance ajoute chaque semaine les nouvelles données de 2023.
Pour éviter que ce fichier ne devienne trop lourd, j’aimerais quand je relance le script en début de semaine pouvoir supprimer une semaine glissante.

 

Par exemple aujourd’hui nous sommes en semaine 21 (S21) de 2023. Quand je lance le script aujourd’hui, que je puisse supprimer la S1 de 2019 pour après rajouter la S21 de 2023.
La semaine prochaine nous serons en S22 2023, le script va rajouter cette nouvelle semaine, en même temps j’aimerai pouvoir supprimer la S2 de 2019, ainsi de suite...

 

Cependant, si je lance le script plusieurs fois dans la même semaine il ne faudrait pas qu’il supprime plusieurs semaines consécutives.
Exemple : Si je lance le script 3 fois en S21 2023, juste qu’il supprime S1 2019 et pas S1/S2/S3 2019 (car j’ai lancé le script 3 fois)


Je dispose dans ma base de données d’une colonne « Date début » qui sera utile au développement du script. Voici un aperçu de la colonne ci-dessous :

 

hcarr01_0-1685103891667.png

 

 

Merci pour votre aide

1 ACCEPTED SOLUTION

Accepted Solutions

Re: semaine glissante

Consider using the Date Increment function. In this example, Date Increment counts 230 weeks into the past and returns the date of the first day of that week (Sunday). Then we just select all rows with Start Dates before that date and delete them. Within any single week you run the script, the date returned by Date Increment will be the same, so you can update your data table multiple times per week without triggering unwanted data deletion.

Names Default to Here( 1 );
deleteDate = Date Increment( Today(), "Week", -230, "start" );
Data Table( "Rolling Week.jmp" ) << Select Where( :Start Date < deleteDate );
Data Table( "Rolling Week.jmp" ) << Delete Rows;

 

Ross Metusalem
JMP Academic Ambassador

View solution in original post

4 REPLIES 4

Re: semaine glissante

I do not know the purpose of the updated data table, so this suggestion might not be helpful. Instead of deleting rows, you could compute a rolling row state for excluded rows in a formula column or with a script. You said you want to avoid the data table becoming too heavy, so this approach might not suit your purpose.

hcarr01
Level VI

Re: semaine glissante

Pour éviter d'alourdir la table de données, mon but est d'ajouter des nouvelles données mais en contre partie supprimer les "vieilles" données. Cela permettrait à la table de données d'avoir un équilibre par rapport à la taille du fichier.

 

J'aimerais écrire un script permettant de faire ce que j'ai précisé dans mon premier message.

Re: semaine glissante

Are you extracting data from a database into a JMPM data table? If so, you can use a WHERE clause to specify the period.

Re: semaine glissante

Consider using the Date Increment function. In this example, Date Increment counts 230 weeks into the past and returns the date of the first day of that week (Sunday). Then we just select all rows with Start Dates before that date and delete them. Within any single week you run the script, the date returned by Date Increment will be the same, so you can update your data table multiple times per week without triggering unwanted data deletion.

Names Default to Here( 1 );
deleteDate = Date Increment( Today(), "Week", -230, "start" );
Data Table( "Rolling Week.jmp" ) << Select Where( :Start Date < deleteDate );
Data Table( "Rolling Week.jmp" ) << Delete Rows;

 

Ross Metusalem
JMP Academic Ambassador