Dataset Tag correctly splitting data in rows but failing to split data in columns

On the PLC side I’ve got an array of structures.
Each structure has the fields Day, Number, ID, ProductCode.
I tried to use a Dataset to load it at once; not only is it a convenient way to handle the structure, but it also seem to allow for handling its size on the PLC side without the need for tweaking it also on Ignition tag’s configuration.

I defined an UDT (“MachineScheduling”) because I have also other fields that I need to group together. It contains my “Data” Tag, whose type is “Dataset”.

I preloaded 5 rows in the PLC with random data.

When I connect the tag by providing OPC Path, the value gets loaded into my “Data” tag; as you can see in the next picture the dataset succeds in loading all the 5 rows as separate dataset rows.
But if you look at the root “value”, you see that it reads “Dataset [5R x 1C]”; That is: 1C = 1 column!!!
The columns of the dataset are not recognized and split; what I get is a single column with all my struct data inside.
You can confirm that by looking the values objects: i’ve got one for row and it’s not further subdivided into cell-values.

I haven’t tried to use an array-of-array structure on PLC side yet, because that would be less convenient as it would loose the field names.
Is this latter solution the only way Datasets are expected to work? Or is there an error in my configuration?
Thanks in advance
Agostino

Structures can be an… interesting… thing. Not just Siemens, either.

Have you tried a document tag, by chance? Just looking at what is there for the rows.

Of course I tried! It just gives back all the data (rows and columns) in what appearenlty is a json document.

I don’t think any of our drivers directly support 2D arrays. I think what’s happening is we’re reading a 1D array and able to “cast” that to a dataset. @Kevin.Herron might be able to confirm.

I think the document tag + derived tags with jsonGet and jsonSet expressions is the generally recommended approach.

Thanks PGriffith; so if I understand correctly, you are suggesting me to use Document type instead of Dataset and then process it manually with jsonGet and jsonSet.
A couple of questions here.
Couldn’t I just use a string instead of a Document?
What is the use case for Dataset then? It seemed aimed exactly to this case.

Dataset is not intended for this use case, Document is. But Ignition does not have a “Document Array” type, so if your PLC type is a structure array you will have some troubles addressing it as a whole array. You may instead need a separate Document tag pointing to each structure array element.

But a scalar Document may be all that is needed, because an array of objects is valid JSON, and that’s what I’d expect an array of structure values to come in as.