I have a dataset that has the history from a few tags in it. Each tag has its own colomn. But the tags save histroy at different times (for example : tag1 : each 15m
tag2 : each 5 m) You get what I mean. This results in a few empty cells in the beginning of the tag history. Can anyone explain how I can script it to search for the first row with all values there? I have been looking and trying for a long time now.
To avoid this scrambling of data at multiple timestamps, always use "tall" format when retrieving "as stored" data..
1 Like
If for whatever reason you can not change to using a tall format instead of a wide, this function will return the t_stamp column of the first row that has a value other than None
(or 0 which may or may not be an issue but can be fixed if needed).
def getFirstFullRow(dataset):
ds = system.dataset.toPyDataSet(dataset)
for row in ds:
col = 1
while row[col]:
col += 1
if col == ds.columnCount:
return row[0]
I'll suggest another version that I believe is easier to understand:
def get_first_full_row(ds):
ds = system.dataset.toPyDataSet(ds)
return next(
(row for row in ds if all(c is not None for c in row)),
None
)
ffr = get_first_full_row(ds)
tstamp = ffr[0] if ffr is not None else 0
edit: wait, this doesn't actually check for nulls, but for "falsy" values.
Gimme a sec to fix it
edit2: updated
Neither does mine