You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our plan for Sorbet (and tagged components) hinges on being able to reliably "tag" data with semantic information.
The working theory is that every column receives a set of tags:
path
archetype
field
component
We store these tags in the arrow metadata of the RecordBatch that we send to Rerun, and Rerun uses these tags for everything from driving batching logic to how we visualize the data in the viewer.
Problem
The problem is it is way way too easy to accidentally lose these tags in most of the arrow libraries.
The reason is fundamental to arrow:
Arrow Arrays have Datatypes
Arrow Tables have Fields
A field is a datatype + a name + a set of metadata (our tags)
Neither column has tags. No knowledge of the entity path. No knowledge of the components. Not only are they lost, but there's not even a way to store the data on the arrow array.
However, still suffers from the same fundamental problem in that if you ever pull out the child-array from the struct, the array will lose its metadata in the same way.
Context
Our plan for Sorbet (and tagged components) hinges on being able to reliably "tag" data with semantic information.
The working theory is that every column receives a set of tags:
We store these tags in the arrow metadata of the RecordBatch that we send to Rerun, and Rerun uses these tags for everything from driving batching logic to how we visualize the data in the viewer.
Problem
The problem is it is way way too easy to accidentally lose these tags in most of the arrow libraries.
The reason is fundamental to arrow:
As soon as you access a table column:
the metadata is gone.
You now have two bare arrays:
List<TimestampNs>
List<List<F32,3>>
Neither column has tags. No knowledge of the entity path. No knowledge of the components. Not only are they lost, but there's not even a way to store the data on the arrow array.
If you thought you could send this back to arrow
will not do what you want.
You need to manually re-apply the tags at the time that you create the table or else nothing works.
The text was updated successfully, but these errors were encountered: