Skip to content

ds.segment_uri columns are annoyingly verbose #12791

@jleibs

Description

@jleibs

Describe the annoyance
When creating a table that links to segments within a dataset (such as following the table_blueprint example), we use the ds.segment_url API. This produces links with many annoying properties:

  1. They are very long. rerun+http://127.0.0.1:51234/dataset/18B115B9ADEED2FF57c99631cde012fc?segment_id=recording_00#when=step@1970-01-01T00:00:00.00000025Z&time_selection=step@1970-01-01T00:00:00.00000025Z..2262-04-11T23:47:16.854775807Z
  • Much of the data they encode is redundant. The server-address and dataset will typically be the same for the entire column -- this data could be better encoded as metadata.
  • The rendering of the column is just a giant string, and the "interesting" content doesn't show up for something like 60+ characters.
  1. The hard-coded server address makes the links non-portable
  2. The time can't be used as a filter without re-logging the timestamp independently

To Reproduce
Follow the table blueprint example
Look at the table not in card mode

Expected behavior
I would like for the SegmentReference to be a first-class structured data that looks more like a Rerun archetype and encodes things like dataset / timeline as metadata rather than redundantly incuding that data in every string. I would like the server address to be "the local server" by default.

e.g.

segment_id_field = pa.field(
    "segment_id",
    pa.utf8(),
    metadata={
        b"rerun:archetype": b"SegmentReference",
        b"rerun:component": b"SegmentReference:segment_id",
        b"rerun:component_type": b"rerun.components.SegmentId",
        b"rerun:dataset": DATASET_NAME.encode(),
    },
)
time_field = pa.field(
    "time",
    pa.timestamp("ns"),
    metadata={
        b"rerun:archetype": b"SegmentReference",
        b"rerun:component": b"SegmentReference:when",
        b"rerun:component_type": b"rerun.components.TimePoint",
        b"rerun:timeline": TIMELINE.encode(),
    },
)

schema = pa.schema([
    pa.field("id", pa.int64(), metadata={rr.SORBET_IS_TABLE_INDEX: "true"}),
    time_field,
    segment_id_field,
    pa.field("recording_uri", pa.utf8()),
])

Your goals
I am creating tables that link to specify time-points of interesting events to review.

Screenshots
The left columns are close to what I want. The recording_uri column is clearly an annoyance.

Image

image.png

Metadata

Metadata

Assignees

Labels

📺 re_vieweraffects re_viewer itself😤 annoyingSomething in the UI / SDK is annoying to use

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions