Hello,
In a script, I would like to be able to select rows that are two weeks before today's date.
I would like to run the script and depending on what day it is, that JMP displays the last two weeks only.
For that I used in my script the function "subset" and the function :
"get rows where" (: A> 40 &: A <59.5), and I would like to add something else to select the rows corresponding to two weeks before today's date (the date when I will run the script)
Thanks for your help
Have a good day
You need to make the selection in the data table before performing the Subset....see below
Names Default To Here( 1 );
dt = Current Data Table();
dt << select where( :A > 20 & :A < 40 & :Date >= (Today() - In Weeks( 2 )) );
dtSub = dt << subset(
selected rows( 1 ),
columns( :Year, :B, :Month, :Week, :Date, :Product, :A ),
output table( "abc" )
);
I did not fully test the code, but it should be very close.
In the Scripting Guide, under "Date Time" there is a list of all of the Date Time functions that are available. I assume you want to do something like:
theRows = dt << get rows where( :Date >= Today() - InWeeks(2));
or to adjust back to the beginning of the current date (i.e. Midnight)
theRows = dt << get rows where( :Date >= Today() - Time Of Day( Today() ) - InWeeks(2));
Thanks, I tested this but it still doesn't work
What I'm looking to do is create a new base of my main database with a few columns I'm interested in and specifying that I only want column A with values between 20 and 40 and two weeks before today.
I have this:
dt = Current Data Table ();
dtSub = dt << subset (
Output Table ("abc"),
rows (dt << get rows where (: A> 20 &: A <40 &: Date> = Today () - InWeeks (2)));
columns (: Year,: B,: Month,: Week,: Date,: Product,: A)
);
Thanks
You need to make the selection in the data table before performing the Subset....see below
Names Default To Here( 1 );
dt = Current Data Table();
dt << select where( :A > 20 & :A < 40 & :Date >= (Today() - In Weeks( 2 )) );
dtSub = dt << subset(
selected rows( 1 ),
columns( :Year, :B, :Month, :Week, :Date, :Product, :A ),
output table( "abc" )
);
I did not fully test the code, but it should be very close.
Hello,
Sorry but I tried your code but still can't do it ..
I'm new to script programming, so I don't have the reflexes that others can have in this kind of little script
Can I still ask you for help?
Thank you
Please attach a sample data table, and I will see where the issue is.
Also, why are you trying to do this by writing a script? This can all be done interactively.
I would like the script to first allow to generate another database to extract only what interests me, then to send the report by email to then close the new database without saving it
Thank you
Please attach a sample data table. I am assuming the issue is in the data. If it is not working, and there are no messages in the log, then we need to look at what is happening with the data.
Here is an example of my database
Have a good day
Thank you
The issue is that the columns specified in the Subset phrase were not the names of the columns in the data table. Your names are in French, so all that has to be done, is to change the names of the columns in the script to match the names in the data table.
Names Default To Here( 1 );
dt = Current Data Table();
dt << select where( :A > 20 & :A < 40 & :Date >= (Today() - In Weeks( 2 )) );
dtSub = dt << subset(
selected rows( 1 ),
columns( :Année, :B, :Quantième, :Mois, :Date, :Produit, :A ),
output table( "abc" )
);