BookmarkSubscribeRSS Feed
DavidLeber

New Contributor

Joined:

Sep 17, 2018

selectWhere on column attributes

I'm trying to select all columns which have the attribute "Units", and where the "Units" attribute has a value of "kg/hr". Is there some way to do a clean selectWhere, or do I need to iterate through each column to collect them?

2 REPLIES
cwillden

Community Trekker

Joined:

May 1, 2017

Re: selectWhere on column attributes

As far as I know, there is no existing function that would spare you from iterating through your columns and checking them individually.  You could subset the columns you need to look at by getting a list of all numeric columns (e.g. numeric_cols = dt << Get Column Names(Numeric, Continuous)).  Unless you have a ridiculous number of columns, that probably won't make a noticeable difference in reducing compute time to execute that task.  Luckily, it's not very hard to do.

-- Cameron Willden
Highlighted
jerry_cooper

Staff

Joined:

Jul 10, 2014

Re: selectWhere on column attributes

Selecting columns with specific properties, such as "Units", can be done without JSL from the Cols->Columns Viewer menu by clicking on the "Find Columns with Properties" button and then selecting the "Units" check box. This will return a table with a 'Yes' or 'No' for the "Units" property. Sorting this table by right-clicking and selecting "Sort by column..." and then selecting "Units" will make it easy to select all columns with a "units" property. 

 

However, to select a specific unit, such as "kg/hr", would require iterating through your columns as you guessed. This would only take a few lines of JSL, something like:

Names Default To Here( 1 );
dt = Current Data Table();

For( i = 1, i <= N Cols( dt ), i++,
	If( Column( i ) << Get Property( "Units" ) == "kg/hr",
		Column( i ) << set selected
	)
);

Hope this helps.