Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

一个 Record 是一个设备一个时间戳下多个测点的数据,例如:

insert into root.sgsg1.d1.d3v1(time, 陀螺仪(s1, s2)) aligned values(1,(1,2))

API 如下:

Code Block
languagejava
themeConfluence
// 服务器需要做类型推断,可能会有额外耗时
void insertAlignedRecord(String prefixPath, long time, List<String> measurements, List<String> values)

...



// 提供数据类型后,服务器不需要做类型推断,可以提高性能
void insertAlignedRecord(String prefixPath, long time, List<String> measurements, List<TSDataType> types, List<Object> values

...

应用到上面的例子即:

)

// 应用到上面的例子即:
void insertAlignedRecord(
    "root.

...

sg1.

...

d1.

...

v1",
    1,
    Arrays.asList("s1", "s2"),
    Arrays.asList("1", "2")
)

...

注意:当前仅支持 record 插入一个多元时间序列。后期将适配如下 SQL(即在同一个 record 中涉及多个多元时间序列、或涉及混合的一元和多元时间序列)

...



// 只插入到部分序列,其他序列值自动置为 null
void insertAlignedRecord(
    "root.sg1.d1.v1",
    1,
    Arrays.asList("s1"),
    Arrays.asList("1")
)

// 也可以通过null显式声明
void insertAlignedRecord(
    "root.sg1.d1.v1",
    1,
    Arrays.asList("s1","s2"),
    Arrays.asList("1",null)
)


3、插入Tablet

Tablet 是一个设备若干行非空数据块,每一行的列都相同

Code Block
// 插入一个 Tablet
void insertTablet(Tablet tablet) 

...

// 插入多个 Tablet
void insertTablets(Map<String, Tablet> tablet)

...

多元时间序列通过 VectorMeasurementSchema 构建 Tablet

...



// 对齐的时间序列通过 measurementSchema 构建 Tablet
List<IMeasurementSchema> schemaList = new ArrayList<>();
schemaList.add(new

...

 measurementSchema(new String[] {"s1", "s2"}, new TSDataType[] {TSDataType.INT64, TSDataType.INT32}));
Tablet tablet = new Tablet("root.sg1.d1.

...

v1", schemaList);

...

TODO:更新下面的API描述

//多元序列允许某列的某些行有空值,如时间戳2下只有s1有值,s2无值,则只需:

insert into root.sg.d1(time, b(s1)) values(2,(1))

//上述例子也可以通过null显式声明:

insert into root.sg.d1(time, b(s1, s2)) values(2,(1, null))

//多元序列允许各列独自写入:

insert into root.sg.d1(time, b(s1)) values(3,(1))

...