BookmarkSubscribe
Choose Language Hide Translation Bar
Highlighted
DavidLeber
Community Trekker

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?

0 Kudos
1 ACCEPTED SOLUTION

Accepted Solutions
jerry_cooper
Staff (Retired)

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.

2 REPLIES 2
cwillden
Super User

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
0 Kudos
jerry_cooper
Staff (Retired)

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.