cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Don’t miss your chance to experience Discovery Summit Europe at our best available rate! Early bird registration through 31 Oct.
  • Image to Table JMP extension imports single or batch images as data tables. Useful to extract curves from pictures or convert image data to curve data to use in analyses like Functional Data Explorer. Download and install the extension.

Israel JMP Users - קבוצת משתמשים - ישראל

This group is open to all JMP users from Israel.
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