cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Choose Language Hide Translation Bar
Idokol
Level II

Efficient formula

Hey,

I have big data table (~30million rows*20 columns) and this Pass/Fail test makes JMP stuck.

The PC is Windows 10 64-bit, i7-4770 @ 3.4Ghz, SSD and 32GB DDR3 1600Mhz.

The JSL is:

cctable << New Column( "New status", Character, Nominal, Formula( If( :result < :L | :result > :H, "Fail", "Pass" ) ) );

Can it be more efficient? Is there's a better choise in JMP to do it?

Thanks,

Ido

4 REPLIES 4
tom_abramov
Level V

Re: Efficient formula

Hi,

Don't use column formulas with such a table.

Try to run a calculation with JSL and paste the results.

Please see attached a table and a script I used.

 

Regards,

Tom. 

Idokol
Level II

Re: Efficient formula

Thanks, but the "New Column( ... )" command takes time and everything get's stuck as well.

I will try to use update/join

If you (or anyone else :) ) have a nother idea- I will glad to hear it.

Thanks.

Craige_Hales
Super User

Re: Efficient formula

 

My test takes 15 seconds to create the table and 15 seconds to add the extra column. I am using <<runFormulas to make the formula evaluate immediately rather than waiting for idle time.

 

start = Tick Seconds();
dt = New Table( "Untitled",
	Add Rows( 30e6 ),
	New Column( "L", Numeric, "Continuous", Format( "Best", 12 ), Formula( Random Integer( 1, 9 ) ) ),
	New Column( "result", Numeric, "Continuous", Format( "Best", 12 ), Formula( Random Integer( 1, 9 ) ) ),
	New Column( "H", Numeric, "Continuous", Format( "Best", 12 ), Formula( Random Integer( 1, 9 ) ) )
);
dt<<runformulas;
stop = Tick Seconds();
Show("create", stop - start, N Rows( dt ) );

start = Tick Seconds();
dt << New Column( "New status", Character, Nominal, Formula( If( :result < :L | :result > :H, "Fail", "Pass" ) ) );
dt << runformulas;
stop = Tick Seconds();
Show( "add", stop - start, N Rows( dt ) );

 

"create";
stop - start = 12.8833333333605;
N Rows(dt) = 30000000;
"add";
stop - start = 12.6833333332906;
N Rows(dt) = 30000000;

 

 

Formula addedFormula added

Craige
Idokol
Level II

Re: Efficient formula

Thanks!
I will do it.

 

Although what that helped the most was table of 1M * 100 rather then 80M * 5