Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dgr6878
TDengine
提交
adcc60de
T
TDengine
项目概览
dgr6878
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
adcc60de
编写于
7月 31, 2020
作者:
H
haojun Liao
提交者:
GitHub
7月 31, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update Queries-ch.md
上级
cb3fc6de
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
18 deletion
+17
-18
documentation20/webdocs/markdowndocs/Queries-ch.md
documentation20/webdocs/markdowndocs/Queries-ch.md
+17
-18
未找到文件。
documentation20/webdocs/markdowndocs/Queries-ch.md
浏览文件 @
adcc60de
...
...
@@ -6,17 +6,16 @@
## 主要查询功能
TDengine
采用SQL作为查询语言,应用程序可以通过C/C++, JDBC, GO, Python连接器发送SQL查询语句,用户还可以通过TAOS Shell直接手动执行SQL即席查询,十分方便。
支持如下查询功能:
TDengine
采用 SQL 作为查询语言。应用程序可以通过 C/C++, Java, Go, Python 连接器发送 SQL 语句,用户可以通过 TDengine 提供的命令行(Command Line Interface, CLI)工具 TAOS Shell 手动执行 SQL 即席查询(Ad-Hoc Query)。TDengine
支持如下查询功能:
-
查询单列、或多列查询
-
支持值过滤条件:
\>
,
\<
, =,
\<
> 大于,小于,等于,不等于等等
-
支持对标签的模糊匹配
-
支持Group by, Order by, Limit, Offset
-
支持列之间的四则运算
-
支持时间戳对齐的JOIN操作
-
支持多种函数: count, max, min, avg, sum, twa, stddev, leastsquares, top, bottom, first, last, percentile, apercentile, last_row, spread, diff
-
单列、多列数据查询
-
标签和数值的多种过滤条件:
\>
,
\<
, =,
\<
>, like 等
-
聚合结果的分组(Group by)、排序(Order by)、约束输出(Limit/Offset)
-
数值列及聚合结果的四则运算
-
时间戳对齐的连接查询(Join Query)操作
-
多种聚合/计算函数: count, max, min, avg, sum, twa, stddev, leastsquares, top, bottom, first, last, percentile, apercentile, last_row, spread, diff等
例如:在TAOS Shell中,从表d1001中查询出vlotage >215的记录,按时间降序排列,仅仅输出2条。
例如:在TAOS Shell中,从表d1001中查询出vlotage >
215的记录,按时间降序排列,仅仅输出2条。
```
mysql
taos> select * from d1001 where voltage > 215 order by ts desc limit 2;
ts | current | voltage | phase |
...
...
@@ -31,7 +30,7 @@ Query OK, 2 row(s) in set (0.001100s)
## 多表聚合查询
TDengine对每个数据采集点单独建表,但
应用经常需要对数据点之间进行聚合。为高效的进行聚合操作,TDengine引入超级表(STable)的概念。超级表用来代表一特定类型的数据采集点,它是表的集合,包含多张表。这集合里每张表的Schema是一样的
,但每张表都带有自己的静态标签,标签可以多个,可以随时增加、删除和修改。
TDengine对每个数据采集点单独建表,但
在实际应用中经常需要对不同的采集点数据进行聚合。为高效的进行聚合操作,TDengine引入超级表(STable)的概念。超级表用来代表一特定类型的数据采集点,它是包含多张表的表集合,集合里每张表的模式(schema)完全一致
,但每张表都带有自己的静态标签,标签可以多个,可以随时增加、删除和修改。
应用可通过指定标签的过滤条件,对一个STable下的全部或部分表进行聚合或统计操作,这样大大简化应用的开发。其具体流程如下图所示:
...
...
@@ -39,16 +38,16 @@ TDengine对每个数据采集点单独建表,但应用经常需要对数据点
<center>
多表聚合查询原理图
</center>
1:应用将一个查询条件发往系统;2: taosc将超级表的名字发往
Meta Node(管理节点);3:管理节点将超级表所拥有的vnode列表发回
taosc;4:taosc将计算的请求连同标签过滤条件发往这些vnode对应的多个数据节点;5:每个vnode先在内存里查找出自己节点里符合标签过滤条件的表的集合,然后扫描存储的时序数据,完成相应的聚合计算,将结果返回给taosc;6:taosc将多个数据节点返回的结果做最后的聚合,将其返回给应用。
1:应用将一个查询条件发往系统;2: taosc将超级表的名字发往
Meta Node(管理节点);3:管理节点将超级表所拥有的 vnode 列表发回
taosc;4:taosc将计算的请求连同标签过滤条件发往这些vnode对应的多个数据节点;5:每个vnode先在内存里查找出自己节点里符合标签过滤条件的表的集合,然后扫描存储的时序数据,完成相应的聚合计算,将结果返回给taosc;6:taosc将多个数据节点返回的结果做最后的聚合,将其返回给应用。
由于TDengine在vnode内将标签数据与时序数据分离存储,通过先在内存里过滤标签数据,将需要扫描的数据集大幅减少,大幅提升
了
聚合计算速度。同时,由于数据分布在多个vnode/dnode,聚合计算操作在多个vnode里并发进行,又进一步提升了聚合的速度。
由于TDengine在vnode内将标签数据与时序数据分离存储,通过先在内存里过滤标签数据,将需要扫描的数据集大幅减少,大幅提升聚合计算速度。同时,由于数据分布在多个vnode/dnode,聚合计算操作在多个vnode里并发进行,又进一步提升了聚合的速度。
对普通表的聚合函数以及绝大部分操作都适用于超级表,语法完全一样,细节请看TAOS SQL。
对普通表的聚合函数以及绝大部分操作都适用于超级表,语法完全一样,细节请看
TAOS SQL。
比如:在TAOS Shell,查找所有智能电表采集的电压平均值,并按照location分组
```
mysql
taos>
select avg(voltage) from meters group by
location;
taos>
SELECT AVG(voltage) FROM meters GROUP BY
location;
avg(voltage) | location |
=============================================================
222.000000000 | Beijing.Haidian |
...
...
@@ -58,18 +57,18 @@ Query OK, 2 row(s) in set (0.002136s)
## 降采样查询、插值
物联网场景里,经常需要
做down sampling,需要将采集的数据按时间段进行聚合。TDengine提供了一个简便的关键词interval让操作变得极为简单。比如:将智能电表d1001
采集的电流值每10秒钟求和
物联网场景里,经常需要
通过降采样(down sampling)将采集的数据按时间段进行聚合。TDengine 提供了一个简便的关键词 interval 让按照时间窗口的查询操作变得极为简单。比如,将智能电表 d1001
采集的电流值每10秒钟求和
```
mysql
taos> SELECT sum(current) FROM d1001
interval
(10s) ;
taos> SELECT sum(current) FROM d1001
INTERVAL
(10s) ;
ts | sum(current) |
======================================================
2018-10-03 14:38:00.000 | 10.300000191 |
2018-10-03 14:38:10.000 | 24.900000572 |
Query OK, 2 row(s) in set (0.000883s)
```
降采样操作
还
适用于超级表,比如:将所有智能电表采集的电流值每秒钟求和
降采样操作
也
适用于超级表,比如:将所有智能电表采集的电流值每秒钟求和
```
mysql
taos> SELECT
sum(current) FROM meters interval
(1s) ;
taos> SELECT
SUM(current) FROM meters INTERVAL
(1s) ;
ts | sum(current) |
======================================================
2018-10-03 14:38:04.000 | 10.199999809 |
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录