Get an element from a row dataset only if the column exists

I have a dataset row.

Need to get a value from it. Currently doing this:

start_time = row['STARTTIME']

However, for some reason, sometimes STARTTIME could not exist in the dataset, so that line throws an exception.

Anyone knows if there is equivalent function like .get() with a dictionary.
Looking for something simpler that cehcking if the column exists.

Thanks in advance.

You can use system.dataset.getColumnHeaders(dataset) to get a list of columns in the dataset.
Try something like:

# initialize start_time
start_time = 'na'
# get start_time if it is available
if 'STARTTIME' in system.dataset.getColumnHeaders(dataset):
	start_time = row['STARTTIME']

I'm doing something really similar, looking for something simpler or cleaner like .get.

Thanks for the help anyway!

system.dataset | Ignition User Manual

The closest thing I know of to what I believe you are asking for are the getColumnIndex(<column-name>) function or getValueAt(<row>, <column>).

In both cases if the column does not exist in the dataset a java.lang.ArrayIndexOutOfBoundsException will be thrown so you will still need to use a try/except block to catch it. But it would definitely work to check if the column exists.

1 Like

There's no safe get operator on Dataset or PyDataset.

3 Likes