| import{_ as l,r as d,o as r,c as o,b as i,d as e,a,w as s,e as t}from"./app-Bp5kEZWW.js";const c={},u=t(`<h1 id="元数据操作" tabindex="-1"><a class="header-anchor" href="#元数据操作"><span>元数据操作</span></a></h1><h2 id="数据库管理" tabindex="-1"><a class="header-anchor" href="#数据库管理"><span>数据库管理</span></a></h2><p>数据库(Database)可以被视为关系数据库中的Database。</p><h3 id="创建数据库" tabindex="-1"><a class="header-anchor" href="#创建数据库"><span>创建数据库</span></a></h3><p>我们可以根据存储模型建立相应的数据库。如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB > CREATE DATABASE root.ln |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>需要注意的是,推荐创建一个 database.</p><p>Database 的父子节点都不能再设置 database。例如在已经有<code>root.ln</code>和<code>root.sgcc</code>这两个 database 的情况下,创建<code>root.ln.wf01</code> database 是不可行的。系统将给出相应的错误提示,如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> CREATE DATABASE root.ln.wf01 |
| Msg: 300: root.ln has already been created as database. |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>Database 节点名只支持中英文字符、数字、下划线的组合,如果想设置为纯数字或者包含其他字符,需要用反引号(\`\`)把 database 名称引起来。</p><p>还需注意,如果在 Windows 系统上部署,database 名是大小写不敏感的。例如同时创建<code>root.ln</code> 和 <code>root.LN</code> 是不被允许的。</p><h3 id="查看数据库" tabindex="-1"><a class="header-anchor" href="#查看数据库"><span>查看数据库</span></a></h3>`,12),v=t(`<div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> show databases |
| IoTDB> show databases root.* |
| IoTDB> show databases root.** |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>执行结果为:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+-------------+----+-------------------------+-----------------------+-----------------------+ |
| | database| ttl|schema_replication_factor|data_replication_factor|time_partition_interval| |
| +-------------+----+-------------------------+-----------------------+-----------------------+ |
| | root.sgcc|null| 2| 2| 604800| |
| | root.ln|null| 2| 2| 604800| |
| +-------------+----+-------------------------+-----------------------+-----------------------+ |
| Total line number = 2 |
| It costs 0.060s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="删除数据库" tabindex="-1"><a class="header-anchor" href="#删除数据库"><span>删除数据库</span></a></h3><p>用户可以使用<code>DELETE DATABASE <PathPattern></code>语句删除该路径模式匹配的所有的数据库。在删除的过程中,需要注意的是数据库的数据也会被删除。</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB > DELETE DATABASE root.ln |
| IoTDB > DELETE DATABASE root.sgcc |
| // 删除所有数据,时间序列以及数据库 |
| IoTDB > DELETE DATABASE root.** |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="统计数据库数量" tabindex="-1"><a class="header-anchor" href="#统计数据库数量"><span>统计数据库数量</span></a></h3><p>用户可以使用<code>COUNT DATABASES <PathPattern></code>语句统计数据库的数量,允许指定<code>PathPattern</code> 用来统计匹配该<code>PathPattern</code> 的数据库的数量</p><p>SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> show databases |
| IoTDB> count databases |
| IoTDB> count databases root.* |
| IoTDB> count databases root.sgcc.* |
| IoTDB> count databases root.sgcc |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>执行结果为:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+-------------+ |
| | database| |
| +-------------+ |
| | root.sgcc| |
| | root.turbine| |
| | root.ln| |
| +-------------+ |
| Total line number = 3 |
| It costs 0.003s |
| |
| +-------------+ |
| | Database| |
| +-------------+ |
| | 3| |
| +-------------+ |
| Total line number = 1 |
| It costs 0.003s |
| |
| +-------------+ |
| | Database| |
| +-------------+ |
| | 3| |
| +-------------+ |
| Total line number = 1 |
| It costs 0.002s |
| |
| +-------------+ |
| | Database| |
| +-------------+ |
| | 0| |
| +-------------+ |
| Total line number = 1 |
| It costs 0.002s |
| |
| +-------------+ |
| | database| |
| +-------------+ |
| | 1| |
| +-------------+ |
| Total line number = 1 |
| It costs 0.002s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="ttl" tabindex="-1"><a class="header-anchor" href="#ttl"><span>TTL</span></a></h3><p>IoTDB 支持对 database 级别设置数据存活时间(TTL),这使得 IoTDB 可以定期、自动地删除一定时间之前的数据。合理使用 TTL<br> 可以帮助您控制 IoTDB 占用的总磁盘空间以避免出现磁盘写满等异常。并且,随着文件数量的增多,查询性能往往随之下降,<br> 内存占用也会有所提高。及时地删除一些较老的文件有助于使查询性能维持在一个较高的水平和减少内存资源的占用。</p><p>TTL的默认单位为毫秒,如果配置文件中的时间精度修改为其他单位,设置ttl时仍然使用毫秒单位。</p><h4 id="设置-ttl" tabindex="-1"><a class="header-anchor" href="#设置-ttl"><span>设置 TTL</span></a></h4><p>设置 TTL 的 SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> set ttl to root.ln 3600000 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>这个例子表示在<code>root.ln</code>数据库中,只有3600000毫秒,即最近一个小时的数据将会保存,旧数据会被移除或不可见。</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> set ttl to root.sgcc.** 3600000 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>支持给某一路径下的 database 设置TTL,这个例子表示<code>root.sgcc</code>路径下的所有 database 设置TTL。</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> set ttl to root.** 3600000 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>表示给所有 database 设置TTL。</p><h4 id="取消-ttl" tabindex="-1"><a class="header-anchor" href="#取消-ttl"><span>取消 TTL</span></a></h4><p>取消 TTL 的 SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> unset ttl to root.ln |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>取消设置 TTL 后, database <code>root.ln</code>中所有的数据都会被保存。</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> unset ttl to root.sgcc.** |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>取消设置<code>root.sgcc</code>路径下的所有 database 的 TTL 。</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> unset ttl to root.** |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>取消设置所有 database 的 TTL 。</p><h4 id="显示-ttl" tabindex="-1"><a class="header-anchor" href="#显示-ttl"><span>显示 TTL</span></a></h4><p>显示 TTL 的 SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> SHOW ALL TTL |
| IoTDB> SHOW TTL ON DataBaseNames |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>SHOW ALL TTL 这个例子会给出所有 database 的 TTL。<br> SHOW TTL ON root.ln,root.sgcc,root.DB 这个例子会显示指定的三个 database 的 TTL。<br> 注意:没有设置 TTL 的 database 的 TTL 将显示为 null。</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> show all ttl |
| +-------------+-------+ |
| | database|ttl(ms)| |
| +-------------+-------+ |
| | root.ln|3600000| |
| | root.sgcc| null| |
| | root.DB|3600000| |
| +-------------+-------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="设置异构数据库-进阶操作" tabindex="-1"><a class="header-anchor" href="#设置异构数据库-进阶操作"><span>设置异构数据库(进阶操作)</span></a></h3><p>在熟悉 IoTDB 元数据建模的前提下,用户可以在 IoTDB 中设置异构的数据库,以便应对不同的生产需求。</p><p>目前支持的数据库异构参数有:</p><table><thead><tr><th>参数名</th><th>参数类型</th><th>参数描述</th></tr></thead><tbody><tr><td>TTL</td><td>Long</td><td>数据库的 TTL</td></tr><tr><td>SCHEMA_REPLICATION_FACTOR</td><td>Integer</td><td>数据库的元数据副本数</td></tr><tr><td>DATA_REPLICATION_FACTOR</td><td>Integer</td><td>数据库的数据副本数</td></tr><tr><td>SCHEMA_REGION_GROUP_NUM</td><td>Integer</td><td>数据库的 SchemaRegionGroup 数量</td></tr><tr><td>DATA_REGION_GROUP_NUM</td><td>Integer</td><td>数据库的 DataRegionGroup 数量</td></tr></tbody></table><p>用户在配置异构参数时需要注意以下三点:</p><ul><li>TTL 和 TIME_PARTITION_INTERVAL 必须为正整数。</li><li>SCHEMA_REPLICATION_FACTOR 和 DATA_REPLICATION_FACTOR 必须小于等于已部署的 DataNode 数量。</li><li>SCHEMA_REGION_GROUP_NUM 和 DATA_REGION_GROUP_NUM 的功能与 iotdb-common.properties 配置文件中的<br><code>schema_region_group_extension_policy</code> 和 <code>data_region_group_extension_policy</code> 参数相关,以 DATA_REGION_GROUP_NUM 为例:<br> 若设置 <code>data_region_group_extension_policy=CUSTOM</code>,则 DATA_REGION_GROUP_NUM 将作为 Database 拥有的 DataRegionGroup 的数量;<br> 若设置 <code>data_region_group_extension_policy=AUTO</code>,则 DATA_REGION_GROUP_NUM 将作为 Database 拥有的 DataRegionGroup 的配额下界,即当该 Database 开始写入数据时,将至少拥有此数量的 DataRegionGroup。</li></ul><p>用户可以在创建 Database 时设置任意异构参数,或在单机/分布式 IoTDB 运行时调整部分异构参数。</p><h4 id="创建-database-时设置异构参数" tabindex="-1"><a class="header-anchor" href="#创建-database-时设置异构参数"><span>创建 Database 时设置异构参数</span></a></h4><p>用户可以在创建 Database 时设置上述任意异构参数,SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>CREATE DATABASE prefixPath (WITH databaseAttributeClause (COMMA? databaseAttributeClause)*)? |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>例如:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>CREATE DATABASE root.db WITH SCHEMA_REPLICATION_FACTOR=1, DATA_REPLICATION_FACTOR=3, SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=2; |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h4 id="运行时调整异构参数" tabindex="-1"><a class="header-anchor" href="#运行时调整异构参数"><span>运行时调整异构参数</span></a></h4><p>用户可以在 IoTDB 运行时调整部分异构参数,SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>ALTER DATABASE prefixPath WITH databaseAttributeClause (COMMA? databaseAttributeClause)* |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>例如:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>ALTER DATABASE root.db WITH SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=2; |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>注意,运行时只能调整下列异构参数:</p><ul><li>SCHEMA_REGION_GROUP_NUM</li><li>DATA_REGION_GROUP_NUM</li></ul><h4 id="查看异构数据库" tabindex="-1"><a class="header-anchor" href="#查看异构数据库"><span>查看异构数据库</span></a></h4><p>用户可以查询每个 Database 的具体异构配置,SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>SHOW DATABASES DETAILS prefixPath? |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>例如:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> SHOW DATABASES DETAILS |
| +--------+--------+-----------------------+---------------------+---------------------+--------------------+-----------------------+-----------------------+------------------+---------------------+---------------------+ |
| |Database| TTL|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum|MinSchemaRegionGroupNum|MaxSchemaRegionGroupNum|DataRegionGroupNum|MinDataRegionGroupNum|MaxDataRegionGroupNum| |
| +--------+--------+-----------------------+---------------------+---------------------+--------------------+-----------------------+-----------------------+------------------+---------------------+---------------------+ |
| |root.db1| null| 1| 3| 604800000| 0| 1| 1| 0| 2| 2| |
| |root.db2|86400000| 1| 1| 604800000| 0| 1| 1| 0| 2| 2| |
| |root.db3| null| 1| 1| 604800000| 0| 1| 1| 0| 2| 2| |
| +--------+--------+-----------------------+---------------------+---------------------+--------------------+-----------------------+-----------------------+------------------+---------------------+---------------------+ |
| Total line number = 3 |
| It costs 0.058s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>各列查询结果依次为:</p><ul><li>数据库名称</li><li>数据库的 TTL</li><li>数据库的元数据副本数</li><li>数据库的数据副本数</li><li>数据库的时间分区间隔</li><li>数据库当前拥有的 SchemaRegionGroup 数量</li><li>数据库需要拥有的最小 SchemaRegionGroup 数量</li><li>数据库允许拥有的最大 SchemaRegionGroup 数量</li><li>数据库当前拥有的 DataRegionGroup 数量</li><li>数据库需要拥有的最小 DataRegionGroup 数量</li><li>数据库允许拥有的最大 DataRegionGroup 数量</li></ul><h2 id="设备模板管理" tabindex="-1"><a class="header-anchor" href="#设备模板管理"><span>设备模板管理</span></a></h2><p>IoTDB 支持设备模板功能,实现同类型不同实体的物理量元数据共享,减少元数据内存占用,同时简化同类型实体的管理。</p><p>注:以下语句中的 <code>device</code> 关键字可以省略。</p><h3 id="创建设备模板" tabindex="-1"><a class="header-anchor" href="#创建设备模板"><span>创建设备模板</span></a></h3><p>创建设备模板的 SQL 语法如下:</p><div class="language-sql line-numbers-mode" data-ext="sql" data-title="sql"><pre class="language-sql"><code><span class="token keyword">CREATE</span> DEVICE TEMPLATE <span class="token operator"><</span>templateName<span class="token operator">></span> ALIGNED? <span class="token string">'('</span> <span class="token operator"><</span>measurementId<span class="token operator">></span> <span class="token operator"><</span>attributeClauses<span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">','</span> <span class="token operator"><</span>measurementId<span class="token operator">></span> <span class="token operator"><</span>attributeClauses<span class="token operator">></span><span class="token punctuation">]</span><span class="token operator">+</span> <span class="token string">')'</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>示例1:</strong> 创建包含两个非对齐序列的元数据模板</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> create device template t1 <span class="token punctuation">(</span>temperature FLOAT <span class="token assign-left variable">encoding</span><span class="token operator">=</span>RLE, status BOOLEAN <span class="token assign-left variable">encoding</span><span class="token operator">=</span>PLAIN <span class="token assign-left variable">compression</span><span class="token operator">=</span>SNAPPY<span class="token punctuation">)</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>示例2:</strong> 创建包含一组对齐序列的元数据模板</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> create device template t2 aligned <span class="token punctuation">(</span>lat FLOAT <span class="token assign-left variable">encoding</span><span class="token operator">=</span>Gorilla, lon FLOAT <span class="token assign-left variable">encoding</span><span class="token operator">=</span>Gorilla<span class="token punctuation">)</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>其中,物理量 <code>lat</code> 和 <code>lon</code> 是对齐的。</p><h3 id="挂载设备模板" tabindex="-1"><a class="header-anchor" href="#挂载设备模板"><span>挂载设备模板</span></a></h3><p>元数据模板在创建后,需执行挂载操作,方可用于相应路径下的序列创建与数据写入。</p><p><strong>挂载模板前,需确保相关数据库已经创建。</strong></p><p><strong>推荐将模板挂载在 database 节点上,不建议将模板挂载到 database 上层的节点上。</strong></p><p><strong>模板挂载路径下禁止创建普通序列,已创建了普通序列的前缀路径上不允许挂载模板。</strong></p><p>挂载元数据模板的 SQL 语句如下所示:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> <span class="token builtin class-name">set</span> device template t1 to root.sg1.d1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="激活设备模板" tabindex="-1"><a class="header-anchor" href="#激活设备模板"><span>激活设备模板</span></a></h3><p>挂载好设备模板后,且系统开启自动注册序列功能的情况下,即可直接进行数据的写入。例如 database 为 root.sg1,模板 t1 被挂载到了节点 root.sg1.d1,那么可直接向时间序列(如 root.sg1.d1.temperature 和 root.sg1.d1.status)写入时间序列数据,该时间序列已可被当作正常创建的序列使用。</p><p><strong>注意</strong>:在插入数据之前或系统未开启自动注册序列功能,模板定义的时间序列不会被创建。可以使用如下SQL语句在插入数据前创建时间序列即激活模板:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> create timeseries using device template on root.sg1.d1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>示例:</strong> 执行以下语句</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> <span class="token builtin class-name">set</span> device template t1 to root.sg1.d1 |
| IoTDB<span class="token operator">></span> <span class="token builtin class-name">set</span> device template t2 to root.sg1.d2 |
| IoTDB<span class="token operator">></span> create timeseries using device template on root.sg1.d1 |
| IoTDB<span class="token operator">></span> create timeseries using device template on root.sg1.d2 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>查看此时的时间序列:</p><div class="language-sql line-numbers-mode" data-ext="sql" data-title="sql"><pre class="language-sql"><code><span class="token keyword">show</span> timeseries root<span class="token punctuation">.</span>sg1<span class="token punctuation">.</span><span class="token operator">*</span><span class="token operator">*</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>+-----------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+ |
| <span class="token operator">|</span> timeseries<span class="token operator">|</span><span class="token builtin class-name">alias</span><span class="token operator">|</span> database<span class="token operator">|</span>dataType<span class="token operator">|</span>encoding<span class="token operator">|</span>compression<span class="token operator">|</span>tags<span class="token operator">|</span>attributes<span class="token operator">|</span>deadband<span class="token operator">|</span>deadband parameters<span class="token operator">|</span> |
| +-----------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+ |
| <span class="token operator">|</span>root.sg1.d1.temperature<span class="token operator">|</span> null<span class="token operator">|</span> root.sg1<span class="token operator">|</span> FLOAT<span class="token operator">|</span> RLE<span class="token operator">|</span> SNAPPY<span class="token operator">|</span>null<span class="token operator">|</span> null<span class="token operator">|</span> null<span class="token operator">|</span> null<span class="token operator">|</span> |
| <span class="token operator">|</span> root.sg1.d1.status<span class="token operator">|</span> null<span class="token operator">|</span> root.sg1<span class="token operator">|</span> BOOLEAN<span class="token operator">|</span> PLAIN<span class="token operator">|</span> SNAPPY<span class="token operator">|</span>null<span class="token operator">|</span> null<span class="token operator">|</span> null<span class="token operator">|</span> null<span class="token operator">|</span> |
| <span class="token operator">|</span> root.sg1.d2.lon<span class="token operator">|</span> null<span class="token operator">|</span> root.sg1<span class="token operator">|</span> FLOAT<span class="token operator">|</span> GORILLA<span class="token operator">|</span> SNAPPY<span class="token operator">|</span>null<span class="token operator">|</span> null<span class="token operator">|</span> null<span class="token operator">|</span> null<span class="token operator">|</span> |
| <span class="token operator">|</span> root.sg1.d2.lat<span class="token operator">|</span> null<span class="token operator">|</span> root.sg1<span class="token operator">|</span> FLOAT<span class="token operator">|</span> GORILLA<span class="token operator">|</span> SNAPPY<span class="token operator">|</span>null<span class="token operator">|</span> null<span class="token operator">|</span> null<span class="token operator">|</span> null<span class="token operator">|</span> |
| +-----------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>查看此时的设备:</p><div class="language-sql line-numbers-mode" data-ext="sql" data-title="sql"><pre class="language-sql"><code><span class="token keyword">show</span> devices root<span class="token punctuation">.</span>sg1<span class="token punctuation">.</span><span class="token operator">*</span><span class="token operator">*</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>+---------------+---------+---------+ |
| <span class="token operator">|</span> devices<span class="token operator">|</span>isAligned<span class="token operator">|</span> Template<span class="token operator">|</span> |
| +---------------+---------+---------+ |
| <span class="token operator">|</span> root.sg1.d1<span class="token operator">|</span> <span class="token boolean">false</span><span class="token operator">|</span> null<span class="token operator">|</span> |
| <span class="token operator">|</span> root.sg1.d2<span class="token operator">|</span> <span class="token boolean">true</span><span class="token operator">|</span> null<span class="token operator">|</span> |
| +---------------+---------+---------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="查看设备模板" tabindex="-1"><a class="header-anchor" href="#查看设备模板"><span>查看设备模板</span></a></h3><ul><li>查看所有设备模板</li></ul><p>SQL 语句如下所示:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> show device templates |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>执行结果如下:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>+-------------+ |
| <span class="token operator">|</span>template name<span class="token operator">|</span> |
| +-------------+ |
| <span class="token operator">|</span> t2<span class="token operator">|</span> |
| <span class="token operator">|</span> t1<span class="token operator">|</span> |
| +-------------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>查看某个设备模板下的物理量</li></ul><p>SQL 语句如下所示:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> show nodes <span class="token keyword">in</span> device template t1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>执行结果如下:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>+-----------+--------+--------+-----------+ |
| <span class="token operator">|</span>child nodes<span class="token operator">|</span>dataType<span class="token operator">|</span>encoding<span class="token operator">|</span>compression<span class="token operator">|</span> |
| +-----------+--------+--------+-----------+ |
| <span class="token operator">|</span>temperature<span class="token operator">|</span> FLOAT<span class="token operator">|</span> RLE<span class="token operator">|</span> SNAPPY<span class="token operator">|</span> |
| <span class="token operator">|</span> status<span class="token operator">|</span> BOOLEAN<span class="token operator">|</span> PLAIN<span class="token operator">|</span> SNAPPY<span class="token operator">|</span> |
| +-----------+--------+--------+-----------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>查看挂载了某个设备模板的路径</li></ul><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> show paths <span class="token builtin class-name">set</span> device template t1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>执行结果如下:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>+-----------+ |
| <span class="token operator">|</span>child paths<span class="token operator">|</span> |
| +-----------+ |
| <span class="token operator">|</span>root.sg1.d1<span class="token operator">|</span> |
| +-----------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>查看使用了某个设备模板的路径(即模板在该路径上已激活,序列已创建)</li></ul><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> show paths using device template t1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>执行结果如下:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>+-----------+ |
| <span class="token operator">|</span>child paths<span class="token operator">|</span> |
| +-----------+ |
| <span class="token operator">|</span>root.sg1.d1<span class="token operator">|</span> |
| +-----------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="解除设备模板" tabindex="-1"><a class="header-anchor" href="#解除设备模板"><span>解除设备模板</span></a></h3><p>若需删除模板表示的某一组时间序列,可采用解除模板操作,SQL语句如下所示:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> delete timeseries of device template t1 from root.sg1.d1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>或</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> deactivate device template t1 from root.sg1.d1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>解除操作支持批量处理,SQL语句如下所示:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> delete timeseries of device template t1 from root.sg1.*, root.sg2.* |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>或</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> deactivate device template t1 from root.sg1.*, root.sg2.* |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>若解除命令不指定模板名称,则会将给定路径涉及的所有模板使用情况均解除。</p><h3 id="卸载设备模板" tabindex="-1"><a class="header-anchor" href="#卸载设备模板"><span>卸载设备模板</span></a></h3><p>卸载设备模板的 SQL 语句如下所示:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> <span class="token builtin class-name">unset</span> device template t1 from root.sg1.d1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>注意</strong>:不支持卸载仍处于激活状态的模板,需保证执行卸载操作前解除对该模板的所有使用,即删除所有该模板表示的序列。</p><h3 id="删除设备模板" tabindex="-1"><a class="header-anchor" href="#删除设备模板"><span>删除设备模板</span></a></h3><p>删除设备模板的 SQL 语句如下所示:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> drop device template t1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>注意</strong>:不支持删除已经挂载的模板,需在删除操作前保证该模板卸载成功。</p><h3 id="修改设备模板" tabindex="-1"><a class="header-anchor" href="#修改设备模板"><span>修改设备模板</span></a></h3><p>在需要新增物理量的场景中,可以通过修改设备模板来给所有已激活该模板的设备新增物理量。</p><p>修改设备模板的 SQL 语句如下所示:</p><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code>IoTDB<span class="token operator">></span> alter device template t1 <span class="token function">add</span> <span class="token punctuation">(</span>speed FLOAT <span class="token assign-left variable">encoding</span><span class="token operator">=</span>RLE, FLOAT TEXT <span class="token assign-left variable">encoding</span><span class="token operator">=</span>PLAIN <span class="token assign-left variable">compression</span><span class="token operator">=</span>SNAPPY<span class="token punctuation">)</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>向已挂载模板的路径下的设备中写入数据,若写入请求中的物理量不在模板中,将自动扩展模板。</strong></p><h2 id="时间序列管理" tabindex="-1"><a class="header-anchor" href="#时间序列管理"><span>时间序列管理</span></a></h2><h3 id="创建时间序列" tabindex="-1"><a class="header-anchor" href="#创建时间序列"><span>创建时间序列</span></a></h3><p>根据建立的数据模型,我们可以分别在两个数据库中创建相应的时间序列。创建时间序列的 SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB > create timeseries root.ln.wf01.wt01.status with datatype=BOOLEAN,encoding=PLAIN |
| IoTDB > create timeseries root.ln.wf01.wt01.temperature with datatype=FLOAT,encoding=RLE |
| IoTDB > create timeseries root.ln.wf02.wt02.hardware with datatype=TEXT,encoding=PLAIN |
| IoTDB > create timeseries root.ln.wf02.wt02.status with datatype=BOOLEAN,encoding=PLAIN |
| IoTDB > create timeseries root.sgcc.wf03.wt01.status with datatype=BOOLEAN,encoding=PLAIN |
| IoTDB > create timeseries root.sgcc.wf03.wt01.temperature with datatype=FLOAT,encoding=RLE |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>从 v0.13 起,可以使用简化版的 SQL 语句创建时间序列:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB > create timeseries root.ln.wf01.wt01.status BOOLEAN encoding=PLAIN |
| IoTDB > create timeseries root.ln.wf01.wt01.temperature FLOAT encoding=RLE |
| IoTDB > create timeseries root.ln.wf02.wt02.hardware TEXT encoding=PLAIN |
| IoTDB > create timeseries root.ln.wf02.wt02.status BOOLEAN encoding=PLAIN |
| IoTDB > create timeseries root.sgcc.wf03.wt01.status BOOLEAN encoding=PLAIN |
| IoTDB > create timeseries root.sgcc.wf03.wt01.temperature FLOAT encoding=RLE |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>需要注意的是,当创建时间序列时指定的编码方式与数据类型不对应时,系统会给出相应的错误提示,如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> create timeseries root.ln.wf02.wt02.status WITH DATATYPE=BOOLEAN, ENCODING=TS_2DIFF |
| error: encoding TS_2DIFF does not support BOOLEAN |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div>`,142),p=t(`<h3 id="创建对齐时间序列" tabindex="-1"><a class="header-anchor" href="#创建对齐时间序列"><span>创建对齐时间序列</span></a></h3><p>创建一组对齐时间序列的SQL语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> CREATE ALIGNED TIMESERIES root.ln.wf01.GPS(latitude FLOAT encoding=PLAIN compressor=SNAPPY, longitude FLOAT encoding=PLAIN compressor=SNAPPY) |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>一组对齐序列中的序列可以有不同的数据类型、编码方式以及压缩方式。</p><p>对齐的时间序列也支持设置别名、标签、属性。</p><h3 id="删除时间序列" tabindex="-1"><a class="header-anchor" href="#删除时间序列"><span>删除时间序列</span></a></h3><p>我们可以使用<code>(DELETE | DROP) TimeSeries <PathPattern></code>语句来删除我们之前创建的时间序列。SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> delete timeseries root.ln.wf01.wt01.status |
| IoTDB> delete timeseries root.ln.wf01.wt01.temperature, root.ln.wf02.wt02.hardware |
| IoTDB> delete timeseries root.ln.wf02.* |
| IoTDB> drop timeseries root.ln.wf02.* |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="查看时间序列" tabindex="-1"><a class="header-anchor" href="#查看时间序列"><span>查看时间序列</span></a></h3><ul><li><p>SHOW LATEST? TIMESERIES pathPattern? timeseriesWhereClause? limitClause?</p><p>SHOW TIMESERIES 中可以有四种可选的子句,查询结果为这些时间序列的所有信息</p></li></ul><p>时间序列信息具体包括:时间序列路径名,database,Measurement 别名,数据类型,编码方式,压缩方式,属性和标签。</p><p>示例:</p><ul><li><p>SHOW TIMESERIES</p><p>展示系统中所有的时间序列信息</p></li><li><p>SHOW TIMESERIES <<code>Path</code>></p><p>返回给定路径的下的所有时间序列信息。其中 <code>Path</code> 需要为一个时间序列路径或路径模式。例如,分别查看<code>root</code>路径和<code>root.ln</code>路径下的时间序列,SQL 语句如下所示:</p></li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> show timeseries root.** |
| IoTDB> show timeseries root.ln.** |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>执行结果分别为:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| | timeseries| alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters| |
| +-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| |root.sgcc.wf03.wt01.temperature| null| root.sgcc| FLOAT| RLE| SNAPPY| null| null| null| null| |
| | root.sgcc.wf03.wt01.status| null| root.sgcc| BOOLEAN| PLAIN| SNAPPY| null| null| null| null| |
| | root.turbine.d1.s1|newAlias| root.turbine| FLOAT| RLE| SNAPPY|{"newTag1":"newV1","tag4":"v4","tag3":"v3"}|{"attr2":"v2","attr1":"newV1","attr4":"v4","attr3":"v3"}| null| null| |
| | root.ln.wf02.wt02.hardware| null| root.ln| TEXT| PLAIN| SNAPPY| null| null| null| null| |
| | root.ln.wf02.wt02.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| null| null| null| null| |
| | root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY| null| null| null| null| |
| | root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| null| null| null| null| |
| +-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| Total line number = 7 |
| It costs 0.016s |
| |
| +-----------------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+ |
| | timeseries|alias| database|dataType|encoding|compression|tags|attributes|deadband|deadband parameters| |
| +-----------------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+ |
| | root.ln.wf02.wt02.hardware| null| root.ln| TEXT| PLAIN| SNAPPY|null| null| null| null| |
| | root.ln.wf02.wt02.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY|null| null| null| null| |
| |root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY|null| null| null| null| |
| | root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY|null| null| null| null| |
| +-----------------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+ |
| Total line number = 4 |
| It costs 0.004s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li><p>SHOW TIMESERIES LIMIT INT OFFSET INT</p><p>只返回从指定下标开始的结果,最大返回条数被 LIMIT 限制,用于分页查询。例如:</p></li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>show timeseries root.ln.** limit 10 offset 10 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>SHOW TIMESERIES WHERE TIMESERIES contains 'containStr'</p><p>对查询结果集根据 timeseries 名称进行字符串模糊匹配过滤。例如:</p></li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>show timeseries root.ln.** where timeseries contains 'wf01.wt' |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>执行结果为:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| | timeseries| alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters| |
| +-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| | root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY| null| null| null| null| |
| | root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| null| null| null| null| |
| +-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| Total line number = 2 |
| It costs 0.016s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li><p>SHOW TIMESERIES WHERE DataType=type</p><p>对查询结果集根据时间序列数据类型进行过滤。例如:</p></li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>show timeseries root.ln.** where dataType=FLOAT |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>执行结果为:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| | timeseries| alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters| |
| +-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| |root.sgcc.wf03.wt01.temperature| null| root.sgcc| FLOAT| RLE| SNAPPY| null| null| null| null| |
| | root.turbine.d1.s1|newAlias| root.turbine| FLOAT| RLE| SNAPPY|{"newTag1":"newV1","tag4":"v4","tag3":"v3"}|{"attr2":"v2","attr1":"newV1","attr4":"v4","attr3":"v3"}| null| null| |
| | root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY| null| null| null| null| |
| +-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| Total line number = 3 |
| It costs 0.016s |
| |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li><p>SHOW LATEST TIMESERIES</p><p>表示查询出的时间序列需要按照最近插入时间戳降序排列</p></li></ul><p>需要注意的是,当查询路径不存在时,系统会返回 0 条时间序列。</p><h3 id="统计时间序列总数" tabindex="-1"><a class="header-anchor" href="#统计时间序列总数"><span>统计时间序列总数</span></a></h3><p>IoTDB 支持使用<code>COUNT TIMESERIES<Path></code>来统计一条路径中的时间序列个数。SQL 语句如下所示:</p><ul><li>可以通过 <code>WHERE</code> 条件对时间序列名称进行字符串模糊匹配,语法为: <code>COUNT TIMESERIES <Path> WHERE TIMESERIES contains 'containStr'</code> 。</li><li>可以通过 <code>WHERE</code> 条件对时间序列数据类型进行过滤,语法为: <code>COUNT TIMESERIES <Path> WHERE DataType=<DataType>'</code>。</li><li>可以通过 <code>WHERE</code> 条件对标签点进行过滤,语法为: <code>COUNT TIMESERIES <Path> WHERE TAGS(key)='value'</code> 或 <code>COUNT TIMESERIES <Path> WHERE TAGS(key) contains 'value'</code>。</li><li>可以通过定义<code>LEVEL</code>来统计指定层级下的时间序列个数。这条语句可以用来统计每一个设备下的传感器数量,语法为:<code>COUNT TIMESERIES <Path> GROUP BY LEVEL=<INTEGER></code>。</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB > COUNT TIMESERIES root.** |
| IoTDB > COUNT TIMESERIES root.ln.** |
| IoTDB > COUNT TIMESERIES root.ln.*.*.status |
| IoTDB > COUNT TIMESERIES root.ln.wf01.wt01.status |
| IoTDB > COUNT TIMESERIES root.** WHERE TIMESERIES contains 'sgcc' |
| IoTDB > COUNT TIMESERIES root.** WHERE DATATYPE = INT64 |
| IoTDB > COUNT TIMESERIES root.** WHERE TAGS(unit) contains 'c' |
| IoTDB > COUNT TIMESERIES root.** WHERE TAGS(unit) = 'c' |
| IoTDB > COUNT TIMESERIES root.** WHERE TIMESERIES contains 'sgcc' group by level = 1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>例如有如下时间序列(可以使用<code>show timeseries</code>展示所有时间序列):</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| | timeseries| alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters| |
| +-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| |root.sgcc.wf03.wt01.temperature| null| root.sgcc| FLOAT| RLE| SNAPPY| null| null| null| null| |
| | root.sgcc.wf03.wt01.status| null| root.sgcc| BOOLEAN| PLAIN| SNAPPY| null| null| null| null| |
| | root.turbine.d1.s1|newAlias| root.turbine| FLOAT| RLE| SNAPPY|{"newTag1":"newV1","tag4":"v4","tag3":"v3"}|{"attr2":"v2","attr1":"newV1","attr4":"v4","attr3":"v3"}| null| null| |
| | root.ln.wf02.wt02.hardware| null| root.ln| TEXT| PLAIN| SNAPPY| {"unit":"c"}| null| null| null| |
| | root.ln.wf02.wt02.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| {"description":"test1"}| null| null| null| |
| | root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY| null| null| null| null| |
| | root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| null| null| null| null| |
| +-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+ |
| Total line number = 7 |
| It costs 0.004s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>那么 Metadata Tree 如下所示:</p><img style="width:100%;max-width:600px;margin-left:auto;margin-right:auto;display:block;" src="https://alioss.timecho.com/docs/img/github/69792176-1718f400-1201-11ea-861a-1a83c07ca144.jpg"><p>可以看到,<code>root</code>被定义为<code>LEVEL=0</code>。那么当你输入如下语句时:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB > COUNT TIMESERIES root.** GROUP BY LEVEL=1 |
| IoTDB > COUNT TIMESERIES root.ln.** GROUP BY LEVEL=2 |
| IoTDB > COUNT TIMESERIES root.ln.wf01.* GROUP BY LEVEL=2 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>你将得到以下结果:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> COUNT TIMESERIES root.** GROUP BY LEVEL=1 |
| +------------+-----------------+ |
| | column|count(timeseries)| |
| +------------+-----------------+ |
| | root.sgcc| 2| |
| |root.turbine| 1| |
| | root.ln| 4| |
| +------------+-----------------+ |
| Total line number = 3 |
| It costs 0.002s |
| |
| IoTDB > COUNT TIMESERIES root.ln.** GROUP BY LEVEL=2 |
| +------------+-----------------+ |
| | column|count(timeseries)| |
| +------------+-----------------+ |
| |root.ln.wf02| 2| |
| |root.ln.wf01| 2| |
| +------------+-----------------+ |
| Total line number = 2 |
| It costs 0.002s |
| |
| IoTDB > COUNT TIMESERIES root.ln.wf01.* GROUP BY LEVEL=2 |
| +------------+-----------------+ |
| | column|count(timeseries)| |
| +------------+-----------------+ |
| |root.ln.wf01| 2| |
| +------------+-----------------+ |
| Total line number = 1 |
| It costs 0.002s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p>注意:时间序列的路径只是过滤条件,与 level 的定义无关。</p></blockquote><h3 id="标签点管理" tabindex="-1"><a class="header-anchor" href="#标签点管理"><span>标签点管理</span></a></h3><p>我们可以在创建时间序列的时候,为它添加别名和额外的标签和属性信息。</p><p>标签和属性的区别在于:</p><ul><li>标签可以用来查询时间序列路径,会在内存中维护标点到时间序列路径的倒排索引:标签 -> 时间序列路径</li><li>属性只能用时间序列路径来查询:时间序列路径 -> 属性</li></ul><p>所用到的扩展的创建时间序列的 SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>create timeseries root.turbine.d1.s1(temprature) with datatype=FLOAT, encoding=RLE, compression=SNAPPY tags(tag1=v1, tag2=v2) attributes(attr1=v1, attr2=v2) |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>括号里的<code>temprature</code>是<code>s1</code>这个传感器的别名。<br> 我们可以在任何用到<code>s1</code>的地方,将其用<code>temprature</code>代替,这两者是等价的。</p><blockquote><p>IoTDB 同时支持在查询语句中使用 AS 函数设置别名。二者的区别在于:AS 函数设置的别名用于替代整条时间序列名,且是临时的,不与时间序列绑定;而上文中的别名只作为传感器的别名,与其绑定且可与原传感器名等价使用。</p></blockquote><blockquote><p>注意:额外的标签和属性信息总的大小不能超过<code>tag_attribute_total_size</code>.</p></blockquote><ul><li>标签点属性更新<br> 创建时间序列后,我们也可以对其原有的标签点属性进行更新,主要有以下六种更新方式:</li><li>重命名标签或属性</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>ALTER timeseries root.turbine.d1.s1 RENAME tag1 TO newTag1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>重新设置标签或属性的值</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>ALTER timeseries root.turbine.d1.s1 SET newTag1=newV1, attr1=newV1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>删除已经存在的标签或属性</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>ALTER timeseries root.turbine.d1.s1 DROP tag1, tag2 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>添加新的标签</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>ALTER timeseries root.turbine.d1.s1 ADD TAGS tag3=v3, tag4=v4 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>添加新的属性</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>ALTER timeseries root.turbine.d1.s1 ADD ATTRIBUTES attr3=v3, attr4=v4 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>更新插入别名,标签和属性</li></ul><blockquote><p>如果该别名,标签或属性原来不存在,则插入,否则,用新值更新原来的旧值</p></blockquote><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS=newAlias TAGS(tag2=newV2, tag3=v3) ATTRIBUTES(attr3=v3, attr4=v4) |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>使用标签作为过滤条件查询时间序列,使用 TAGS(tagKey) 来标识作为过滤条件的标签</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>SHOW TIMESERIES (<\`PathPattern\`>)? timeseriesWhereClause |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>返回给定路径的下的所有满足条件的时间序列信息,SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>ALTER timeseries root.ln.wf02.wt02.hardware ADD TAGS unit=c |
| ALTER timeseries root.ln.wf02.wt02.status ADD TAGS description=test1 |
| show timeseries root.ln.** where TAGS(unit)='c' |
| show timeseries root.ln.** where TAGS(description) contains 'test1' |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>执行结果分别为:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+--------------------------+-----+-------------+--------+--------+-----------+------------+----------+--------+-------------------+ |
| | timeseries|alias| database|dataType|encoding|compression| tags|attributes|deadband|deadband parameters| |
| +--------------------------+-----+-------------+--------+--------+-----------+------------+----------+--------+-------------------+ |
| |root.ln.wf02.wt02.hardware| null| root.ln| TEXT| PLAIN| SNAPPY|{"unit":"c"}| null| null| null| |
| +--------------------------+-----+-------------+--------+--------+-----------+------------+----------+--------+-------------------+ |
| Total line number = 1 |
| It costs 0.005s |
| |
| +------------------------+-----+-------------+--------+--------+-----------+-----------------------+----------+--------+-------------------+ |
| | timeseries|alias| database|dataType|encoding|compression| tags|attributes|deadband|deadband parameters| |
| +------------------------+-----+-------------+--------+--------+-----------+-----------------------+----------+--------+-------------------+ |
| |root.ln.wf02.wt02.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY|{"description":"test1"}| null| null| null| |
| +------------------------+-----+-------------+--------+--------+-----------+-----------------------+----------+--------+-------------------+ |
| Total line number = 1 |
| It costs 0.004s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>使用标签作为过滤条件统计时间序列数量</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>COUNT TIMESERIES (<\`PathPattern\`>)? timeseriesWhereClause |
| COUNT TIMESERIES (<\`PathPattern\`>)? timeseriesWhereClause GROUP BY LEVEL=<INTEGER> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>返回给定路径的下的所有满足条件的时间序列的数量,SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>count timeseries |
| count timeseries root.** where TAGS(unit)='c' |
| count timeseries root.** where TAGS(unit)='c' group by level = 2 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>执行结果分别为:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> count timeseries |
| +-----------------+ |
| |count(timeseries)| |
| +-----------------+ |
| | 6| |
| +-----------------+ |
| Total line number = 1 |
| It costs 0.019s |
| IoTDB> count timeseries root.** where TAGS(unit)='c' |
| +-----------------+ |
| |count(timeseries)| |
| +-----------------+ |
| | 2| |
| +-----------------+ |
| Total line number = 1 |
| It costs 0.020s |
| IoTDB> count timeseries root.** where TAGS(unit)='c' group by level = 2 |
| +--------------+-----------------+ |
| | column|count(timeseries)| |
| +--------------+-----------------+ |
| | root.ln.wf02| 2| |
| | root.ln.wf01| 0| |
| |root.sgcc.wf03| 0| |
| +--------------+-----------------+ |
| Total line number = 3 |
| It costs 0.011s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p>注意,现在我们只支持一个查询条件,要么是等值条件查询,要么是包含条件查询。当然 where 子句中涉及的必须是标签值,而不能是属性值。</p></blockquote><p>创建对齐时间序列</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>create aligned timeseries root.sg1.d1(s1 INT32 tags(tag1=v1, tag2=v2) attributes(attr1=v1, attr2=v2), s2 DOUBLE tags(tag3=v3, tag4=v4) attributes(attr3=v3, attr4=v4)) |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>执行结果如下:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> show timeseries |
| +--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+ |
| | timeseries|alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters| |
| +--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+ |
| |root.sg1.d1.s1| null| root.sg1| INT32| RLE| SNAPPY|{"tag1":"v1","tag2":"v2"}|{"attr2":"v2","attr1":"v1"}| null| null| |
| |root.sg1.d1.s2| null| root.sg1| DOUBLE| GORILLA| SNAPPY|{"tag4":"v4","tag3":"v3"}|{"attr4":"v4","attr3":"v3"}| null| null| |
| +--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>支持查询:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> show timeseries where TAGS(tag1)='v1' |
| +--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+ |
| | timeseries|alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters| |
| +--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+ |
| |root.sg1.d1.s1| null| root.sg1| INT32| RLE| SNAPPY|{"tag1":"v1","tag2":"v2"}|{"attr2":"v2","attr1":"v1"}| null| null| |
| +--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>上述对时间序列标签、属性的更新等操作都支持。</p><h2 id="路径查询" tabindex="-1"><a class="header-anchor" href="#路径查询"><span>路径查询</span></a></h2><h3 id="查看路径的所有子路径" tabindex="-1"><a class="header-anchor" href="#查看路径的所有子路径"><span>查看路径的所有子路径</span></a></h3><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>SHOW CHILD PATHS pathPattern |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>可以查看此路径模式所匹配的所有路径的下一层的所有路径和它对应的节点类型,即pathPattern.*所匹配的路径及其节点类型。</p><p>节点类型:ROOT -> SG INTERNAL -> DATABASE -> INTERNAL -> DEVICE -> TIMESERIES</p><p>示例:</p><ul><li>查询 root.ln 的下一层:show child paths root.ln</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+------------+----------+ |
| | child paths|node types| |
| +------------+----------+ |
| |root.ln.wf01| INTERNAL| |
| |root.ln.wf02| INTERNAL| |
| +------------+----------+ |
| Total line number = 2 |
| It costs 0.002s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>查询形如 root.xx.xx.xx 的路径:show child paths root.*.*</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+---------------+ |
| | child paths| |
| +---------------+ |
| |root.ln.wf01.s1| |
| |root.ln.wf02.s2| |
| +---------------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="查看路径的下一级节点" tabindex="-1"><a class="header-anchor" href="#查看路径的下一级节点"><span>查看路径的下一级节点</span></a></h3><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>SHOW CHILD NODES pathPattern |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>可以查看此路径模式所匹配的节点的下一层的所有节点。</p><p>示例:</p><ul><li>查询 root 的下一层:show child nodes root</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+------------+ |
| | child nodes| |
| +------------+ |
| | ln| |
| +------------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>查询 root.ln 的下一层 :show child nodes root.ln</li></ul><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+------------+ |
| | child nodes| |
| +------------+ |
| | wf01| |
| | wf02| |
| +------------+ |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="统计节点数" tabindex="-1"><a class="header-anchor" href="#统计节点数"><span>统计节点数</span></a></h3><p>IoTDB 支持使用<code>COUNT NODES <PathPattern> LEVEL=<INTEGER></code>来统计当前 Metadata<br> 树下满足某路径模式的路径中指定层级的节点个数。这条语句可以用来统计带有特定采样点的设备数。例如:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB > COUNT NODES root.** LEVEL=2 |
| IoTDB > COUNT NODES root.ln.** LEVEL=2 |
| IoTDB > COUNT NODES root.ln.wf01.* LEVEL=3 |
| IoTDB > COUNT NODES root.**.temperature LEVEL=3 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>对于上面提到的例子和 Metadata Tree,你可以获得如下结果:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+------------+ |
| |count(nodes)| |
| +------------+ |
| | 4| |
| +------------+ |
| Total line number = 1 |
| It costs 0.003s |
| |
| +------------+ |
| |count(nodes)| |
| +------------+ |
| | 2| |
| +------------+ |
| Total line number = 1 |
| It costs 0.002s |
| |
| +------------+ |
| |count(nodes)| |
| +------------+ |
| | 1| |
| +------------+ |
| Total line number = 1 |
| It costs 0.002s |
| |
| +------------+ |
| |count(nodes)| |
| +------------+ |
| | 2| |
| +------------+ |
| Total line number = 1 |
| It costs 0.002s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p>注意:时间序列的路径只是过滤条件,与 level 的定义无关。</p></blockquote><h3 id="查看设备" tabindex="-1"><a class="header-anchor" href="#查看设备"><span>查看设备</span></a></h3><ul><li>SHOW DEVICES pathPattern? (WITH DATABASE)? devicesWhereClause? limitClause?</li></ul><p>与 <code>Show Timeseries</code> 相似,IoTDB 目前也支持两种方式查看设备。</p><ul><li><code>SHOW DEVICES</code> 语句显示当前所有的设备信息,等价于 <code>SHOW DEVICES root.**</code>。</li><li><code>SHOW DEVICES <PathPattern></code> 语句规定了 <code>PathPattern</code>,返回给定的路径模式所匹配的设备信息。</li><li><code>WHERE</code> 条件中可以使用 <code>DEVICE contains 'xxx'</code>,根据 device 名称进行模糊查询。</li><li><code>WHERE</code> 条件中可以使用 <code>TEMPLATE = 'xxx'</code>,<code>TEMPLATE != 'xxx'</code>,根据 template 名称进行过滤查询。</li><li><code>WHERE</code> 条件中可以使用 <code>TEMPLATE is null</code>,<code>TEMPLATE is not null</code>,根据 template 是否为null(null 表示没激活)进行过滤查询。</li></ul><p>SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> show devices |
| IoTDB> show devices root.ln.** |
| IoTDB> show devices root.ln.** where device contains 't' |
| IoTDB> show devices root.ln.** where template = 't1' |
| IoTDB> show devices root.ln.** where template is null |
| IoTDB> show devices root.ln.** where template != 't1' |
| IoTDB> show devices root.ln.** where template is not null |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>你可以获得如下数据:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+-------------------+---------+---------+ |
| | devices|isAligned| Template| |
| +-------------------+---------+---------+ |
| | root.ln.wf01.wt01| false| t1| |
| | root.ln.wf02.wt02| false| null| |
| |root.sgcc.wf03.wt01| false| null| |
| | root.turbine.d1| false| null| |
| +-------------------+---------+---------+ |
| Total line number = 4 |
| It costs 0.002s |
| |
| +-----------------+---------+---------+ |
| | devices|isAligned| Template| |
| +-----------------+---------+---------+ |
| |root.ln.wf01.wt01| false| t1| |
| |root.ln.wf02.wt02| false| null| |
| +-----------------+---------+---------+ |
| Total line number = 2 |
| It costs 0.001s |
| |
| +-----------------+---------+---------+ |
| | devices|isAligned| Template| |
| +-----------------+---------+---------+ |
| |root.ln.wf01.wt01| false| t1| |
| |root.ln.wf02.wt02| false| null| |
| +-----------------+---------+---------+ |
| Total line number = 2 |
| It costs 0.001s |
| |
| +-----------------+---------+---------+ |
| | devices|isAligned| Template| |
| +-----------------+---------+---------+ |
| |root.ln.wf01.wt01| false| t1| |
| +-----------------+---------+---------+ |
| Total line number = 1 |
| It costs 0.001s |
| |
| +-----------------+---------+---------+ |
| | devices|isAligned| Template| |
| +-----------------+---------+---------+ |
| |root.ln.wf02.wt02| false| null| |
| +-----------------+---------+---------+ |
| Total line number = 1 |
| It costs 0.001s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>其中,<code>isAligned</code>表示该设备下的时间序列是否对齐,<br><code>Template</code>显示着该设备所激活的模板名,null 表示没有激活模板。</p><p>查看设备及其 database 信息,可以使用 <code>SHOW DEVICES WITH DATABASE</code> 语句。</p><ul><li><code>SHOW DEVICES WITH DATABASE</code> 语句显示当前所有的设备信息和其所在的 database,等价于 <code>SHOW DEVICES root.**</code>。</li><li><code>SHOW DEVICES <PathPattern> WITH DATABASE</code> 语句规定了 <code>PathPattern</code>,返回给定的路径模式所匹配的设备信息和其所在的 database。</li></ul><p>SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> show devices with database |
| IoTDB> show devices root.ln.** with database |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>你可以获得如下数据:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+-------------------+-------------+---------+---------+ |
| | devices| database|isAligned| Template| |
| +-------------------+-------------+---------+---------+ |
| | root.ln.wf01.wt01| root.ln| false| t1| |
| | root.ln.wf02.wt02| root.ln| false| null| |
| |root.sgcc.wf03.wt01| root.sgcc| false| null| |
| | root.turbine.d1| root.turbine| false| null| |
| +-------------------+-------------+---------+---------+ |
| Total line number = 4 |
| It costs 0.003s |
| |
| +-----------------+-------------+---------+---------+ |
| | devices| database|isAligned| Template| |
| +-----------------+-------------+---------+---------+ |
| |root.ln.wf01.wt01| root.ln| false| t1| |
| |root.ln.wf02.wt02| root.ln| false| null| |
| +-----------------+-------------+---------+---------+ |
| Total line number = 2 |
| It costs 0.001s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="统计设备数量" tabindex="-1"><a class="header-anchor" href="#统计设备数量"><span>统计设备数量</span></a></h3><ul><li>COUNT DEVICES <PathPattern></li></ul><p>上述语句用于统计设备的数量,同时允许指定<code>PathPattern</code> 用于统计匹配该<code>PathPattern</code> 的设备数量</p><p>SQL 语句如下所示:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>IoTDB> show devices |
| IoTDB> count devices |
| IoTDB> count devices root.ln.** |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>你可以获得如下数据:</p><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>+-------------------+---------+---------+ |
| | devices|isAligned| Template| |
| +-------------------+---------+---------+ |
| |root.sgcc.wf03.wt03| false| null| |
| | root.turbine.d1| false| null| |
| | root.ln.wf02.wt02| false| null| |
| | root.ln.wf01.wt01| false| t1| |
| +-------------------+---------+---------+ |
| Total line number = 4 |
| It costs 0.024s |
| |
| +--------------+ |
| |count(devices)| |
| +--------------+ |
| | 4| |
| +--------------+ |
| Total line number = 1 |
| It costs 0.004s |
| |
| +--------------+ |
| |count(devices)| |
| +--------------+ |
| | 2| |
| +--------------+ |
| Total line number = 1 |
| It costs 0.004s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,129);function m(b,g){const n=d("RouteLink");return r(),o("div",null,[u,i("p",null,[e("在 database 创建后,我们可以使用 "),a(n,{to:"/zh/UserGuide/latest/SQL-Manual/SQL-Manual.html#%E6%9F%A5%E7%9C%8B%E6%95%B0%E6%8D%AE%E5%BA%93"},{default:s(()=>[e("SHOW DATABASES")]),_:1}),e(" 语句和 "),a(n,{to:"/zh/UserGuide/latest/SQL-Manual/SQL-Manual.html#%E6%9F%A5%E7%9C%8B%E6%95%B0%E6%8D%AE%E5%BA%93"},{default:s(()=>[e("SHOW DATABASES <PathPattern>")]),_:1}),e(" 来查看 database,SQL 语句如下所示:")]),v,i("p",null,[e("详细的数据类型与编码方式的对应列表请参见 "),a(n,{to:"/zh/UserGuide/latest/Basic-Concept/Encoding-and-Compression.html"},{default:s(()=>[e("编码方式")]),_:1}),e("。")]),p])}const T=l(c,[["render",m],["__file","Operate-Metadata.html.vue"]]),x=JSON.parse('{"path":"/zh/UserGuide/latest/User-Manual/Operate-Metadata.html","title":"元数据操作","lang":"zh-CN","frontmatter":{"description":"元数据操作 数据库管理 数据库(Database)可以被视为关系数据库中的Database。 创建数据库 我们可以根据存储模型建立相应的数据库。如下所示: 需要注意的是,推荐创建一个 database. Database 的父子节点都不能再设置 database。例如在已经有root.ln和root.sgcc这两个 database 的情况下,创建ro...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://iotdb.apache.org/UserGuide/latest/User-Manual/Operate-Metadata.html"}],["meta",{"property":"og:url","content":"https://iotdb.apache.org/zh/UserGuide/latest/User-Manual/Operate-Metadata.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"元数据操作"}],["meta",{"property":"og:description","content":"元数据操作 数据库管理 数据库(Database)可以被视为关系数据库中的Database。 创建数据库 我们可以根据存储模型建立相应的数据库。如下所示: 需要注意的是,推荐创建一个 database. Database 的父子节点都不能再设置 database。例如在已经有root.ln和root.sgcc这两个 database 的情况下,创建ro..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-02-07T04:43:32.000Z"}],["meta",{"property":"article:modified_time","content":"2024-02-07T04:43:32.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"元数据操作\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-02-07T04:43:32.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"数据库管理","slug":"数据库管理","link":"#数据库管理","children":[{"level":3,"title":"创建数据库","slug":"创建数据库","link":"#创建数据库","children":[]},{"level":3,"title":"查看数据库","slug":"查看数据库","link":"#查看数据库","children":[]},{"level":3,"title":"删除数据库","slug":"删除数据库","link":"#删除数据库","children":[]},{"level":3,"title":"统计数据库数量","slug":"统计数据库数量","link":"#统计数据库数量","children":[]},{"level":3,"title":"TTL","slug":"ttl","link":"#ttl","children":[]},{"level":3,"title":"设置异构数据库(进阶操作)","slug":"设置异构数据库-进阶操作","link":"#设置异构数据库-进阶操作","children":[]}]},{"level":2,"title":"设备模板管理","slug":"设备模板管理","link":"#设备模板管理","children":[{"level":3,"title":"创建设备模板","slug":"创建设备模板","link":"#创建设备模板","children":[]},{"level":3,"title":"挂载设备模板","slug":"挂载设备模板","link":"#挂载设备模板","children":[]},{"level":3,"title":"激活设备模板","slug":"激活设备模板","link":"#激活设备模板","children":[]},{"level":3,"title":"查看设备模板","slug":"查看设备模板","link":"#查看设备模板","children":[]},{"level":3,"title":"解除设备模板","slug":"解除设备模板","link":"#解除设备模板","children":[]},{"level":3,"title":"卸载设备模板","slug":"卸载设备模板","link":"#卸载设备模板","children":[]},{"level":3,"title":"删除设备模板","slug":"删除设备模板","link":"#删除设备模板","children":[]},{"level":3,"title":"修改设备模板","slug":"修改设备模板","link":"#修改设备模板","children":[]}]},{"level":2,"title":"时间序列管理","slug":"时间序列管理","link":"#时间序列管理","children":[{"level":3,"title":"创建时间序列","slug":"创建时间序列","link":"#创建时间序列","children":[]},{"level":3,"title":"创建对齐时间序列","slug":"创建对齐时间序列","link":"#创建对齐时间序列","children":[]},{"level":3,"title":"删除时间序列","slug":"删除时间序列","link":"#删除时间序列","children":[]},{"level":3,"title":"查看时间序列","slug":"查看时间序列","link":"#查看时间序列","children":[]},{"level":3,"title":"统计时间序列总数","slug":"统计时间序列总数","link":"#统计时间序列总数","children":[]},{"level":3,"title":"标签点管理","slug":"标签点管理","link":"#标签点管理","children":[]}]},{"level":2,"title":"路径查询","slug":"路径查询","link":"#路径查询","children":[{"level":3,"title":"查看路径的所有子路径","slug":"查看路径的所有子路径","link":"#查看路径的所有子路径","children":[]},{"level":3,"title":"查看路径的下一级节点","slug":"查看路径的下一级节点","link":"#查看路径的下一级节点","children":[]},{"level":3,"title":"统计节点数","slug":"统计节点数","link":"#统计节点数","children":[]},{"level":3,"title":"查看设备","slug":"查看设备","link":"#查看设备","children":[]},{"level":3,"title":"统计设备数量","slug":"统计设备数量","link":"#统计设备数量","children":[]}]}],"git":{"createdTime":1688958677000,"updatedTime":1707281012000,"contributors":[{"name":"wanghui42","email":"105700158+wanghui42@users.noreply.github.com","commits":4},{"name":"CritasWang","email":"critas@outlook.com","commits":1},{"name":"Tanxilo","email":"101696091+tanxilo@users.noreply.github.com","commits":1}]},"readingTime":{"minutes":21.39,"words":6416},"filePathRelative":"zh/UserGuide/latest/User-Manual/Operate-Metadata.md","localizedDate":"2023年7月10日","autoDesc":true}');export{T as comp,x as data}; |