Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2b48df0b
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2b48df0b
编写于
4月 11, 2023
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '3.0' of
https://github.com/taosdata/TDengine
into enh/tsdb_optimize
上级
1df5680e
ed286e63
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
45 addition
and
10 deletion
+45
-10
docs/zh/07-develop/06-stream.md
docs/zh/07-develop/06-stream.md
+4
-4
docs/zh/12-taos-sql/14-stream.md
docs/zh/12-taos-sql/14-stream.md
+37
-4
packaging/tools/install.sh
packaging/tools/install.sh
+4
-2
未找到文件。
docs/zh/07-develop/06-stream.md
浏览文件 @
2b48df0b
...
@@ -52,7 +52,7 @@ CREATE TABLE d1004 USING meters TAGS ("California.LosAngeles", 3);
...
@@ -52,7 +52,7 @@ CREATE TABLE d1004 USING meters TAGS ("California.LosAngeles", 3);
### 创建流
### 创建流
```
sql
```
sql
create
stream
current_stream
into
current_stream_output_stb
as
select
_wstart
as
start
,
_wend
as
wend
,
max
(
current
)
as
max_current
from
meters
where
voltage
<=
220
interval
(
5
s
);
create
stream
current_stream
trigger
at_once
into
current_stream_output_stb
as
select
_wstart
as
w
start
,
_wend
as
wend
,
max
(
current
)
as
max_current
from
meters
where
voltage
<=
220
interval
(
5
s
);
```
```
### 写入数据
### 写入数据
...
@@ -70,8 +70,8 @@ insert into d1004 values("2018-10-03 14:38:06.500", 11.50000, 221, 0.35000);
...
@@ -70,8 +70,8 @@ insert into d1004 values("2018-10-03 14:38:06.500", 11.50000, 221, 0.35000);
### 查询以观察结果
### 查询以观察结果
```
sql
```
sql
taos
>
select
start
,
wend
,
max_current
from
current_stream_output_stb
;
taos
>
select
w
start
,
wend
,
max_current
from
current_stream_output_stb
;
start
|
wend
|
max_current
|
wstart
|
wend
|
max_current
|
===========================================================================
===========================================================================
2018
-
10
-
03
14
:
38
:
05
.
000
|
2018
-
10
-
03
14
:
38
:
10
.
000
|
10
.
30000
|
2018
-
10
-
03
14
:
38
:
05
.
000
|
2018
-
10
-
03
14
:
38
:
10
.
000
|
10
.
30000
|
2018
-
10
-
03
14
:
38
:
15
.
000
|
2018
-
10
-
03
14
:
38
:
20
.
000
|
12
.
60000
|
2018
-
10
-
03
14
:
38
:
15
.
000
|
2018
-
10
-
03
14
:
38
:
20
.
000
|
12
.
60000
|
...
@@ -89,7 +89,7 @@ Query OK, 2 rows in database (0.018762s)
...
@@ -89,7 +89,7 @@ Query OK, 2 rows in database (0.018762s)
### 创建流
### 创建流
```
sql
```
sql
create
stream
power_stream
into
power_stream_output_stb
as
select
ts
,
concat_ws
(
"."
,
location
,
tbname
)
as
meter_location
,
current
*
voltage
*
cos
(
phase
)
as
active_power
,
current
*
voltage
*
sin
(
phase
)
as
reactive_power
from
meters
partition
by
tbname
;
create
stream
power_stream
trigger
at_once
into
power_stream_output_stb
as
select
ts
,
concat_ws
(
"."
,
location
,
tbname
)
as
meter_location
,
current
*
voltage
*
cos
(
phase
)
as
active_power
,
current
*
voltage
*
sin
(
phase
)
as
reactive_power
from
meters
partition
by
tbname
;
```
```
### 写入数据
### 写入数据
...
...
docs/zh/12-taos-sql/14-stream.md
浏览文件 @
2b48df0b
...
@@ -8,7 +8,7 @@ description: 流式计算的相关 SQL 的详细语法
...
@@ -8,7 +8,7 @@ description: 流式计算的相关 SQL 的详细语法
## 创建流式计算
## 创建流式计算
```
sql
```
sql
CREATE
STREAM
[
IF
NOT
EXISTS
]
stream_name
[
stream_options
]
INTO
stb_name
SUBTABLE
(
expression
)
AS
subquery
CREATE
STREAM
[
IF
NOT
EXISTS
]
stream_name
[
stream_options
]
INTO
stb_name
[(
field1_name
,
...)]
[
TAGS
(
create_definition
[,
create_definition
]
...)]
SUBTABLE
(
expression
)
AS
subquery
stream_options
:
{
stream_options
:
{
TRIGGER
[
AT_ONCE
|
WINDOW_CLOSE
|
MAX_DELAY
time
]
TRIGGER
[
AT_ONCE
|
WINDOW_CLOSE
|
MAX_DELAY
time
]
WATERMARK
time
WATERMARK
time
...
@@ -28,6 +28,15 @@ subquery: SELECT select_list
...
@@ -28,6 +28,15 @@ subquery: SELECT select_list
支持会话窗口、状态窗口与滑动窗口,其中,会话窗口与状态窗口搭配超级表时必须与partition by tbname一起使用
支持会话窗口、状态窗口与滑动窗口,其中,会话窗口与状态窗口搭配超级表时必须与partition by tbname一起使用
stb_name 是保存计算结果的超级表的表名,如果该超级表不存在,会自动创建;如果已存在,则检查列的schema信息。详见 写入已存在的超级表
TAGS 字句定义了流计算中创建TAG的规则,可以为每个partition对应的子表生成自定义的TAG值,详见 自定义TAG
```
sql
create_definition
:
col_name
column_definition
column_definition
:
type_name
[
COMMENT
'string_value'
]
```
subtable 子句定义了流式计算中创建的子表的命名规则,详见 流式计算的 partition 部分。
subtable 子句定义了流式计算中创建的子表的命名规则,详见 流式计算的 partition 部分。
...
@@ -114,7 +123,7 @@ SELECT * from information_schema.`ins_streams`;
...
@@ -114,7 +123,7 @@ SELECT * from information_schema.`ins_streams`;
在创建流时,可以通过 TRIGGER 指令指定流式计算的触发模式。
在创建流时,可以通过 TRIGGER 指令指定流式计算的触发模式。
对于非窗口计算,流式计算的触发是实时的;对于窗口计算,目前提供 3 种触发模式,默认为
AT_ONC
E:
对于非窗口计算,流式计算的触发是实时的;对于窗口计算,目前提供 3 种触发模式,默认为
WINDOW_CLOS
E:
1.
AT_ONCE:写入立即触发
1.
AT_ONCE:写入立即触发
...
@@ -163,9 +172,33 @@ T3 时刻,最新事件到达,T 向后推移超过了第二个窗口关闭的
...
@@ -163,9 +172,33 @@ T3 时刻,最新事件到达,T 向后推移超过了第二个窗口关闭的
TDengine 对于过期数据提供两种处理方式,由 IGNORE EXPIRED 选项指定:
TDengine 对于过期数据提供两种处理方式,由 IGNORE EXPIRED 选项指定:
1.
重新计算,即 IGNORE EXPIRED 0:
默认配置,
从 TSDB 中重新查找对应窗口的所有数据并重新计算得到最新结果
1.
重新计算,即 IGNORE EXPIRED 0:从 TSDB 中重新查找对应窗口的所有数据并重新计算得到最新结果
2.
直接丢弃, 即 IGNORE EXPIRED 1:忽略过期数据
2.
直接丢弃, 即 IGNORE EXPIRED 1:
默认配置,
忽略过期数据
无论在哪种模式下,watermark 都应该被妥善设置,来得到正确结果(直接丢弃模式)或避免频繁触发重算带来的性能开销(重新计算模式)。
无论在哪种模式下,watermark 都应该被妥善设置,来得到正确结果(直接丢弃模式)或避免频繁触发重算带来的性能开销(重新计算模式)。
## 写入已存在的超级表
```
sql
[
field1_name
,...]
```
用来指定stb_name的列与subquery输出结果的对应关系。如果stb_name的列与subquery输出结果的位置、数量全部匹配,则不需要显示指定对应关系。如果stb_name的列与subquery输出结果的数据类型不匹配,会把subquery输出结果的类型转换成对应的stb_name的列的类型。
对于已经存在的超级表,检查列的schema信息
1.
检查列的schema信息是否匹配,对于不匹配的,则自动进行类型转换,当前只有数据长度大于4096byte时才报错,其余场景都能进行类型转换。
2.
检查列的个数是否相同,如果不同,需要显示的指定超级表与subquery的列的对应关系,否则报错;如果相同,可以指定对应关系,也可以不指定,不指定则按位置顺序对应。
3.
至少自定义一个tag,否则报错。详见 自定义TAG
## 自定义TAG
用户可以为每个 partition 对应的子表生成自定义的TAG值。
```
sql
CREATE
STREAM
streams2
trigger
at_once
INTO
st1
TAGS
(
cc
varchar
(
100
))
as
select
_wstart
,
count
(
*
)
c1
from
st
partition
by
concat
(
"tag-"
,
tbname
)
as
cc
interval
(
10
s
));
```
PARTITION 子句中,为 concat("tag-", tbname)定义了一个别名cc, 对应超级表st1的自定义TAG的名字。在上述示例中,流新创建的子表的TAG将以前缀 'new-' 连接原表名作为TAG的值。
会对TAG信息进行如下检查
1.
检查tag的schema信息是否匹配,对于不匹配的,则自动进行数据类型转换,当前只有数据长度大于4096byte时才报错,其余场景都能进行类型转换。
2.
检查tag的个数是否相同,如果不同,需要显示的指定超级表与subquery的tag的对应关系,否则报错;如果相同,可以指定对应关系,也可以不指定,不指定则按位置顺序对应。
packaging/tools/install.sh
浏览文件 @
2b48df0b
...
@@ -586,12 +586,14 @@ function install_data() {
...
@@ -586,12 +586,14 @@ function install_data() {
}
}
function
install_connector
()
{
function
install_connector
()
{
[
-d
"
${
script_dir
}
/connector/"
]
&&
${
csudo
}
cp
-rf
${
script_dir
}
/connector/
${
install_main_dir
}
/
if
[
-d
"
${
script_dir
}
/connector/"
]
;
then
${
csudo
}
cp
-rf
${
script_dir
}
/connector/
${
install_main_dir
}
/
||
echo
"failed to copy connector"
fi
}
}
function
install_examples
()
{
function
install_examples
()
{
if
[
-d
${
script_dir
}
/examples
]
;
then
if
[
-d
${
script_dir
}
/examples
]
;
then
${
csudo
}
cp
-rf
${
script_dir
}
/examples/
*
${
install_main_dir
}
/examples
${
csudo
}
cp
-rf
${
script_dir
}
/examples/
*
${
install_main_dir
}
/examples
||
echo
"failed to copy examples"
fi
fi
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录