Ok I'm not 100% sure what I did differently today from yesterday but I have figured it out. For one, in Ignition you can look at the raw data for a tag, which can give you an idea of what the payload should look like though it's not a one for one translation to Sparkplug B.
With 1 row of data in the dataset this is what the raw data looks like specifically looking at the value property.
Values Property
{
"columns": [
{
"name": "Item",
"type": "java.lang.String"
},
{
"name": "Quantity",
"type": "java.lang.Float"
},
{
"name": "Unit of Measure",
"type": "java.lang.String"
},
{
"name": "Operation",
"type": "java.lang.Short"
},
{
"name": "Type",
"type": "java.lang.String"
}
],
"rows": [
[
"Some Item",
1.588,
"LB",
10,
"RESN"
]
]
}
From Node-RED this is the payload I sent to get it to update.
{
"metrics": [
{
"name": "Job/BOM",
"datatype": 16,
"dataset_value": {
"num_of_columns": 5,
"columns": [
"Item",
"Quantity",
"Unit of Measure",
"Operation",
"Type"
],
"types": [
12,
9,
12,
2,
12
],
"rows": [
{
"elements": [
{
"string_value": "Some Item"
},
{
"float_value": 1.588
},
{
"string_value": "LB"
},
{
"int_value": 10
},
{
"string_value": "RESN"
}
]
}
]
}
}
]
}
Hope this can help someone else in the future