blob: 24d5478728f81b1d1a90ee27922844dcdd449925 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[826],{1224:function(s,t,a){"use strict";a.r(t);var n=a(29),e=Object(n.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"用法"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#用法"}},[s._v("#")]),s._v(" 用法")]),s._v(" "),t("p",[s._v("现在,您准备开始使用TsFile做一些很棒的事情。 本节演示TsFile的详细用法。")]),s._v(" "),t("h2",{attrs:{id:"时间序列数据"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#时间序列数据"}},[s._v("#")]),s._v(" 时间序列数据")]),s._v(" "),t("p",[s._v("时间序列被视为四倍序列。 四元组定义为(设备,测量,时间,值)。")]),s._v(" "),t("ul",[t("li",[t("p",[t("strong",[s._v("测量")]),s._v(": 时间序列进行的物理或形式测量,例如城市温度,某些商品的销售数量或火车在不同时间的速度。 由于传统的传感器(例如温度计)也需要进行一次测量并生成一个时间序列,因此我们将在下面互换使用测量和传感器。")])]),s._v(" "),t("li",[t("p",[t("strong",[s._v("设备")]),s._v(": 设备是指正在执行多个测量(产生多个时间序列)的实体,例如,运行中的火车监视其速度,油表,行驶里程,当前乘客均被传送到一个时间序列。")])])]),s._v(" "),t("p",[s._v("表1说明了一组时间序列数据。 下表中显示的集合包含一个名为“ device_1”的设备以及三个名为“ sensor_1”,“ sensor_2”和“ sensor_3”的测量值。")]),s._v(" "),t("center",[t("table",{staticStyle:{"text-align":"center"}},[t("tr",[t("th",{attrs:{colspan:"6"}},[s._v("device_1")])]),s._v(" "),t("tr",[t("th",{attrs:{colspan:"2"}},[s._v("sensor_1")]),t("th",{attrs:{colspan:"2"}},[s._v("sensor_2")]),t("th",{attrs:{colspan:"2"}},[s._v("sensor_3")])]),s._v(" "),t("tr",[t("th",[s._v("time")]),t("th",[s._v("value")]),t("th",[s._v("time")]),t("th",[s._v("value")]),t("th",[s._v("time")]),t("th",[s._v("value")])]),s._v(" "),t("tr",[t("td",[s._v("1")]),t("td",[s._v("1.2")]),t("td",[s._v("1")]),t("td",[s._v("20")]),t("td",[s._v("2")]),t("td",[s._v("50")])]),s._v(" "),t("tr",[t("td",[s._v("3")]),t("td",[s._v("1.4")]),t("td",[s._v("2")]),t("td",[s._v("20")]),t("td",[s._v("4")]),t("td",[s._v("51")])]),s._v(" "),t("tr",[t("td",[s._v("5")]),t("td",[s._v("1.1")]),t("td",[s._v("3")]),t("td",[s._v("21")]),t("td",[s._v("6")]),t("td",[s._v("52")])]),s._v(" "),t("tr",[t("td",[s._v("7")]),t("td",[s._v("1.8")]),t("td",[s._v("4")]),t("td",[s._v("20")]),t("td",[s._v("8")]),t("td",[s._v("53")])])]),s._v(" "),t("span",[s._v("一组时间序列数据")])]),s._v(" "),t("p",[t("strong",[s._v("一行数据")]),s._v(": 在许多工业应用中,设备通常包含多个传感器,并且这些传感器可能在同一时间戳上具有值,这称为一行数据。")]),s._v(" "),t("p",[s._v("形式上,一行数据由一个"),t("code",[s._v("device_id")]),s._v(",一个指示自1970年1月1日以来的毫秒数,00:00:00组成的时间戳,以及由"),t("code",[s._v("measurement_id")]),s._v("和对应的"),t("code",[s._v("value")]),s._v("组成的几对数据组成。 一行中的所有数据对都属于该"),t("code",[s._v("device_id")]),s._v(",并且具有相同的时间戳。 如果其中一个"),t("code",[s._v("measurements")]),s._v(" 在"),t("code",[s._v("value")]),s._v(" 中没有"),t("code",[s._v("value")]),s._v(",请改用空格(实际上,TsFile不存储空值)。 其格式如下所示:")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("device_id, timestamp, <measurement_id, value>...\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("一个示例如下所示。 在此示例中,两个测量的数据类型分别为INT32和FLOAT。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("device_1, 1490860659000, m1, 10, m2, 12.12\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h2",{attrs:{id:"编写tsfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#编写tsfile"}},[s._v("#")]),s._v(" 编写TsFile")]),s._v(" "),t("h3",{attrs:{id:"生成一个tsfile文件。"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#生成一个tsfile文件。"}},[s._v("#")]),s._v(" 生成一个TsFile文件。")]),s._v(" "),t("p",[s._v("可以通过以下三个步骤来生成TsFile,完整的代码将在“编写TsFile的示例”部分中给出。")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("首先,构造一个"),t("code",[s._v("TsFileWriter")]),s._v("实例。")]),s._v(" "),t("p",[s._v("以下是可用的构造函数:")]),s._v(" "),t("ul",[t("li",[s._v("没有预定义的架构")])]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public TsFileWriter(File file) throws IOException\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("使用预定义的架构")])]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public TsFileWriter(File file, FileSchema schema) throws IOException\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("这是用于使用HDFS文件系统的。 "),t("code",[s._v("TsFileOutput")]),s._v("可以是"),t("code",[s._v("HDFSOutput")]),s._v("类的实例。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public TsFileWriter(TsFileOutput output, FileSchema schema) throws IOException \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("参量:")])]),s._v(" "),t("ul",[t("li",[t("p",[s._v("文件: 要写的TsFile")])]),s._v(" "),t("li",[t("p",[s._v("模式: 文件模式将在下一部分中介绍。")])])])]),s._v(" "),t("li",[t("p",[s._v("二,添加测量")]),s._v(" "),t("p",[s._v("或者,您可以先创建"),t("code",[s._v("FileSchema")]),s._v("类的实例,然后将其传递给"),t("code",[s._v("TsFileWriter")]),s._v("类的构造函数。")]),s._v(" "),t("p",[t("code",[s._v("FileSchema")]),s._v("类包含一个映射,该映射的键是一个测量模式的名称,而值是该模式本身。")]),s._v(" "),t("p",[s._v("这里是接口:")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("// 创建一个空的FileSchema或从现有的映射\npublic FileSchema()\npublic FileSchema(Map<String, MeasurementSchema> measurements)\n \n// 使用这两个界面添加测量\npublic void registerMeasurement(MeasurementSchema descriptor)\npublic void registerMeasurements(Map<String, MeasurementSchema> measurements)\n \n// 一些有用的吸气剂和检查剂\npublic TSDataType getMeasurementDataType(String measurementId)\npublic MeasurementSchema getMeasurementSchema(String measurementId)\npublic Map<String, MeasurementSchema> getAllMeasurementSchema()\npublic boolean hasMeasurement(String measurementId)\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br")])]),t("p",[s._v("您可以始终在"),t("code",[s._v("TsFileWriter")]),s._v("类中使用以下接口来添加其他度量:\n​")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public void addMeasurement(MeasurementSchema measurementSchema) throws WriteProcessException\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("code",[s._v("MeasurementSchema")]),s._v("类包含一种度量的信息,有几种构造函数:")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public MeasurementSchema(String measurementId, TSDataType type, TSEncoding encoding)\n \npublic MeasurementSchema(String measurementId, TSDataType type, TSEncoding encoding, CompressionType compressionType)\n\npublic MeasurementSchema(String measurementId, TSDataType type, TSEncoding encoding, CompressionType compressionType, \nMap<String, String> props)\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br")])]),t("p",[t("strong",[s._v("参数:")])]),s._v(" "),t("ul",[t("li",[t("p",[s._v("measurementID:此测量的名称,通常是传感器的名称。")])]),s._v(" "),t("li",[t("p",[s._v("类型:数据类型,现在支持六种类型:"),t("code",[s._v("BOOLEAN")]),s._v(","),t("code",[s._v("INT32")]),s._v(","),t("code",[s._v("INT64")]),s._v(","),t("code",[s._v("FLOAT")]),s._v(","),t("code",[s._v("DOUBLE")]),s._v(","),t("code",[s._v("TEXT")]),s._v("。")])]),s._v(" "),t("li",[t("p",[s._v("encoding:数据编码。 看到 "),t("RouterLink",{attrs:{to:"/zh/UserGuide/V0.8.x/2-Concept Key Concepts and Terminology/3-Encoding.html"}},[s._v("章节 2-3")]),s._v(".")],1)]),s._v(" "),t("li",[t("p",[s._v("compression:数据压缩。 现在支持"),t("code",[s._v("UNCOMPRESSED")]),s._v("和"),t("code",[s._v("SNAPPY")]),s._v("。")])]),s._v(" "),t("li",[t("p",[s._v("props:特殊数据类型的属性,例如"),t("code",[s._v("FLOAT")]),s._v("和"),t("code",[s._v("DOUBLE")]),s._v("的"),t("code",[s._v("max_point_number")]),s._v(","),t("code",[s._v("TEXT")]),s._v("的"),t("code",[s._v("max_string_length")]),s._v("。 用作字符串对,例如(“ max_point_number”,“ 3”)。")])])]),s._v(" "),t("blockquote",[t("p",[s._v("**注意:**尽管一个度量名称可以在多个deltaObject中使用,但是不能更改属性。 即 不允许多次使用不同的类型或编码添加一个测量名称。\n这是一个不好的例子:")])]),s._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[s._v(' // 测量值“ sensor_1”为浮点型\n addMeasurement(new MeasurementSchema("sensor_1", TSDataType.FLOAT, TSEncoding.RLE));\n \n // 此调用将引发WriteProcessException异常\n addMeasurement(new MeasurementSchema("sensor_1", TSDataType.INT32, TSEncoding.RLE));\n')])])])]),s._v(" "),t("li",[t("p",[s._v("第三,连续插入和写入数据。")]),s._v(" "),t("p",[s._v("使用此接口可以创建新的"),t("code",[s._v("TSRecord")]),s._v("(时间戳和设备对)。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public TSRecord(long timestamp, String deviceId)\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("然后创建一个"),t("code",[s._v("DataPoint")]),s._v("(一个测量值和一个值对),并使用"),t("code",[s._v("addTuple")]),s._v("方法将"),t("code",[s._v("DataPoint")]),s._v("添加到正确的TsRecord。")]),s._v(" "),t("p",[s._v("用这种方法写")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public void write(TSRecord record) throws IOException, WriteProcessException\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("最后,调用"),t("code",[s._v("close")]),s._v("完成此编写过程。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public void close() throws IOException\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])]),s._v(" "),t("h3",{attrs:{id:"编写tsfile的示例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#编写tsfile的示例"}},[s._v("#")]),s._v(" 编写TsFile的示例")]),s._v(" "),t("p",[s._v("您应该将TsFile安装到本地Maven存储库。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("mvn clean install -pl tsfile -am -DskipTests\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("可以在以下位置找到更详尽的示例"),t("code",[s._v("/tsfile/example/src/main/java/org/apache/iotdb/tsfile/TsFileWrite.java")])]),s._v(" "),t("div",{staticClass:"language-java line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-java"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("package")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("java"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("io"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("File")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("file"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("metadata"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("enums"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSDataType")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("file"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("metadata"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("enums"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSEncoding")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("write"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TsFileWriter")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("write"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("record"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSRecord")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("write"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("record"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("datapoint"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("DataPoint")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("write"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("record"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("datapoint"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("FloatDataPoint")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("write"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("record"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("datapoint"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("IntDataPoint")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("write"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("schema"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("MeasurementSchema")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n * 将数据写入TsFile的示例\n * 它使用以下接口:\n * 公共无效addMeasurement(MeasurementSchema MeasurementSchema)抛出WriteProcessException\n */")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("public")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("class")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TsFileWrite")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("public")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("static")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("main")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("String")]),s._v(" args"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("try")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("String")]),s._v(" path "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test.tsfile"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("File")]),s._v(" f "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("File")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("path"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("f"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("exists")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n f"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("delete")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TsFileWriter")]),s._v(" tsFileWriter "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TsFileWriter")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("f"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 将度量添加到文件模式")]),s._v("\n tsFileWriter\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("addMeasurement")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("MeasurementSchema")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sensor_1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSDataType")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("INT64"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSEncoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("RLE"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n tsFileWriter\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("addMeasurement")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("MeasurementSchema")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sensor_2"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSDataType")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("INT64"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSEncoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("RLE"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n tsFileWriter\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("addMeasurement")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("MeasurementSchema")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sensor_3"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSDataType")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("INT64"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSEncoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("RLE"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 构造TSRecord")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSRecord")]),s._v(" tsRecord "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TSRecord")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"device_1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("DataPoint")]),s._v(" dPoint1 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("LongDataPoint")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sensor_1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("DataPoint")]),s._v(" dPoint2 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("LongDataPoint")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sensor_2"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("DataPoint")]),s._v(" dPoint3 "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("LongDataPoint")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sensor_3"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n tsRecord"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("addTuple")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("dPoint1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n tsRecord"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("addTuple")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("dPoint2"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n tsRecord"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("addTuple")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("dPoint3"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 写TSRecord")]),s._v("\n tsFileWriter"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("write")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("tsRecord"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 关闭TsFile")]),s._v("\n tsFileWriter"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("close")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("catch")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Throwable")]),s._v(" e"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n e"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("printStackTrace")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("System")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("out"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("println")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("e"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("getMessage")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br"),t("span",{staticClass:"line-number"},[s._v("54")]),t("br"),t("span",{staticClass:"line-number"},[s._v("55")]),t("br"),t("span",{staticClass:"line-number"},[s._v("56")]),t("br")])]),t("h2",{attrs:{id:"读取tsfile的接口"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#读取tsfile的接口"}},[s._v("#")]),s._v(" 读取TsFile的接口")]),s._v(" "),t("h3",{attrs:{id:"开始之前"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#开始之前"}},[s._v("#")]),s._v(" 开始之前")]),s._v(" "),t("p",[s._v("“时间序列数据”部分中的时间序列数据集在此用于本节的具体介绍。 下表中显示的集合包含一个名为“ device \\ _1”的deltaObject和三个名为“ sensor \\ _1”,“ sensor \\ _2”和“ sensor \\ _3”的测量值。 并简化了测量以进行简单说明,每个仅包含4个时间值对。")]),s._v(" "),t("table",[t("thead",[t("tr",[t("th",{staticStyle:{"text-align":"center"}},[s._v("关系")]),s._v(" "),t("th",{staticStyle:{"text-align":"center"}},[s._v("描述")])])]),s._v(" "),t("tbody",[t("tr",[t("td",{staticStyle:{"text-align":"center"}},[s._v("TimeFilter.eq(value)")]),s._v(" "),t("td",{staticStyle:{"text-align":"center"}},[s._v("选择等于值的时间")])]),s._v(" "),t("tr",[t("td",{staticStyle:{"text-align":"center"}},[s._v("TimeFilter.lt(value)")]),s._v(" "),t("td",{staticStyle:{"text-align":"center"}},[s._v("选择小于时间的时间")])]),s._v(" "),t("tr",[t("td",{staticStyle:{"text-align":"center"}},[s._v("TimeFilter.gt(value)")]),s._v(" "),t("td",{staticStyle:{"text-align":"center"}},[s._v("选择大于值的时间")])]),s._v(" "),t("tr",[t("td",{staticStyle:{"text-align":"center"}},[s._v("TimeFilter.ltEq(value)")]),s._v(" "),t("td",{staticStyle:{"text-align":"center"}},[s._v("选择小于或等于该值的时间")])]),s._v(" "),t("tr",[t("td",{staticStyle:{"text-align":"center"}},[s._v("TimeFilter.gtEq(value)")]),s._v(" "),t("td",{staticStyle:{"text-align":"center"}},[s._v("选择大于或等于该值的时间")])]),s._v(" "),t("tr",[t("td",{staticStyle:{"text-align":"center"}},[s._v("TimeFilter.notEq(value)")]),s._v(" "),t("td",{staticStyle:{"text-align":"center"}},[s._v("选择不等于该值的时间")])]),s._v(" "),t("tr",[t("td",{staticStyle:{"text-align":"center"}},[s._v("TimeFilter.not(TimeFilter)")]),s._v(" "),t("td",{staticStyle:{"text-align":"center"}},[s._v("选择不满足另一个TimeFilter的时间")])])])]),s._v(" "),t("h3",{attrs:{id:"路径定义"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#路径定义"}},[s._v("#")]),s._v(" 路径定义")]),s._v(" "),t("p",[s._v("路径是用点分隔的字符串,该字符串在TsFile中唯一标识时间序列,例如“ root.area_1.device_1.sensor_1”。\n最后一部分“ sensor_1”称为“ measurementId”,其余部分“ root.area_1.device_1”称为deviceId。\n如上所述,不同设备中的相同测量具有相同的数据类型和编码,并且设备也是唯一的。")]),s._v(" "),t("p",[s._v("在读取接口中,参数"),t("code",[s._v("paths")]),s._v("指示要选择的测量。")]),s._v(" "),t("p",[s._v("路径实例可以通过"),t("code",[s._v("Path")]),s._v("类很容易地构造。 例如:")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v('Path p = new Path("device_1.sensor_1");\n')])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("我们将传递路径的ArrayList进行最终查询,以支持多个路径。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v('List<Path> paths = new ArrayList<Path>();\npaths.add(new Path("device_1.sensor_1"));\npaths.add(new Path("device_1.sensor_3"));\n')])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br")])]),t("blockquote",[t("p",[s._v("**注意:**在构造路径时,参数的格式应为点分隔的字符串,最后一部分将被识别为MeasurementId,而其余部分将被识别为deviceId。")])]),s._v(" "),t("h3",{attrs:{id:"过滤器的定义"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#过滤器的定义"}},[s._v("#")]),s._v(" 过滤器的定义")]),s._v(" "),t("h4",{attrs:{id:"使用场景"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#使用场景"}},[s._v("#")]),s._v(" 使用场景")]),s._v(" "),t("p",[s._v("在TsFile读取过程中使用筛选器来选择满足一个或多个给定条件的数据。")]),s._v(" "),t("h4",{attrs:{id:"iexpression"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#iexpression"}},[s._v("#")]),s._v(" IExpression")]),s._v(" "),t("p",[t("code",[s._v("IExpression")]),s._v("是一个过滤器表达式接口,它将传递给我们的最终查询调用。\n我们创建一个或多个过滤器表达式,并可以使用二进制过滤器运算符将它们链接到最终表达式。")]),s._v(" "),t("ul",[t("li",[t("p",[t("strong",[s._v("创建一个过滤器表达式")])]),s._v(" "),t("p",[s._v("有两种类型的过滤器。")]),s._v(" "),t("ul",[t("li",[s._v("时间过滤器: 时间序列数据中时间的过滤器。"),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter);\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v(" \t使用以下关系获取`TimeFilter`对象(值是一个long int变量)。\n\n| 关系 | 描述 |\n| :------------------------: | :------------------------------: |\n| TimeFilter.eq(value) | 选择等于值的时间 |\n| TimeFilter.lt(value) | 选择小于时间的时间 |\n| TimeFilter.gt(value) | 选择大于值的时间 |\n| TimeFilter.ltEq(value) | 选择小于或等于该值的时间 |\n| TimeFilter.gtEq(value) | 选择大于或等于该值的时间 |\n| TimeFilter.notEq(value) | 选择不等于该值的时间 |\n| TimeFilter.not(TimeFilter) | 选择不满足另一个TimeFilter的时间 |\n\n* ValueFilter:时间序列数据中`value`的过滤器。\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br")])]),t("p",[s._v("IExpression valueFilterExpr = new SingleSeriesExpression(Path, ValueFilter);")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("​\t`ValueFilter`的用法与使用`TimeFilter`的用法相同,只是要确保值的类型等于测量值(在路径中定义)。\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])])]),s._v(" "),t("li",[t("p",[t("strong",[s._v("二元滤波器运算符")])]),s._v(" "),t("p",[s._v("二进制过滤器运算符可用于链接两个单个表达式。")]),s._v(" "),t("ul",[t("li",[s._v("BinaryExpression.and(Expression,Expression):选择两个表达式都满足的值。")]),s._v(" "),t("li",[s._v("BinaryExpression.or(Expression,Expression):选择至少满足一个表达式的值。")])])])]),s._v(" "),t("h4",{attrs:{id:"过滤器表达式示例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#过滤器表达式示例"}},[s._v("#")]),s._v(" 过滤器表达式示例")]),s._v(" "),t("ul",[t("li",[t("p",[t("strong",[s._v("TimeFilterExpression示例")])]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.eq(15)); // series time = 15\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.ltEq(15)); // series time <= 15\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.lt(15)); // series time < 15\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.gtEq(15)); // series time >= 15\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.notEq(15)); // series time != 15\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("IExpression timeFilterExpr = BinaryExpression.and(new GlobalTimeExpression(TimeFilter.gtEq(15L)),\n new GlobalTimeExpression(TimeFilter.lt(25L))); // 15 <= series time < 25\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("IExpression timeFilterExpr = BinaryExpression.or(new GlobalTimeExpression(TimeFilter.gtEq(15L)),\n new GlobalTimeExpression(TimeFilter.lt(25L))); // series time >= 15 or series time < 25\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])])])]),s._v(" "),t("h3",{attrs:{id:"读取界面"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#读取界面"}},[s._v("#")]),s._v(" 读取界面")]),s._v(" "),t("p",[s._v("首先,我们打开TsFile并从文件路径字符串"),t("code",[s._v("path")]),s._v("获取一个"),t("code",[s._v("ReadOnlyTsFile")]),s._v("实例。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("TsFileSequenceReader reader = new TsFileSequenceReader(path);\n \nReadOnlyTsFile readTsFile = new ReadOnlyTsFile(reader);\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br")])]),t("p",[s._v("接下来,我们准备路径数组和查询表达式,然后通过此接口获取最终的"),t("code",[s._v("QueryExpression")]),s._v("对象:")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("QueryExpression queryExpression = QueryExpression.create(paths, statement);\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("ReadOnlyTsFile类具有两个"),t("code",[s._v("query")]),s._v("方法来执行查询。")]),s._v(" "),t("ul",[t("li",[t("p",[t("strong",[s._v("方法1")])]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public QueryDataSet query(QueryExpression queryExpression) throws IOException\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[t("strong",[s._v("方法二")])]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("public QueryDataSet query(QueryExpression queryExpression, long partitionStartOffset, long partitionEndOffset) throws IOException\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("此方法设计用于高级应用程序,例如TsFile-Spark连接器。")]),s._v(" "),t("ul",[t("li",[t("p",[t("strong",[s._v("参数")]),s._v(": 对于方法2,添加了两个附加参数以支持部分查询:")]),s._v(" "),t("ul",[t("li",[t("code",[s._v("partitionStartOffset")]),s._v(":TsFile的起始偏移量")]),s._v(" "),t("li",[t("code",[s._v("partitionEndOffset")]),s._v(": TsFile的结束偏移量")])]),s._v(" "),t("blockquote",[t("p",[s._v("**什么是部分查询?**在某些分布式文件系统(例如HDFS)中,文件被分成几个部分,这些部分称为“块”,并存储在不同的节点中。 在涉及的每个节点中并行执行查询可以提高效率。 因此,需要部分查询。 Paritial Query只选择存储在零件中的结果,该零件由TsFile的"),t("code",[s._v("QueryConstant.PARTITION_START_OFFSET")]),s._v("和"),t("code",[s._v("QueryConstant.PARTITION_END_OFFSET")]),s._v("分开。")])])])])])]),s._v(" "),t("h3",{attrs:{id:"querydataset接口"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#querydataset接口"}},[s._v("#")]),s._v(" QueryDataset接口")]),s._v(" "),t("p",[s._v("上面执行的查询将返回一个"),t("code",[s._v("QueryDataset")]),s._v("对象。")]),s._v(" "),t("p",[s._v("这是对用户有用的界面。")]),s._v(" "),t("ul",[t("li",[t("p",[t("code",[s._v("bool hasNext();")])]),s._v(" "),t("p",[s._v("如果此数据集仍包含元素,则返回true。")])]),s._v(" "),t("li",[t("p",[t("code",[s._v("List<Path> getPaths()")])]),s._v(" "),t("p",[s._v("获取此数据集中的路径。")])]),s._v(" "),t("li",[t("p",[t("code",[s._v("List<TSDataType> getDataTypes();")])]),s._v(" "),t("p",[s._v("获取数据类型。 "),t("code",[s._v("TSDataType")]),s._v("类是一个枚举类,值将是以下值之一:")]),s._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[s._v(" BOOLEAN,\n INT32,\n INT64,\n FLOAT,\n DOUBLE,\n TEXT;\n")])])])]),s._v(" "),t("li",[t("p",[t("code",[s._v("RowRecord next() throws IOException;")])]),s._v(" "),t("p",[s._v("获取下一条记录。")]),s._v(" "),t("p",[t("code",[s._v("RowRecord")]),s._v("类由一个"),t("code",[s._v("long")]),s._v("时间戳和一个"),t("code",[s._v("List <Field>")]),s._v("组成,用于不同传感器中的数据,我们可以使用两种getter方法来获取它们。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("long getTimestamp();\nList<Field> getFields();\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("p",[s._v("要从一个字段获取数据,请使用以下方法:")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("TSDataType getDataType();\nObject getObjectValue();\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])])])]),s._v(" "),t("h3",{attrs:{id:"读取现有tsfile的示例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#读取现有tsfile的示例"}},[s._v("#")]),s._v(" 读取现有TsFile的示例")]),s._v(" "),t("p",[s._v("您应该将TsFile安装到本地Maven存储库。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("mvn clean install -pl tsfile -am -DskipTests\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("有关查询语句的更详尽示例,请参见:\n"),t("code",[s._v("/tsfile/example/src/main/java/org/apache/iotdb/tsfile/TsFileRead.java")])]),s._v(" "),t("div",{staticClass:"language-java line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-java"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("package")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("java"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("io"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("IOException")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("java"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("util"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ArrayList")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ReadOnlyTsFile")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TsFileSequenceReader")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("common"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Path")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("expression"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("IExpression")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("expression"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("QueryExpression")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("expression"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("impl"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("BinaryExpression")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("expression"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("impl"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("GlobalTimeExpression")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("expression"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("impl"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("SingleSeriesExpression")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("filter"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TimeFilter")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("filter"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ValueFilter")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token import"}},[t("span",{pre:!0,attrs:{class:"token namespace"}},[s._v("org"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("apache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("tsfile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("read"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("query"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("dataset"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")])]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("QueryDataSet")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n * 该类将显示如何读取名为“ test.ts文件”的Ts文件文件。\n * TsFile文件“ test.tsfile”是从类TsFileWrite生成的。\n * 运行TsFileWrite首先生成test.tsfile\n */")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("public")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("class")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TsFileRead")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("private")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("static")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("queryAndPrint")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ArrayList")]),t("span",{pre:!0,attrs:{class:"token generics"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Path")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v(" paths"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ReadOnlyTsFile")]),s._v(" readTsFile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("IExpression")]),s._v(" statement"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("throws")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("IOException")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("QueryExpression")]),s._v(" queryExpression "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("QueryExpression")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("create")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("paths"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" statement"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("QueryDataSet")]),s._v(" queryDataSet "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" readTsFile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("query")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("queryExpression"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("queryDataSet"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("hasNext")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("System")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("out"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("println")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("queryDataSet"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("next")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("System")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("out"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("println")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"------------"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("public")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("static")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("main")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("String")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" args"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("throws")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("IOException")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 文件路径")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("String")]),s._v(" path "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test.tsfile"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 创建阅读器并获取readTsFile接口")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TsFileSequenceReader")]),s._v(" reader "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("TsFileSequenceReader")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("path"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ReadOnlyTsFile")]),s._v(" readTsFile "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ReadOnlyTsFile")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("reader"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 使用这些路径(所有传感器)进行所有查询")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ArrayList")]),t("span",{pre:!0,attrs:{class:"token generics"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Path")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v(" paths "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ArrayList")]),t("span",{pre:!0,attrs:{class:"token generics"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n paths"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("add")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Path")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"device_1.sensor_1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n paths"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("add")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Path")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"device_1.sensor_2"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n paths"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("add")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Path")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"device_1.sensor_3"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 没有查询语句")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("queryAndPrint")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("paths"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" readTsFile"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("null")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 离开时关闭阅读器")]),s._v("\n reader"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("close")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br")])]),t("h2",{attrs:{id:"用户指定的配置文件路径"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#用户指定的配置文件路径"}},[s._v("#")]),s._v(" 用户指定的配置文件路径")]),s._v(" "),t("p",[s._v("默认配置文件"),t("code",[s._v("tsfile-format.properties.template")]),s._v("位于"),t("code",[s._v("/ tsfile / src / main / resources")]),s._v("目录中。 如果要使用自己的路径,则可以:")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v('System.setProperty(TsFileConstant.TSFILE_CONF, "your config file path");\n')])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("然后调用:")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("TSFileConfig config = TSFileDescriptor.getInstance().getConfig();\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])],1)}),[],!1,null,null,null);t.default=e.exports}}]);