blob: c3a69e5ac57b999f9beb9c3fb5bcb253109f0601 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title> </title>
<meta name="generator" content="VuePress 1.7.1">
<link rel="icon" href="/favicon.ico">
<meta name="description" content=" ">
<meta name="Description" content="Apache IoTDB: Time Series Database for IoT">
<meta name="Keywords" content="TSDB, time series, time series database, IoTDB, IoT database, IoT data management,时序数据库, 时间序列管理, IoTDB, 物联网数据库, 实时数据库, 物联网数据管理, 物联网数据">
<meta name="baidu-site-verification" content="wfKETzB3OT">
<meta name="google-site-verification" content="mZWAoRY0yj_HAr-s47zHCGHzx5Ju-RVm5wDbPnwQYFo">
<link rel="preload" href="/assets/css/0.styles.679f71b6.css" as="style"><link rel="preload" href="/assets/js/app.ee472f44.js" as="script"><link rel="preload" href="/assets/js/3.49f0f20a.js" as="script"><link rel="preload" href="/assets/js/64.3a046b10.js" as="script"><link rel="prefetch" href="/assets/js/10.a9e4399a.js"><link rel="prefetch" href="/assets/js/100.68c72120.js"><link rel="prefetch" href="/assets/js/101.b6fa0a59.js"><link rel="prefetch" href="/assets/js/102.a64e2bb2.js"><link rel="prefetch" href="/assets/js/103.3e232964.js"><link rel="prefetch" href="/assets/js/104.12a0c146.js"><link rel="prefetch" href="/assets/js/105.c82addea.js"><link rel="prefetch" href="/assets/js/106.d95539e1.js"><link rel="prefetch" href="/assets/js/107.3a8e4204.js"><link rel="prefetch" href="/assets/js/108.445910dc.js"><link rel="prefetch" href="/assets/js/109.e592a10a.js"><link rel="prefetch" href="/assets/js/11.1a825151.js"><link rel="prefetch" href="/assets/js/110.f2ff7f26.js"><link rel="prefetch" href="/assets/js/111.ce7b4bb8.js"><link rel="prefetch" href="/assets/js/112.c0fb665c.js"><link rel="prefetch" href="/assets/js/113.27feecaf.js"><link rel="prefetch" href="/assets/js/114.4610bfa2.js"><link rel="prefetch" href="/assets/js/115.0857c1d6.js"><link rel="prefetch" href="/assets/js/116.530d568b.js"><link rel="prefetch" href="/assets/js/117.9deade83.js"><link rel="prefetch" href="/assets/js/118.cbb62265.js"><link rel="prefetch" href="/assets/js/119.8822d43b.js"><link rel="prefetch" href="/assets/js/12.4679de68.js"><link rel="prefetch" href="/assets/js/120.355ddd53.js"><link rel="prefetch" href="/assets/js/121.94505f4a.js"><link rel="prefetch" href="/assets/js/122.6c825584.js"><link rel="prefetch" href="/assets/js/123.d2965d60.js"><link rel="prefetch" href="/assets/js/124.bb17af3e.js"><link rel="prefetch" href="/assets/js/125.a523475b.js"><link rel="prefetch" href="/assets/js/126.309eb2a0.js"><link rel="prefetch" href="/assets/js/127.31f131d5.js"><link rel="prefetch" href="/assets/js/128.d6961094.js"><link rel="prefetch" href="/assets/js/129.9f80c586.js"><link rel="prefetch" href="/assets/js/13.821d2576.js"><link rel="prefetch" href="/assets/js/130.8b3034e2.js"><link rel="prefetch" href="/assets/js/131.5c952a0b.js"><link rel="prefetch" href="/assets/js/132.9b312915.js"><link rel="prefetch" href="/assets/js/133.229545d4.js"><link rel="prefetch" href="/assets/js/134.6ef84d4d.js"><link rel="prefetch" href="/assets/js/135.63dcccc3.js"><link rel="prefetch" href="/assets/js/136.693bbb9e.js"><link rel="prefetch" href="/assets/js/137.065787a2.js"><link rel="prefetch" href="/assets/js/138.199d56aa.js"><link rel="prefetch" href="/assets/js/139.93368911.js"><link rel="prefetch" href="/assets/js/14.f2409887.js"><link rel="prefetch" href="/assets/js/140.cb3339d6.js"><link rel="prefetch" href="/assets/js/141.0ffa040d.js"><link rel="prefetch" href="/assets/js/142.c3e197d4.js"><link rel="prefetch" href="/assets/js/143.9e4dc6ae.js"><link rel="prefetch" href="/assets/js/144.27249482.js"><link rel="prefetch" href="/assets/js/145.f9305e04.js"><link rel="prefetch" href="/assets/js/146.a953796c.js"><link rel="prefetch" href="/assets/js/147.5ffa8a4e.js"><link rel="prefetch" href="/assets/js/148.5f5c0ad8.js"><link rel="prefetch" href="/assets/js/149.6690aae1.js"><link rel="prefetch" href="/assets/js/15.9354febe.js"><link rel="prefetch" href="/assets/js/150.36dae2d3.js"><link rel="prefetch" href="/assets/js/151.2ca29374.js"><link rel="prefetch" href="/assets/js/152.fceb9b61.js"><link rel="prefetch" href="/assets/js/153.93489dbc.js"><link rel="prefetch" href="/assets/js/154.d9c14ff8.js"><link rel="prefetch" href="/assets/js/155.b6eec7f7.js"><link rel="prefetch" href="/assets/js/156.8718f8bc.js"><link rel="prefetch" href="/assets/js/157.8484231e.js"><link rel="prefetch" href="/assets/js/158.d1755131.js"><link rel="prefetch" href="/assets/js/159.8a8be7d5.js"><link rel="prefetch" href="/assets/js/16.590590ab.js"><link rel="prefetch" href="/assets/js/160.67e2efd2.js"><link rel="prefetch" href="/assets/js/161.0e22ffff.js"><link rel="prefetch" href="/assets/js/162.f47c5fdc.js"><link rel="prefetch" href="/assets/js/163.da74b426.js"><link rel="prefetch" href="/assets/js/164.f88f06d5.js"><link rel="prefetch" href="/assets/js/165.9a1b5b41.js"><link rel="prefetch" href="/assets/js/166.8832a7a4.js"><link rel="prefetch" href="/assets/js/167.ff58fb1f.js"><link rel="prefetch" href="/assets/js/168.9a351c30.js"><link rel="prefetch" href="/assets/js/169.23c06c42.js"><link rel="prefetch" href="/assets/js/17.4cb5664d.js"><link rel="prefetch" href="/assets/js/170.ea0af6cf.js"><link rel="prefetch" href="/assets/js/171.e11e1bb7.js"><link rel="prefetch" href="/assets/js/172.273f4d56.js"><link rel="prefetch" href="/assets/js/173.fca03089.js"><link rel="prefetch" href="/assets/js/174.434334ff.js"><link rel="prefetch" href="/assets/js/175.a8acb6b2.js"><link rel="prefetch" href="/assets/js/176.a1c55473.js"><link rel="prefetch" href="/assets/js/177.ebb38cec.js"><link rel="prefetch" href="/assets/js/178.79b8a327.js"><link rel="prefetch" href="/assets/js/179.6319af14.js"><link rel="prefetch" href="/assets/js/18.f5fe433e.js"><link rel="prefetch" href="/assets/js/180.28a1d783.js"><link rel="prefetch" href="/assets/js/181.a29f39c5.js"><link rel="prefetch" href="/assets/js/182.9f3d9c76.js"><link rel="prefetch" href="/assets/js/183.338ae9a8.js"><link rel="prefetch" href="/assets/js/184.18c28159.js"><link rel="prefetch" href="/assets/js/185.05381100.js"><link rel="prefetch" href="/assets/js/186.ce9412eb.js"><link rel="prefetch" href="/assets/js/187.30a80942.js"><link rel="prefetch" href="/assets/js/188.5a77f986.js"><link rel="prefetch" href="/assets/js/189.f34dc967.js"><link rel="prefetch" href="/assets/js/19.d02f7224.js"><link rel="prefetch" href="/assets/js/190.d9762047.js"><link rel="prefetch" href="/assets/js/191.8c52689f.js"><link rel="prefetch" href="/assets/js/192.10ae9786.js"><link rel="prefetch" href="/assets/js/193.4a83ff5f.js"><link rel="prefetch" href="/assets/js/194.1d9f888b.js"><link rel="prefetch" href="/assets/js/195.ac95d80c.js"><link rel="prefetch" href="/assets/js/196.305a7cc8.js"><link rel="prefetch" href="/assets/js/197.3950b155.js"><link rel="prefetch" href="/assets/js/198.60367e76.js"><link rel="prefetch" href="/assets/js/199.a5eec1cf.js"><link rel="prefetch" href="/assets/js/20.02900ba2.js"><link rel="prefetch" href="/assets/js/200.7b42f970.js"><link rel="prefetch" href="/assets/js/201.c176b7b8.js"><link rel="prefetch" href="/assets/js/202.eb6989b5.js"><link rel="prefetch" href="/assets/js/203.77522ed7.js"><link rel="prefetch" href="/assets/js/204.d5e4c11b.js"><link rel="prefetch" href="/assets/js/205.b174d51b.js"><link rel="prefetch" href="/assets/js/206.4c489028.js"><link rel="prefetch" href="/assets/js/207.afdf032a.js"><link rel="prefetch" href="/assets/js/208.e5a0bdd5.js"><link rel="prefetch" href="/assets/js/209.67c9cab8.js"><link rel="prefetch" href="/assets/js/21.3b6ef7f6.js"><link rel="prefetch" href="/assets/js/210.99085605.js"><link rel="prefetch" href="/assets/js/211.62045ced.js"><link rel="prefetch" href="/assets/js/212.5d4b9b33.js"><link rel="prefetch" href="/assets/js/213.8d2fc243.js"><link rel="prefetch" href="/assets/js/214.081b8259.js"><link rel="prefetch" href="/assets/js/215.a9c42b7b.js"><link rel="prefetch" href="/assets/js/216.e4177064.js"><link rel="prefetch" href="/assets/js/217.00d389be.js"><link rel="prefetch" href="/assets/js/218.53691557.js"><link rel="prefetch" href="/assets/js/219.fce8476d.js"><link rel="prefetch" href="/assets/js/22.ab7a2af8.js"><link rel="prefetch" href="/assets/js/220.8ca717ad.js"><link rel="prefetch" href="/assets/js/221.b774095e.js"><link rel="prefetch" href="/assets/js/222.abb49f0a.js"><link rel="prefetch" href="/assets/js/223.506eb112.js"><link rel="prefetch" href="/assets/js/224.7e33133f.js"><link rel="prefetch" href="/assets/js/225.4443cf9b.js"><link rel="prefetch" href="/assets/js/226.5d64564f.js"><link rel="prefetch" href="/assets/js/227.e647cf42.js"><link rel="prefetch" href="/assets/js/228.7b8e1561.js"><link rel="prefetch" href="/assets/js/229.c6b936b3.js"><link rel="prefetch" href="/assets/js/23.b428286f.js"><link rel="prefetch" href="/assets/js/230.484dfbbc.js"><link rel="prefetch" href="/assets/js/231.04cb07f3.js"><link rel="prefetch" href="/assets/js/232.cb5f7cf4.js"><link rel="prefetch" href="/assets/js/233.fd5563aa.js"><link rel="prefetch" href="/assets/js/234.bf0c8bd7.js"><link rel="prefetch" href="/assets/js/235.c910d0ff.js"><link rel="prefetch" href="/assets/js/236.2fa96a32.js"><link rel="prefetch" href="/assets/js/237.4d40bac8.js"><link rel="prefetch" href="/assets/js/238.8f8a5f39.js"><link rel="prefetch" href="/assets/js/239.8c8e2f64.js"><link rel="prefetch" href="/assets/js/24.a3749d36.js"><link rel="prefetch" href="/assets/js/240.b662bcd8.js"><link rel="prefetch" href="/assets/js/241.04b9e3ed.js"><link rel="prefetch" href="/assets/js/242.bae1b833.js"><link rel="prefetch" href="/assets/js/243.174da90a.js"><link rel="prefetch" href="/assets/js/244.1ad856fc.js"><link rel="prefetch" href="/assets/js/245.a622849c.js"><link rel="prefetch" href="/assets/js/246.dc04cc61.js"><link rel="prefetch" href="/assets/js/247.d9f48a2f.js"><link rel="prefetch" href="/assets/js/248.85018b5a.js"><link rel="prefetch" href="/assets/js/249.6ba9e6c7.js"><link rel="prefetch" href="/assets/js/25.bc6a97e8.js"><link rel="prefetch" href="/assets/js/250.9ca65c13.js"><link rel="prefetch" href="/assets/js/251.8f4abe5e.js"><link rel="prefetch" href="/assets/js/252.cb8b4901.js"><link rel="prefetch" href="/assets/js/253.e43c464a.js"><link rel="prefetch" href="/assets/js/254.bc5748be.js"><link rel="prefetch" href="/assets/js/255.ad9c3e74.js"><link rel="prefetch" href="/assets/js/256.48bf6b1c.js"><link rel="prefetch" href="/assets/js/257.aae9e4a7.js"><link rel="prefetch" href="/assets/js/258.d27a0224.js"><link rel="prefetch" href="/assets/js/259.8b338cff.js"><link rel="prefetch" href="/assets/js/26.81ae73cb.js"><link rel="prefetch" href="/assets/js/260.9302e533.js"><link rel="prefetch" href="/assets/js/261.ea1ed48a.js"><link rel="prefetch" href="/assets/js/262.08d81cca.js"><link rel="prefetch" href="/assets/js/263.c2598230.js"><link rel="prefetch" href="/assets/js/264.89fadf4b.js"><link rel="prefetch" href="/assets/js/265.9e7e3b87.js"><link rel="prefetch" href="/assets/js/266.63098760.js"><link rel="prefetch" href="/assets/js/267.df285aaf.js"><link rel="prefetch" href="/assets/js/268.56ef99a0.js"><link rel="prefetch" href="/assets/js/269.86c3bd00.js"><link rel="prefetch" href="/assets/js/27.5361988c.js"><link rel="prefetch" href="/assets/js/270.69d8c77d.js"><link rel="prefetch" href="/assets/js/271.49550e05.js"><link rel="prefetch" href="/assets/js/272.bf7fe25a.js"><link rel="prefetch" href="/assets/js/273.bac87430.js"><link rel="prefetch" href="/assets/js/274.1a5b6778.js"><link rel="prefetch" href="/assets/js/275.59d1fe0c.js"><link rel="prefetch" href="/assets/js/276.c21f1bb7.js"><link rel="prefetch" href="/assets/js/277.3416c059.js"><link rel="prefetch" href="/assets/js/278.1e47cbc9.js"><link rel="prefetch" href="/assets/js/279.a285ca6b.js"><link rel="prefetch" href="/assets/js/28.902cf242.js"><link rel="prefetch" href="/assets/js/280.b1cfd58b.js"><link rel="prefetch" href="/assets/js/281.5014dd8c.js"><link rel="prefetch" href="/assets/js/282.f46c3f5f.js"><link rel="prefetch" href="/assets/js/283.c8fa806b.js"><link rel="prefetch" href="/assets/js/284.1bca3237.js"><link rel="prefetch" href="/assets/js/285.ca102a1f.js"><link rel="prefetch" href="/assets/js/286.312b549d.js"><link rel="prefetch" href="/assets/js/287.56daf71d.js"><link rel="prefetch" href="/assets/js/288.4d6ee237.js"><link rel="prefetch" href="/assets/js/289.8990a52d.js"><link rel="prefetch" href="/assets/js/29.8878a84b.js"><link rel="prefetch" href="/assets/js/290.79c4d4bb.js"><link rel="prefetch" href="/assets/js/291.e39a8f59.js"><link rel="prefetch" href="/assets/js/292.09b1dbf3.js"><link rel="prefetch" href="/assets/js/293.c11758cc.js"><link rel="prefetch" href="/assets/js/294.efe1c620.js"><link rel="prefetch" href="/assets/js/295.9a4ce682.js"><link rel="prefetch" href="/assets/js/296.5d55e2b4.js"><link rel="prefetch" href="/assets/js/297.0c74b494.js"><link rel="prefetch" href="/assets/js/298.61015025.js"><link rel="prefetch" href="/assets/js/299.95b2a709.js"><link rel="prefetch" href="/assets/js/30.144a5c6c.js"><link rel="prefetch" href="/assets/js/300.1ded6f5a.js"><link rel="prefetch" href="/assets/js/301.0c60ca57.js"><link rel="prefetch" href="/assets/js/302.a4e4ce29.js"><link rel="prefetch" href="/assets/js/303.f51290d8.js"><link rel="prefetch" href="/assets/js/304.5b9d354a.js"><link rel="prefetch" href="/assets/js/305.4fc3fa36.js"><link rel="prefetch" href="/assets/js/306.d2ccf3d8.js"><link rel="prefetch" href="/assets/js/307.137ddc6c.js"><link rel="prefetch" href="/assets/js/308.d093842e.js"><link rel="prefetch" href="/assets/js/309.8d85e9c5.js"><link rel="prefetch" href="/assets/js/31.03034f21.js"><link rel="prefetch" href="/assets/js/310.610cadf2.js"><link rel="prefetch" href="/assets/js/311.3f9bc269.js"><link rel="prefetch" href="/assets/js/312.ac085561.js"><link rel="prefetch" href="/assets/js/313.39e131a4.js"><link rel="prefetch" href="/assets/js/314.62ae7afd.js"><link rel="prefetch" href="/assets/js/315.312dd0ad.js"><link rel="prefetch" href="/assets/js/316.3daa3b97.js"><link rel="prefetch" href="/assets/js/317.385cce00.js"><link rel="prefetch" href="/assets/js/318.6e75f908.js"><link rel="prefetch" href="/assets/js/319.4a8516ae.js"><link rel="prefetch" href="/assets/js/32.bad93e79.js"><link rel="prefetch" href="/assets/js/320.e6ea8799.js"><link rel="prefetch" href="/assets/js/321.c192a35e.js"><link rel="prefetch" href="/assets/js/322.c675d3fd.js"><link rel="prefetch" href="/assets/js/323.cf867cd9.js"><link rel="prefetch" href="/assets/js/324.38af9dd2.js"><link rel="prefetch" href="/assets/js/325.dd39b2de.js"><link rel="prefetch" href="/assets/js/326.b3197783.js"><link rel="prefetch" href="/assets/js/327.7ab3256f.js"><link rel="prefetch" href="/assets/js/328.a51703c6.js"><link rel="prefetch" href="/assets/js/329.d4f2f214.js"><link rel="prefetch" href="/assets/js/33.00e7d6b5.js"><link rel="prefetch" href="/assets/js/330.1fb7bbad.js"><link rel="prefetch" href="/assets/js/331.52605dbf.js"><link rel="prefetch" href="/assets/js/332.58cff2f4.js"><link rel="prefetch" href="/assets/js/333.fa7136ab.js"><link rel="prefetch" href="/assets/js/334.0de0062b.js"><link rel="prefetch" href="/assets/js/335.a5e18bb9.js"><link rel="prefetch" href="/assets/js/336.448ec9fa.js"><link rel="prefetch" href="/assets/js/337.c877f6df.js"><link rel="prefetch" href="/assets/js/338.e071e415.js"><link rel="prefetch" href="/assets/js/339.194f47f4.js"><link rel="prefetch" href="/assets/js/34.44ac5494.js"><link rel="prefetch" href="/assets/js/340.5755d00b.js"><link rel="prefetch" href="/assets/js/341.070a9aed.js"><link rel="prefetch" href="/assets/js/342.35edcb5e.js"><link rel="prefetch" href="/assets/js/343.a86abe3e.js"><link rel="prefetch" href="/assets/js/344.22456a86.js"><link rel="prefetch" href="/assets/js/345.054131fa.js"><link rel="prefetch" href="/assets/js/346.d850e5ce.js"><link rel="prefetch" href="/assets/js/347.7b8936a1.js"><link rel="prefetch" href="/assets/js/348.5ee2b670.js"><link rel="prefetch" href="/assets/js/349.f37573c7.js"><link rel="prefetch" href="/assets/js/35.7f32ce73.js"><link rel="prefetch" href="/assets/js/350.312ee288.js"><link rel="prefetch" href="/assets/js/351.aabc93dc.js"><link rel="prefetch" href="/assets/js/352.99aa4418.js"><link rel="prefetch" href="/assets/js/353.9c90d422.js"><link rel="prefetch" href="/assets/js/354.8a7c72b5.js"><link rel="prefetch" href="/assets/js/355.1008fd17.js"><link rel="prefetch" href="/assets/js/356.546f7242.js"><link rel="prefetch" href="/assets/js/357.3f84c383.js"><link rel="prefetch" href="/assets/js/358.57ab0f48.js"><link rel="prefetch" href="/assets/js/359.715ee9c0.js"><link rel="prefetch" href="/assets/js/36.d1e9d19f.js"><link rel="prefetch" href="/assets/js/360.92093399.js"><link rel="prefetch" href="/assets/js/361.8e8a2657.js"><link rel="prefetch" href="/assets/js/362.c6796915.js"><link rel="prefetch" href="/assets/js/363.e17af86a.js"><link rel="prefetch" href="/assets/js/364.6274b87c.js"><link rel="prefetch" href="/assets/js/365.211ac0fc.js"><link rel="prefetch" href="/assets/js/366.e5297f1f.js"><link rel="prefetch" href="/assets/js/367.d778a1f0.js"><link rel="prefetch" href="/assets/js/368.d55765fc.js"><link rel="prefetch" href="/assets/js/369.d357817a.js"><link rel="prefetch" href="/assets/js/37.3351af87.js"><link rel="prefetch" href="/assets/js/370.14439cd0.js"><link rel="prefetch" href="/assets/js/371.8f1680c9.js"><link rel="prefetch" href="/assets/js/372.61718293.js"><link rel="prefetch" href="/assets/js/373.4b4647e8.js"><link rel="prefetch" href="/assets/js/374.71d42042.js"><link rel="prefetch" href="/assets/js/375.e4d369f2.js"><link rel="prefetch" href="/assets/js/376.51cd667f.js"><link rel="prefetch" href="/assets/js/377.023da5c6.js"><link rel="prefetch" href="/assets/js/378.726a5f82.js"><link rel="prefetch" href="/assets/js/379.720646dc.js"><link rel="prefetch" href="/assets/js/38.2334aea2.js"><link rel="prefetch" href="/assets/js/380.4d823b98.js"><link rel="prefetch" href="/assets/js/381.bdcccbea.js"><link rel="prefetch" href="/assets/js/382.8cce8942.js"><link rel="prefetch" href="/assets/js/383.cb7d71d3.js"><link rel="prefetch" href="/assets/js/384.bf2af7c5.js"><link rel="prefetch" href="/assets/js/385.1cc639e2.js"><link rel="prefetch" href="/assets/js/386.684b64ab.js"><link rel="prefetch" href="/assets/js/387.e16f4a68.js"><link rel="prefetch" href="/assets/js/388.c9b30f3b.js"><link rel="prefetch" href="/assets/js/389.a8b0f99a.js"><link rel="prefetch" href="/assets/js/39.683bc07a.js"><link rel="prefetch" href="/assets/js/390.b43004ff.js"><link rel="prefetch" href="/assets/js/391.c316049a.js"><link rel="prefetch" href="/assets/js/392.2c559de6.js"><link rel="prefetch" href="/assets/js/393.3055fc0a.js"><link rel="prefetch" href="/assets/js/394.7585ce4c.js"><link rel="prefetch" href="/assets/js/395.6f04bac1.js"><link rel="prefetch" href="/assets/js/396.a6536f32.js"><link rel="prefetch" href="/assets/js/397.e9807e10.js"><link rel="prefetch" href="/assets/js/398.b89dcc8a.js"><link rel="prefetch" href="/assets/js/399.da459f94.js"><link rel="prefetch" href="/assets/js/4.47196852.js"><link rel="prefetch" href="/assets/js/40.f2d861cf.js"><link rel="prefetch" href="/assets/js/400.d8b3b5fd.js"><link rel="prefetch" href="/assets/js/401.4a5b409e.js"><link rel="prefetch" href="/assets/js/402.f2c8802d.js"><link rel="prefetch" href="/assets/js/403.bd98e777.js"><link rel="prefetch" href="/assets/js/404.d2dab4f7.js"><link rel="prefetch" href="/assets/js/405.f83ce379.js"><link rel="prefetch" href="/assets/js/406.69a91345.js"><link rel="prefetch" href="/assets/js/407.3bc1a860.js"><link rel="prefetch" href="/assets/js/408.8b88a93c.js"><link rel="prefetch" href="/assets/js/409.269ef2c9.js"><link rel="prefetch" href="/assets/js/41.79fbb067.js"><link rel="prefetch" href="/assets/js/410.40dc1b76.js"><link rel="prefetch" href="/assets/js/411.6679eea2.js"><link rel="prefetch" href="/assets/js/412.2cdd21ea.js"><link rel="prefetch" href="/assets/js/413.f5418356.js"><link rel="prefetch" href="/assets/js/414.ed9da9ad.js"><link rel="prefetch" href="/assets/js/415.4cd14246.js"><link rel="prefetch" href="/assets/js/416.cd80178b.js"><link rel="prefetch" href="/assets/js/417.d650a560.js"><link rel="prefetch" href="/assets/js/418.ad71cbc7.js"><link rel="prefetch" href="/assets/js/419.8e6c87c0.js"><link rel="prefetch" href="/assets/js/42.101ecd13.js"><link rel="prefetch" href="/assets/js/420.71ec69ad.js"><link rel="prefetch" href="/assets/js/421.91d6b7be.js"><link rel="prefetch" href="/assets/js/422.353f77c5.js"><link rel="prefetch" href="/assets/js/423.60ef06c0.js"><link rel="prefetch" href="/assets/js/424.2e57687c.js"><link rel="prefetch" href="/assets/js/425.9413632b.js"><link rel="prefetch" href="/assets/js/426.e1b29e8b.js"><link rel="prefetch" href="/assets/js/427.ed640a0c.js"><link rel="prefetch" href="/assets/js/428.90a9eecd.js"><link rel="prefetch" href="/assets/js/429.bcc51151.js"><link rel="prefetch" href="/assets/js/43.cf663bf1.js"><link rel="prefetch" href="/assets/js/430.d7a129bf.js"><link rel="prefetch" href="/assets/js/431.6f0b95f4.js"><link rel="prefetch" href="/assets/js/432.c9964a14.js"><link rel="prefetch" href="/assets/js/433.fb0bc3bb.js"><link rel="prefetch" href="/assets/js/434.cbb78303.js"><link rel="prefetch" href="/assets/js/435.7633d592.js"><link rel="prefetch" href="/assets/js/436.dd3d00e6.js"><link rel="prefetch" href="/assets/js/437.40a87461.js"><link rel="prefetch" href="/assets/js/438.640ceed6.js"><link rel="prefetch" href="/assets/js/439.4bc626d3.js"><link rel="prefetch" href="/assets/js/44.0e34047e.js"><link rel="prefetch" href="/assets/js/440.840fff96.js"><link rel="prefetch" href="/assets/js/441.e8e14977.js"><link rel="prefetch" href="/assets/js/442.0f0a17b6.js"><link rel="prefetch" href="/assets/js/443.44c2279e.js"><link rel="prefetch" href="/assets/js/444.6d775f58.js"><link rel="prefetch" href="/assets/js/445.dfec1767.js"><link rel="prefetch" href="/assets/js/446.8282b220.js"><link rel="prefetch" href="/assets/js/447.4b8f1a4c.js"><link rel="prefetch" href="/assets/js/448.03b53f95.js"><link rel="prefetch" href="/assets/js/449.39dea464.js"><link rel="prefetch" href="/assets/js/45.fa02a8c0.js"><link rel="prefetch" href="/assets/js/450.948c5957.js"><link rel="prefetch" href="/assets/js/451.b4e00223.js"><link rel="prefetch" href="/assets/js/452.634de921.js"><link rel="prefetch" href="/assets/js/453.957a3638.js"><link rel="prefetch" href="/assets/js/454.d410cf71.js"><link rel="prefetch" href="/assets/js/455.8c5a2163.js"><link rel="prefetch" href="/assets/js/456.877d611f.js"><link rel="prefetch" href="/assets/js/457.8b24b950.js"><link rel="prefetch" href="/assets/js/458.591d759d.js"><link rel="prefetch" href="/assets/js/459.e114c85b.js"><link rel="prefetch" href="/assets/js/46.3a265755.js"><link rel="prefetch" href="/assets/js/460.1a928144.js"><link rel="prefetch" href="/assets/js/461.2a0384d2.js"><link rel="prefetch" href="/assets/js/462.5c3649e2.js"><link rel="prefetch" href="/assets/js/463.4221227c.js"><link rel="prefetch" href="/assets/js/464.866ac902.js"><link rel="prefetch" href="/assets/js/465.05a96c32.js"><link rel="prefetch" href="/assets/js/466.3efed881.js"><link rel="prefetch" href="/assets/js/467.ddd524e5.js"><link rel="prefetch" href="/assets/js/468.9eebe3d9.js"><link rel="prefetch" href="/assets/js/469.281b53ec.js"><link rel="prefetch" href="/assets/js/47.2d120101.js"><link rel="prefetch" href="/assets/js/470.decda882.js"><link rel="prefetch" href="/assets/js/471.242be672.js"><link rel="prefetch" href="/assets/js/472.da4abae1.js"><link rel="prefetch" href="/assets/js/473.9d64ea3e.js"><link rel="prefetch" href="/assets/js/474.5362ec5b.js"><link rel="prefetch" href="/assets/js/475.6904e585.js"><link rel="prefetch" href="/assets/js/476.c460d90a.js"><link rel="prefetch" href="/assets/js/477.474813fa.js"><link rel="prefetch" href="/assets/js/478.d51e07b1.js"><link rel="prefetch" href="/assets/js/479.f0fa0689.js"><link rel="prefetch" href="/assets/js/48.57af7d42.js"><link rel="prefetch" href="/assets/js/480.8b194bbe.js"><link rel="prefetch" href="/assets/js/481.f2f1aeeb.js"><link rel="prefetch" href="/assets/js/482.6903e11b.js"><link rel="prefetch" href="/assets/js/483.65d04ad9.js"><link rel="prefetch" href="/assets/js/484.51e94629.js"><link rel="prefetch" href="/assets/js/485.415550f4.js"><link rel="prefetch" href="/assets/js/486.d24d0355.js"><link rel="prefetch" href="/assets/js/487.9eea1be6.js"><link rel="prefetch" href="/assets/js/488.eb3d4584.js"><link rel="prefetch" href="/assets/js/489.6f97c453.js"><link rel="prefetch" href="/assets/js/49.3de3d3a7.js"><link rel="prefetch" href="/assets/js/490.e83cd7f7.js"><link rel="prefetch" href="/assets/js/491.4a6acdf2.js"><link rel="prefetch" href="/assets/js/492.e0548c45.js"><link rel="prefetch" href="/assets/js/493.29b0d0b2.js"><link rel="prefetch" href="/assets/js/494.9f66922c.js"><link rel="prefetch" href="/assets/js/495.31a136ac.js"><link rel="prefetch" href="/assets/js/496.4c1f303f.js"><link rel="prefetch" href="/assets/js/497.b03e6c3f.js"><link rel="prefetch" href="/assets/js/498.a8178b3e.js"><link rel="prefetch" href="/assets/js/499.9f38526a.js"><link rel="prefetch" href="/assets/js/5.33db7f08.js"><link rel="prefetch" href="/assets/js/50.27055b53.js"><link rel="prefetch" href="/assets/js/500.262b9103.js"><link rel="prefetch" href="/assets/js/501.c97f4e75.js"><link rel="prefetch" href="/assets/js/502.5d5c5edd.js"><link rel="prefetch" href="/assets/js/503.62a2a01d.js"><link rel="prefetch" href="/assets/js/504.855415b5.js"><link rel="prefetch" href="/assets/js/505.79d4fddb.js"><link rel="prefetch" href="/assets/js/506.f2675378.js"><link rel="prefetch" href="/assets/js/507.7d811dcb.js"><link rel="prefetch" href="/assets/js/508.6c63d710.js"><link rel="prefetch" href="/assets/js/509.a6dbe871.js"><link rel="prefetch" href="/assets/js/51.82e12c0c.js"><link rel="prefetch" href="/assets/js/510.6ba536a4.js"><link rel="prefetch" href="/assets/js/511.47fcc7dd.js"><link rel="prefetch" href="/assets/js/512.f5b2b05c.js"><link rel="prefetch" href="/assets/js/513.d1a9a405.js"><link rel="prefetch" href="/assets/js/514.4768319a.js"><link rel="prefetch" href="/assets/js/515.4a7312b1.js"><link rel="prefetch" href="/assets/js/516.2a75898b.js"><link rel="prefetch" href="/assets/js/517.0734d077.js"><link rel="prefetch" href="/assets/js/518.a0affa56.js"><link rel="prefetch" href="/assets/js/519.3b143230.js"><link rel="prefetch" href="/assets/js/52.08471186.js"><link rel="prefetch" href="/assets/js/520.98088423.js"><link rel="prefetch" href="/assets/js/521.09d6f9e3.js"><link rel="prefetch" href="/assets/js/522.0a7f1cfd.js"><link rel="prefetch" href="/assets/js/523.460a682d.js"><link rel="prefetch" href="/assets/js/53.81c949e4.js"><link rel="prefetch" href="/assets/js/54.23834020.js"><link rel="prefetch" href="/assets/js/55.98bddbab.js"><link rel="prefetch" href="/assets/js/56.f33c89be.js"><link rel="prefetch" href="/assets/js/57.974b4102.js"><link rel="prefetch" href="/assets/js/58.e357e1b7.js"><link rel="prefetch" href="/assets/js/59.1cf2f460.js"><link rel="prefetch" href="/assets/js/6.d37d398a.js"><link rel="prefetch" href="/assets/js/60.bccde908.js"><link rel="prefetch" href="/assets/js/61.33679650.js"><link rel="prefetch" href="/assets/js/62.fe42a718.js"><link rel="prefetch" href="/assets/js/63.910cc28d.js"><link rel="prefetch" href="/assets/js/65.6bc58366.js"><link rel="prefetch" href="/assets/js/66.29ed3089.js"><link rel="prefetch" href="/assets/js/67.3a4a22d1.js"><link rel="prefetch" href="/assets/js/68.05fa411c.js"><link rel="prefetch" href="/assets/js/69.44dfc2db.js"><link rel="prefetch" href="/assets/js/7.8c733af6.js"><link rel="prefetch" href="/assets/js/70.059cdd51.js"><link rel="prefetch" href="/assets/js/71.d58561d2.js"><link rel="prefetch" href="/assets/js/72.056ba678.js"><link rel="prefetch" href="/assets/js/73.25916778.js"><link rel="prefetch" href="/assets/js/74.1f1823dc.js"><link rel="prefetch" href="/assets/js/75.2f5b0b73.js"><link rel="prefetch" href="/assets/js/76.06e76fe6.js"><link rel="prefetch" href="/assets/js/77.206d48bf.js"><link rel="prefetch" href="/assets/js/78.2f07e42d.js"><link rel="prefetch" href="/assets/js/79.994c527d.js"><link rel="prefetch" href="/assets/js/8.e8c4adeb.js"><link rel="prefetch" href="/assets/js/80.82c6c4f9.js"><link rel="prefetch" href="/assets/js/81.83bd28d9.js"><link rel="prefetch" href="/assets/js/82.7fbb77e1.js"><link rel="prefetch" href="/assets/js/83.e5773686.js"><link rel="prefetch" href="/assets/js/84.13db35cf.js"><link rel="prefetch" href="/assets/js/85.e6a2aa9d.js"><link rel="prefetch" href="/assets/js/86.715ac425.js"><link rel="prefetch" href="/assets/js/87.10b54644.js"><link rel="prefetch" href="/assets/js/88.477faa20.js"><link rel="prefetch" href="/assets/js/89.a562feda.js"><link rel="prefetch" href="/assets/js/9.635384b9.js"><link rel="prefetch" href="/assets/js/90.c7874d64.js"><link rel="prefetch" href="/assets/js/91.e61cbe07.js"><link rel="prefetch" href="/assets/js/92.45b11d5e.js"><link rel="prefetch" href="/assets/js/93.f587deb4.js"><link rel="prefetch" href="/assets/js/94.19940b43.js"><link rel="prefetch" href="/assets/js/95.d9763768.js"><link rel="prefetch" href="/assets/js/96.3ed0322b.js"><link rel="prefetch" href="/assets/js/97.d368e630.js"><link rel="prefetch" href="/assets/js/98.8b86b8af.js"><link rel="prefetch" href="/assets/js/99.53eb946a.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.262891fb.js">
<link rel="stylesheet" href="/assets/css/0.styles.679f71b6.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/img/logo.png" alt=" " class="logo"></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Document</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/Get Started/QuickStart.html" class="nav-link">In progress</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.11.x/Get Started/QuickStart.html" class="nav-link">V0.11.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.10.x/Get Started/QuickStart.html" class="nav-link">V0.10.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.9.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.9.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.8.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.8.x</a></li></ul></div></div><div class="nav-item"><a href="/SystemDesign/Architecture/Architecture.html" class="nav-link">System design</a></div><div class="nav-item"><a href="/Download/" class="nav-link">Download</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Community</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://cwiki.apache.org/confluence/display/iotdb" class="nav-link external">
Wiki
<!----></a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Project Committers.html" class="nav-link">People</a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Powered By.html" class="nav-link">Powered By</a></li><li class="dropdown-item"><!----> <a href="/Community/Materials.html" class="nav-link">Resources</a></li><li class="dropdown-item"><!----> <a href="/Community/Feedback.html" class="nav-link">Feedback</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Development</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Development/VoteRelease.html" class="nav-link">How to vote</a></li><li class="dropdown-item"><!----> <a href="/Development/HowToCommit.html" class="nav-link">How to Commit</a></li><li class="dropdown-item"><!----> <a href="/Development/Committer.html" class="nav-link">Become a Committer</a></li><li class="dropdown-item"><!----> <a href="/Development/ContributeGuide.html" class="nav-link">ContributeGuide</a></li><li class="dropdown-item"><!----> <a href="/Development/format-changelist.html" class="nav-link">Changelist of TsFile</a></li><li class="dropdown-item"><!----> <a href="/Development/rpc-changelist.html" class="nav-link">Changelist of RPC</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Blog</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Blog/Index.html" class="nav-link">Overview</a></li><li class="dropdown-item"><!----> <a href="/Blog/Release0_93.html" class="nav-link">Some Notes on Release 0.9.3 and upcoming 0.10.0</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">ASF</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="http://www.apache.org/" class="nav-link external">
Foundation
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/licenses/" class="nav-link external">
License
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/security/" class="nav-link external">
Security
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/sponsorship.html" class="nav-link external">
Sponsorship
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/thanks.html" class="nav-link external">
Thanks
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/events/current-event" class="nav-link external">
Current Events
<!----></a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/Client/Programming - TsFile API.html" class="nav-link">English</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/Master/Client/Programming - TsFile API.html" class="nav-link">简体中文</a></li></ul></div></div> <a href="https://github.com/apache/iotdb.git" target="_blank" rel="noopener noreferrer" class="repo-link">
gitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Document</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/Get Started/QuickStart.html" class="nav-link">In progress</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.11.x/Get Started/QuickStart.html" class="nav-link">V0.11.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.10.x/Get Started/QuickStart.html" class="nav-link">V0.10.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.9.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.9.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.8.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.8.x</a></li></ul></div></div><div class="nav-item"><a href="/SystemDesign/Architecture/Architecture.html" class="nav-link">System design</a></div><div class="nav-item"><a href="/Download/" class="nav-link">Download</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Community</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://cwiki.apache.org/confluence/display/iotdb" class="nav-link external">
Wiki
<!----></a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Project Committers.html" class="nav-link">People</a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Powered By.html" class="nav-link">Powered By</a></li><li class="dropdown-item"><!----> <a href="/Community/Materials.html" class="nav-link">Resources</a></li><li class="dropdown-item"><!----> <a href="/Community/Feedback.html" class="nav-link">Feedback</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Development</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Development/VoteRelease.html" class="nav-link">How to vote</a></li><li class="dropdown-item"><!----> <a href="/Development/HowToCommit.html" class="nav-link">How to Commit</a></li><li class="dropdown-item"><!----> <a href="/Development/Committer.html" class="nav-link">Become a Committer</a></li><li class="dropdown-item"><!----> <a href="/Development/ContributeGuide.html" class="nav-link">ContributeGuide</a></li><li class="dropdown-item"><!----> <a href="/Development/format-changelist.html" class="nav-link">Changelist of TsFile</a></li><li class="dropdown-item"><!----> <a href="/Development/rpc-changelist.html" class="nav-link">Changelist of RPC</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Blog</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Blog/Index.html" class="nav-link">Overview</a></li><li class="dropdown-item"><!----> <a href="/Blog/Release0_93.html" class="nav-link">Some Notes on Release 0.9.3 and upcoming 0.10.0</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">ASF</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="http://www.apache.org/" class="nav-link external">
Foundation
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/licenses/" class="nav-link external">
License
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/security/" class="nav-link external">
Security
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/sponsorship.html" class="nav-link external">
Sponsorship
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/thanks.html" class="nav-link external">
Thanks
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/events/current-event" class="nav-link external">
Current Events
<!----></a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/Client/Programming - TsFile API.html" class="nav-link">English</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/Master/Client/Programming - TsFile API.html" class="nav-link">简体中文</a></li></ul></div></div> <a href="https://github.com/apache/iotdb.git" target="_blank" rel="noopener noreferrer" class="repo-link">
gitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>IoTDB User Guide (In progress)</span> <!----></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Get Started</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Overview</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Concept</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Server</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>Client</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/UserGuide/Master/Client/Command Line Interface.html" class="sidebar-link">Command Line Interface</a></li><li><a href="/UserGuide/Master/Client/Programming - Native API.html" class="sidebar-link">Native API</a></li><li><a href="/UserGuide/Master/Client/Programming - JDBC.html" class="sidebar-link">JDBC</a></li><li><a href="/UserGuide/Master/Client/Programming - Other Languages.html" class="sidebar-link">Other Languages</a></li><li><a href="/UserGuide/Master/Client/Programming - TsFile API.html" class="active sidebar-link">TsFile API</a></li><li><a href="/UserGuide/Master/Client/Programming - MQTT.html" class="sidebar-link">MQTT</a></li><li><a href="/UserGuide/Master/Client/Status Codes.html" class="sidebar-link">Status Codes</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Operation Manual</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>System Tools</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Ecosystem Integration</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Architecture</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Comparison with TSDBs</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="content content__default"><h1 id="programming-tsfile-api"><a href="#programming-tsfile-api" class="header-anchor">#</a> Programming - TsFile API</h1> <p>TsFile is a file format of Time Series used in IoTDB. This session introduces the usage of this file format.</p> <h2 id="tsfile-library-installation"><a href="#tsfile-library-installation" class="header-anchor">#</a> TsFile library Installation</h2> <p>There are two ways to use TsFile in your own project.</p> <ul><li><p>Use as jars:</p> <ul><li><p>Compile the source codes and build to jars</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>git clone https://github.com/apache/iotdb.git
cd tsfile/
mvn clean package -Dmaven.test.skip=true
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>Then, all the jars are in folder named <code>target/</code>. Import <code>target/tsfile-0.10.0-jar-with-dependencies.jar</code> to your project.</p></li></ul></li> <li><p>Use as a maven dependency:</p> <p>Compile source codes and deploy to your local repository in three steps:</p> <ul><li><p>Get the source codes</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>git clone https://github.com/apache/iotdb.git
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>Compile the source codes and deploy</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>cd tsfile/
mvn clean install -Dmaven.test.skip=true
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div></li> <li><p>add dependencies into your project:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code> &lt;dependency&gt;
&lt;groupId&gt;org.apache.iotdb&lt;/groupId&gt;
&lt;artifactId&gt;tsfile&lt;/artifactId&gt;
&lt;version&gt;0.10.0&lt;/version&gt;
&lt;/dependency&gt;
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div></li></ul> <p>Or, you can download the dependencies from official Maven repository:</p> <ul><li><p>First, find your maven <code>settings.xml</code> on path: <code>${username}\.m2\settings.xml</code>
, add this <code>&lt;profile&gt;</code> to <code>&lt;profiles&gt;</code>:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code> &lt;profile&gt;
&lt;id&gt;allow-snapshots&lt;/id&gt;
&lt;activation&gt;&lt;activeByDefault&gt;true&lt;/activeByDefault&gt;&lt;/activation&gt;
&lt;repositories&gt;
&lt;repository&gt;
&lt;id&gt;apache.snapshots&lt;/id&gt;
&lt;name&gt;Apache Development Snapshot Repository&lt;/name&gt;
&lt;url&gt;https://repository.apache.org/content/repositories/snapshots/&lt;/url&gt;
&lt;releases&gt;
&lt;enabled&gt;false&lt;/enabled&gt;
&lt;/releases&gt;
&lt;snapshots&gt;
&lt;enabled&gt;true&lt;/enabled&gt;
&lt;/snapshots&gt;
&lt;/repository&gt;
&lt;/repositories&gt;
&lt;/profile&gt;
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div></li> <li><p>Then add dependencies into your project:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code> &lt;dependency&gt;
&lt;groupId&gt;org.apache.iotdb&lt;/groupId&gt;
&lt;artifactId&gt;tsfile&lt;/artifactId&gt;
&lt;version&gt;0.10.0&lt;/version&gt;
&lt;/dependency&gt;
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div></li></ul></li></ul> <h2 id="tsfile-usage"><a href="#tsfile-usage" class="header-anchor">#</a> TSFile Usage</h2> <p>This section demonstrates the detailed usages of TsFile.</p> <h3 id="time-series-data"><a href="#time-series-data" class="header-anchor">#</a> Time-series Data</h3> <p>Time-series data is considered as a sequence of quadruples. A quadruple is defined as (device, measurement, time, value).</p> <ul><li><p><strong>measurement</strong>: A physical or formal measurement that a time-series data takes, e.g., the temperature of a city, the
sales number of some goods or the speed of a train at different times. As a traditional sensor (like a thermometer) also
takes a single measurement and produce a time-series, we will use measurement and sensor interchangeably below.</p></li> <li><p><strong>device</strong>: A device refers to an entity that takes several measurements (producing multiple time-series), e.g.,
a running train monitors its speed, oil meter, miles it has run, current passengers each is conveyed to a time-series dataset.</p></li></ul> <p>Table 1 illustrates a set of time-series data. The set showed in the following table contains one device named &quot;device_1&quot;
with three measurements named &quot;sensor_1&quot;, &quot;sensor_2&quot; and &quot;sensor_3&quot;.</p> <img width="388" alt="API 1" src="https://user-images.githubusercontent.com/69114052/98197532-f0f7ea00-1f61-11eb-9794-09f0644eb046.png"> <p><strong>One Line of Data</strong>: In many industrial applications, a device normally contains more than one sensor and these sensors
may have values at the same timestamp, which is called one line of data.</p> <p>Formally, one line of data consists of a <code>device_id</code>, a timestamp which indicates the milliseconds since January 1,
1970, 00:00:00, and several data pairs composed of <code>measurement_id</code> and corresponding <code>value</code>. All data pairs in one
line belong to this <code>device_id</code> and have the same timestamp. If one of the <code>measurements</code> does not have a <code>value</code>
in the <code>timestamp</code>, use a space instead(Actually, TsFile does not store null values). Its format is shown as follow:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>device_id, timestamp, &lt;measurement_id, value&gt;...
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>An example is illustrated as follow. In this example, the data type of two measurements are <code>INT32</code>, <code>FLOAT</code> respectively.</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>device_1, 1490860659000, m1, 10, m2, 12.12
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="write-tsfile"><a href="#write-tsfile" class="header-anchor">#</a> Write TsFile</h3> <h4 id="generate-a-tsfile-file"><a href="#generate-a-tsfile-file" class="header-anchor">#</a> Generate a TsFile File.</h4> <p>A TsFile is generated by the following three steps and the complete code is given in the section &quot;Example for writing TsFile&quot;.</p> <ul><li><p>First, construct a <code>TsFileWriter</code> instance.</p> <p>Here are the available constructors:</p> <ul><li>Without pre-defined schema</li></ul> <div class="language- line-numbers-mode"><pre class="language-text"><code>public TsFileWriter(File file) throws IOException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><ul><li>With pre-defined schema</li></ul> <div class="language- line-numbers-mode"><pre class="language-text"><code>public TsFileWriter(File file, Schema schema) throws IOException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>This one is for using the HDFS file system. <code>TsFileOutput</code> can be an instance of class <code>HDFSOutput</code>.</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>public TsFileWriter(TsFileOutput output, Schema schema) throws IOException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>If you want to set some TSFile configuration on your own, you could use param <code>config</code>. For example:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>TSFileConfig conf = new TSFileConfig();
conf.setTSFileStorageFs(&quot;HDFS&quot;);
TsFileWriter tsFileWriter = new TsFileWriter(file, schema, conf);
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>In this example, data files will be stored in HDFS, instead of local file system. If you'd like to store data files in local file system, you can use <code>conf.setTSFileStorageFs(&quot;LOCAL&quot;)</code>, which is also the default config.</p> <p>You can also config the ip and rpc port of your HDFS by <code>config.setHdfsIp(...)</code> and <code>config.setHdfsPort(...)</code>. The default ip is <code>localhost</code> and default rpc port is <code>9000</code>.</p> <p><strong>Parameters:</strong></p> <ul><li><p>file : The TsFile to write</p></li> <li><p>schema : The file schemas, will be introduced in next part.</p></li> <li><p>config : The config of TsFile.</p></li></ul></li> <li><p>Second, add measurements</p> <p>Or you can make an instance of class <code>Schema</code> first and pass this to the constructor of class <code>TsFileWriter</code></p> <p>The class <code>Schema</code> contains a map whose key is the name of one measurement schema, and the value is the schema itself.</p> <p>Here are the interfaces:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>// Create an empty Schema or from an existing map
public Schema()
public Schema(Map&lt;String, MeasurementSchema&gt; measurements)
// Use this two interfaces to add measurements
public void registerMeasurement(MeasurementSchema descriptor)
public void registerMeasurements(Map&lt;String, MeasurementSchema&gt; measurements)
// Some useful getter and checker
public TSDataType getMeasurementDataType(String measurementId)
public MeasurementSchema getMeasurementSchema(String measurementId)
public Map&lt;String, MeasurementSchema&gt; getAllMeasurementSchema()
public boolean hasMeasurement(String measurementId)
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><p>You can always use the following interface in <code>TsFileWriter</code> class to add additional measurements:
</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>public void addMeasurement(MeasurementSchema measurementSchema) throws WriteProcessException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>The class <code>MeasurementSchema</code> contains the information of one measurement, there are several constructors:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>public MeasurementSchema(String measurementId, TSDataType type, TSEncoding encoding)
public MeasurementSchema(String measurementId, TSDataType type, TSEncoding encoding, CompressionType compressionType)
public MeasurementSchema(String measurementId, TSDataType type, TSEncoding encoding, CompressionType compressionType,
Map&lt;String, String&gt; props)
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><p><strong>Parameters:</strong>
</p> <ul><li><p>measurementID: The name of this measurement, typically the name of the sensor.</p></li> <li><p>type: The data type, now support six types: <code>BOOLEAN</code>, <code>INT32</code>, <code>INT64</code>, <code>FLOAT</code>, <code>DOUBLE</code>, <code>TEXT</code>;</p></li> <li><p>encoding: The data encoding. See <a href="/UserGuide/Master/Concept/Encoding.html">Chapter 2-3</a>.</p></li> <li><p>compression: The data compression. Now supports <code>UNCOMPRESSED</code> and <code>SNAPPY</code>.</p></li> <li><p>props: Properties for special data types.Such as <code>max_point_number</code> for <code>FLOAT</code> and <code>DOUBLE</code>, <code>max_string_length</code> for
<code>TEXT</code>. Use as string pairs into a map such as (&quot;max_point_number&quot;, &quot;3&quot;).</p></li></ul> <blockquote><p><strong>Notice:</strong> Although one measurement name can be used in multiple deltaObjects, the properties cannot be changed. I.e.
it's not allowed to add one measurement name for multiple times with different type or encoding.
Here is a bad example:</p></blockquote> <div class="language- extra-class"><pre><code> // The measurement &quot;sensor_1&quot; is float type
addMeasurement(new MeasurementSchema(&quot;sensor_1&quot;, TSDataType.FLOAT, TSEncoding.RLE));
// This call will throw a WriteProcessException exception
addMeasurement(new MeasurementSchema(&quot;sensor_1&quot;, TSDataType.INT32, TSEncoding.RLE));
</code></pre></div></li> <li><p>Third, insert and write data continually.</p> <p>Use this interface to create a new <code>TSRecord</code>(a timestamp and device pair).</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>public TSRecord(long timestamp, String deviceId)
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>Then create a <code>DataPoint</code>(a measurement and value pair), and use the addTuple method to add the DataPoint to the correct
TsRecord.</p> <p>Use this method to write</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>public void write(TSRecord record) throws IOException, WriteProcessException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>Finally, call <code>close</code> to finish this writing process.</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>public void close() throws IOException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li></ul> <p>We are also able to write data into a closed TsFile.</p> <ul><li>Use <code>ForceAppendTsFileWriter</code> to open a closed file.</li></ul> <div class="language- line-numbers-mode"><pre class="language-text"><code>public ForceAppendTsFileWriter(File file) throws IOException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><ul><li><p>call <code>doTruncate</code> truncate the part of Metadata</p></li> <li><p>Then use <code>ForceAppendTsFileWriter</code> to construct a new <code>TsFileWriter</code></p></li></ul> <div class="language- line-numbers-mode"><pre class="language-text"><code>public TsFileWriter(TsFileIOWriter fileWriter) throws IOException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>Please note, we should redo the step of adding measurements before writing new data to the TsFile.</p> <h4 id="example-for-writing-a-tsfile"><a href="#example-for-writing-a-tsfile" class="header-anchor">#</a> Example for writing a TsFile</h4> <p>You should install TsFile to your local maven repository.</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>mvn clean install -pl tsfile -am -DskipTests
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>You could write a TsFile by constructing <strong>TSRecord</strong> if you have the <strong>non-aligned</strong> (e.g. not all sensors contain values) time series data.</p> <p>A more thorough example can be found at <code>/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithTSRecord.java</code></p> <p>You could write a TsFile by constructing <strong>Tablet</strong> if you have the <strong>aligned</strong> time series data.</p> <p>A more thorough example can be found at <code>/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithTablet.java</code></p> <p>You could write data into a closed TsFile by using <strong>ForceAppendTsFileWriter</strong>.</p> <p>A more thorough example can be found at <code>/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileForceAppendWrite.java</code></p> <h3 id="interface-for-reading-tsfile"><a href="#interface-for-reading-tsfile" class="header-anchor">#</a> Interface for Reading TsFile</h3> <h4 id="before-the-start"><a href="#before-the-start" class="header-anchor">#</a> Before the Start</h4> <p>The set of time-series data in section &quot;Time-series Data&quot; is used here for a concrete introduction in this section. The set showed in the following table contains one deltaObject named &quot;device_1&quot; with three measurements named &quot;sensor_1&quot;, &quot;sensor_2&quot; and &quot;sensor_3&quot;. And the measurements has been simplified to do a simple illustration, which contains only 4 time-value pairs each.</p> <img width="388" alt="API 2" src="https://user-images.githubusercontent.com/69114052/98197592-0cfb8b80-1f62-11eb-86ec-c80ef6305469.png"> <h4 id="definition-of-path"><a href="#definition-of-path" class="header-anchor">#</a> Definition of Path</h4> <p>A path is a dot-separated string which uniquely identifies a time-series in TsFile, e.g., &quot;root.area_1.device_1.sensor_1&quot;.
The last section &quot;sensor_1&quot; is called &quot;measurementId&quot; while the remaining parts &quot;root.area_1.device_1&quot; is called deviceId.
As mentioned above, the same measurement in different devices has the same data type and encoding, and devices are also unique.</p> <p>In read interfaces, The parameter <code>paths</code> indicates the measurements to be selected.</p> <p>Path instance can be easily constructed through the class <code>Path</code>. For example:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>Path p = new Path(&quot;device_1.sensor_1&quot;);
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>We will pass an ArrayList of paths for final query call to support multiple paths.</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>List&lt;Path&gt; paths = new ArrayList&lt;Path&gt;();
paths.add(new Path(&quot;device_1.sensor_1&quot;));
paths.add(new Path(&quot;device_1.sensor_3&quot;));
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><blockquote><p><strong>Notice:</strong> When constructing a Path, the format of the parameter should be a dot-separated string, the last part will
be recognized as measurementId while the remaining parts will be recognized as deviceId.</p></blockquote> <h4 id="definition-of-filter"><a href="#definition-of-filter" class="header-anchor">#</a> Definition of Filter</h4> <h5 id="usage-scenario"><a href="#usage-scenario" class="header-anchor">#</a> Usage Scenario</h5> <p>Filter is used in TsFile reading process to select data satisfying one or more given condition(s).</p> <h4 id="iexpression"><a href="#iexpression" class="header-anchor">#</a> IExpression</h4> <p>The <code>IExpression</code> is a filter expression interface and it will be passed to our final query call.
We create one or more filter expressions and may use binary filter operators to link them to our final expression.</p> <ul><li><p><strong>Create a Filter Expression</strong></p> <p>There are two types of filters.</p> <ul><li><p>TimeFilter: A filter for <code>time</code> in time-series data.</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter);
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>Use the following relationships to get a <code>TimeFilter</code> object (value is a long int variable).</p> <table><thead><tr><th>Relationship</th> <th>Description</th></tr></thead> <tbody><tr><td>TimeFilter.eq(value)</td> <td>Choose the time equal to the value</td></tr> <tr><td>TimeFilter.lt(value)</td> <td>Choose the time less than the value</td></tr> <tr><td>TimeFilter.gt(value)</td> <td>Choose the time greater than the value</td></tr> <tr><td>TimeFilter.ltEq(value)</td> <td>Choose the time less than or equal to the value</td></tr> <tr><td>TimeFilter.gtEq(value)</td> <td>Choose the time greater than or equal to the value</td></tr> <tr><td>TimeFilter.notEq(value)</td> <td>Choose the time not equal to the value</td></tr> <tr><td>TimeFilter.not(TimeFilter)</td> <td>Choose the time not satisfy another TimeFilter</td></tr></tbody></table></li> <li><p>ValueFilter: A filter for <code>value</code> in time-series data.</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>IExpression valueFilterExpr = new SingleSeriesExpression(Path, ValueFilter);
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>The usage of <code>ValueFilter</code> is the same as using <code>TimeFilter</code>, just to make sure that the type of the value
equal to the measurement's(defined in the path).</p></li></ul></li> <li><p><strong>Binary Filter Operators</strong></p> <p>Binary filter operators can be used to link two single expressions.</p> <ul><li>BinaryExpression.and(Expression, Expression): Choose the value satisfy for both expressions.</li> <li>BinaryExpression.or(Expression, Expression): Choose the value satisfy for at least one expression.</li></ul></li></ul> <h5 id="filter-expression-examples"><a href="#filter-expression-examples" class="header-anchor">#</a> Filter Expression Examples</h5> <ul><li><p><strong>TimeFilterExpression Examples</strong></p> <div class="language- line-numbers-mode"><pre class="language-text"><code>IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.eq(15)); // series time = 15
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><div class="language- line-numbers-mode"><pre class="language-text"><code>IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.ltEq(15)); // series time &lt;= 15
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><div class="language- line-numbers-mode"><pre class="language-text"><code>IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.lt(15)); // series time &lt; 15
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><div class="language- line-numbers-mode"><pre class="language-text"><code>IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.gtEq(15)); // series time &gt;= 15
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><div class="language- line-numbers-mode"><pre class="language-text"><code>IExpression timeFilterExpr = new GlobalTimeExpression(TimeFilter.notEq(15)); // series time != 15
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><div class="language- line-numbers-mode"><pre class="language-text"><code>IExpression timeFilterExpr = BinaryExpression.and(new GlobalTimeExpression(TimeFilter.gtEq(15L)),
new GlobalTimeExpression(TimeFilter.lt(25L))); // 15 &lt;= series time &lt; 25
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><div class="language- line-numbers-mode"><pre class="language-text"><code>IExpression timeFilterExpr = BinaryExpression.or(new GlobalTimeExpression(TimeFilter.gtEq(15L)),
new GlobalTimeExpression(TimeFilter.lt(25L))); // series time &gt;= 15 or series time &lt; 25
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div></li></ul> <h4 id="read-interface"><a href="#read-interface" class="header-anchor">#</a> Read Interface</h4> <p>First, we open the TsFile and get a <code>ReadOnlyTsFile</code> instance from a file path string <code>path</code>.</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>TsFileSequenceReader reader = new TsFileSequenceReader(path);
ReadOnlyTsFile readTsFile = new ReadOnlyTsFile(reader);
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>Next, we prepare the path array and query expression, then get final <code>QueryExpression</code> object by this interface:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>QueryExpression queryExpression = QueryExpression.create(paths, statement);
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>The ReadOnlyTsFile class has two <code>query</code> method to perform a query.</p> <ul><li><p><strong>Method 1</strong></p> <div class="language- line-numbers-mode"><pre class="language-text"><code>public QueryDataSet query(QueryExpression queryExpression) throws IOException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p><strong>Method 2</strong></p> <div class="language- line-numbers-mode"><pre class="language-text"><code>public QueryDataSet query(QueryExpression queryExpression, long partitionStartOffset, long partitionEndOffset) throws IOException
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>This method is designed for advanced applications such as the TsFile-Spark Connector.</p> <ul><li><p><strong>params</strong> : For method 2, two additional parameters are added to support partial query:</p> <ul><li><code>partitionStartOffset</code>: start offset for a TsFile</li> <li><code>partitionEndOffset</code>: end offset for a TsFile</li></ul> <blockquote><p><strong>What is Partial Query ?</strong></p> <p>In some distributed file systems(e.g. HDFS), a file is split into severval parts which are called &quot;Blocks&quot; and stored in different nodes. Executing a query paralleled in each nodes involved makes better efficiency. Thus Partial Query is needed. Paritial Query only selects the results stored in the part split by <code>QueryConstant.PARTITION_START_OFFSET</code> and <code>QueryConstant.PARTITION_END_OFFSET</code> for a TsFile.</p></blockquote></li></ul></li></ul> <h3 id="querydataset-interface"><a href="#querydataset-interface" class="header-anchor">#</a> QueryDataset Interface</h3> <p>The query performed above will return a <code>QueryDataset</code> object.</p> <p>Here's the useful interfaces for user.</p> <ul><li><p><code>bool hasNext();</code></p> <p>Return true if this dataset still has elements.</p></li> <li><p><code>List&lt;Path&gt; getPaths()</code></p> <p>Get the paths in this data set.</p></li> <li><p><code>List&lt;TSDataType&gt; getDataTypes();</code></p> <p>Get the data types. The class TSDataType is an enum class, the value will be one of the following:</p> <div class="language- extra-class"><pre><code> BOOLEAN,
INT32,
INT64,
FLOAT,
DOUBLE,
TEXT;
</code></pre></div></li> <li><p><code>RowRecord next() throws IOException;</code></p> <p>Get the next record.</p> <p>The class <code>RowRecord</code> consists of a <code>long</code> timestamp and a <code>List&lt;Field&gt;</code> for data in different sensors,
we can use two getter methods to get them.</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>long getTimestamp();
List&lt;Field&gt; getFields();
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>To get data from one Field, use these methods:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>TSDataType getDataType();
Object getObjectValue();
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div></li></ul> <h4 id="example-for-reading-an-existing-tsfile"><a href="#example-for-reading-an-existing-tsfile" class="header-anchor">#</a> Example for reading an existing TsFile</h4> <p>You should install TsFile to your local maven repository.</p> <p>A more thorough example with query statement can be found at
<code>/tsfile/example/src/main/java/org/apache/iotdb/tsfile/TsFileRead.java</code></p> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">package</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">IOException</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">ArrayList</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span></span><span class="token class-name">ReadOnlyTsFile</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span></span><span class="token class-name">TsFileSequenceReader</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span>common<span class="token punctuation">.</span></span><span class="token class-name">Path</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span>expression<span class="token punctuation">.</span></span><span class="token class-name">IExpression</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span>expression<span class="token punctuation">.</span></span><span class="token class-name">QueryExpression</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span>expression<span class="token punctuation">.</span>impl<span class="token punctuation">.</span></span><span class="token class-name">BinaryExpression</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span>expression<span class="token punctuation">.</span>impl<span class="token punctuation">.</span></span><span class="token class-name">GlobalTimeExpression</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span>expression<span class="token punctuation">.</span>impl<span class="token punctuation">.</span></span><span class="token class-name">SingleSeriesExpression</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span>filter<span class="token punctuation">.</span></span><span class="token class-name">TimeFilter</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span>filter<span class="token punctuation">.</span></span><span class="token class-name">ValueFilter</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>iotdb<span class="token punctuation">.</span>tsfile<span class="token punctuation">.</span>read<span class="token punctuation">.</span>query<span class="token punctuation">.</span>dataset<span class="token punctuation">.</span></span><span class="token class-name">QueryDataSet</span><span class="token punctuation">;</span>
<span class="token comment">/**
* The class is to show how to read TsFile file named &quot;test.tsfile&quot;.
* The TsFile file &quot;test.tsfile&quot; is generated from class TsFileWrite.
* Run TsFileWrite to generate the test.tsfile first
*/</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">TsFileRead</span> <span class="token punctuation">{</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">queryAndPrint</span><span class="token punctuation">(</span><span class="token class-name">ArrayList</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Path</span><span class="token punctuation">&gt;</span></span> paths<span class="token punctuation">,</span> <span class="token class-name">ReadOnlyTsFile</span> readTsFile<span class="token punctuation">,</span> <span class="token class-name">IExpression</span> statement<span class="token punctuation">)</span>
<span class="token keyword">throws</span> <span class="token class-name">IOException</span> <span class="token punctuation">{</span>
<span class="token class-name">QueryExpression</span> queryExpression <span class="token operator">=</span> <span class="token class-name">QueryExpression</span><span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span>paths<span class="token punctuation">,</span> statement<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">QueryDataSet</span> queryDataSet <span class="token operator">=</span> readTsFile<span class="token punctuation">.</span><span class="token function">query</span><span class="token punctuation">(</span>queryExpression<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">while</span> <span class="token punctuation">(</span>queryDataSet<span class="token punctuation">.</span><span class="token function">hasNext</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>queryDataSet<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">&quot;------------&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">IOException</span> <span class="token punctuation">{</span>
<span class="token comment">// file path</span>
<span class="token class-name">String</span> path <span class="token operator">=</span> <span class="token string">&quot;test.tsfile&quot;</span><span class="token punctuation">;</span>
<span class="token comment">// create reader and get the readTsFile interface</span>
<span class="token class-name">TsFileSequenceReader</span> reader <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">TsFileSequenceReader</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">ReadOnlyTsFile</span> readTsFile <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ReadOnlyTsFile</span><span class="token punctuation">(</span>reader<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// use these paths(all sensors) for all the queries</span>
<span class="token class-name">ArrayList</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Path</span><span class="token punctuation">&gt;</span></span> paths <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ArrayList</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
paths<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Path</span><span class="token punctuation">(</span><span class="token string">&quot;device_1.sensor_1&quot;</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
paths<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Path</span><span class="token punctuation">(</span><span class="token string">&quot;device_1.sensor_2&quot;</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
paths<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Path</span><span class="token punctuation">(</span><span class="token string">&quot;device_1.sensor_3&quot;</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// no query statement</span>
<span class="token function">queryAndPrint</span><span class="token punctuation">(</span>paths<span class="token punctuation">,</span> readTsFile<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//close the reader when you left</span>
reader<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br><span class="line-number">44</span><br><span class="line-number">45</span><br><span class="line-number">46</span><br><span class="line-number">47</span><br><span class="line-number">48</span><br><span class="line-number">49</span><br><span class="line-number">50</span><br><span class="line-number">51</span><br><span class="line-number">52</span><br><span class="line-number">53</span><br></div></div><h2 id="change-tsfile-configuration"><a href="#change-tsfile-configuration" class="header-anchor">#</a> Change TsFile Configuration</h2> <div class="language- line-numbers-mode"><pre class="language-text"><code>TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
config.setXXX();
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div></div> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/UserGuide/Master/Client/Programming - Other Languages.html" class="prev">
Other Languages
</a></span> <span class="next"><a href="/UserGuide/Master/Client/Programming - MQTT.html">
MQTT
</a>
</span></p></div> <p style="text-align: center;">Copyright © 2020 The Apache Software Foundation.<br>
Apache and the Apache feather logo are trademarks of The Apache Software Foundation</p> <p style="text-align: center; margin-top: 10px; color: #444">
Contact us: Join QQ Group 659990460 | Add friend <i>tietouqiao</i> and be invited to Wechat Group<br>
see <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a> for more</p></main></div><div class="global-ui"></div></div>
<script src="/assets/js/app.ee472f44.js" defer></script><script src="/assets/js/3.49f0f20a.js" defer></script><script src="/assets/js/64.3a046b10.js" defer></script>
</body>
</html>