用途:把表格型 Parquet 文件读入 Rerun 分块流,将扁平表映射到 Rerun 数据模型,把原始列变成分组、带时间索引的 struct 与标量组件。列名前缀成为实体,分组列合并为一个 struct 组件,指定列成为时间线。
主要能力:ParquetReader 是纯读取器,本身不做原型组装;把 struct 字段映射为带类型的 Rerun 组件(Transform3D、Scalars、Points3D 等)由 .stream() 上的 lens 完成。整个读取器的工作就是配置。
用法:构造只接收路径,所有加载选项都在 stream() 上且为仅关键字参数。示例: from rerun.chunk import DeriveLens, IndexColumn from rerun.experimental import ParquetReader reader = ParquetReader(table_path) stream = reader.stream(entity_path_prefix="/world", column_grouping="prefix", delimiter="_", use_structs=True, static_columns=["robot_type"], index_columns=[IndexColumn.timestamp("timestamp", input_unit="us"), IndexColumn.sequence("frame_index")]) 每次 stream() 调用相互独立,一个读取器可驱动多个不同配置的流;配置在 stream() 时按文件 schema 校验。
列分组:"prefix"(默认)按分隔符首段分组;"explicit_prefixes" 按 prefixes 精确匹配、最长优先;"individual" 每列独立、不打包 struct。use_structs=True 把分组列打包为单个 Arrow struct 组件 data,False 则每列一个组件。
时间线:用 IndexColumn.timestamp/duration/sequence 构建;input_unit 描述原始整数单位(默认 "ns",另有 "us"、"ms"、"s"),Rerun 内部换算为 ns。省略时只生成合成的 row_index 序列时间线。static_columns 中的列须全表恒定,否则运行时报错。
lens:DeriveLens 读取 struct 字段并打包、转换为真实组件,写入输出实体。提供 to_translation、to_quaternion、to_scale、to_rotation_axis_angle、to_scalars、to_packed_component、to_component、to_timeline 等构建方法,可链式调用。用 .stream().lenses([lens], content="/A", output_mode="drop_unmatched") 应用;output_mode 可选 "drop_unmatched"(默认)、"forward_unmatched"、"forward_all"。字段路径用 Selector 语法。
限制与注意:无 index_columns 时只有合成 row_index 时间线;单位须填原始列单位;分组前缀的 struct 组件名为 data,单独列则是以列名命名的原始组件;Selector 字段路径使用去前缀后的字段名;读取器会生成 /__properties 元数据块,通常用 .stream().drop(content="/__properties/**") 丢弃;to_quaternion 顺序为 x、y、z、w;to_packed_component 及变换辅助方法默认自动把 f64 转 f32。读取器无法表达的内容(逐行实体路由、派生值、单位换算)应放在下游 lens,而非先用 pandas 处理。具体收费、平台与效果资料暂未提供。