doc: refactor doc
|
@ -0,0 +1,228 @@
|
|||
---
|
||||
title: "数据转换"
|
||||
sidebar_label: "数据转换"
|
||||
---
|
||||
|
||||
Transformer 是数据写入的核心,从数据源读取数据后,经过解析、提取拆分、数据过滤、映射,最终写入 TDengine 数据表中。taosX 将 Transformer 过程抽象为四个步骤:
|
||||
|
||||
1. **解析**:数据结构化的过程,就是将非结构化数据转成可以用统一 schema 描述的结构化数据。来自于 MQTT/Kafka 等数据源,其消息往往是普通的字符串,需要用一些格式化的方式来解析。但是数据源本身就是结构化数据,则无需解析过程。
|
||||
2. **提取拆分**:部分字段进一步细化拆分的过程,比如数据源使用一个字段描述重量 “5千克”, 目标库使用两个字段来描述重量:weight、unit,则需要将源字段拆分。
|
||||
3. **数据过滤**:设置过滤条件,满足条件的数据行才写入目标表。
|
||||
4. **映射**:将经过上述过程的源字段映射到目标 TDengine 数据表字段。
|
||||
|
||||
## 数据转换过程详解
|
||||
|
||||
taosExplorer 中目前支持大部分数据源写入的 transformer 配置。接下来四个小节详细说明四个步骤**解析**、**提取拆分**、**数据过滤**、**映射**可视化配置方法。
|
||||
|
||||
### 1 解析
|
||||
|
||||
仅非结构化的数据源需要这个步骤,目前 MQTT 和 Kafka 数据源会使用这个步骤提供的规则来解析非结构化数据,以初步获取结构化数据,即可以以字段描述的行列数据。在 explorer 中您需要提供示例数据和解析规则,来预览解析出以表格呈现的结构化数据。
|
||||
|
||||
#### 1.1 示例数据
|
||||
|
||||

|
||||
|
||||
如图,textarea 输入框中就是示例数据,可以通过三种方式来获取示例数据:
|
||||
|
||||
1. 直接在 textarea 中输入示例数据;
|
||||
2. 点击右侧按钮 “从服务器检索” 则从配置的服务器获取示例数据,并追加到示例数据 textarea 中;
|
||||
3. 上传文件,将文件内容追加到示例数据 textarea 中。
|
||||
|
||||
#### 1.2 解析<a name="parse"></a>
|
||||
|
||||
解析就是通过解析规则,将非结构化字符串解析为结构化数据。消息体的解析规则目前支持 JSON、Regex 和 UDT。
|
||||
|
||||
##### 1. JSON 解析
|
||||
|
||||
如下 JSON 示例数据,可自动解析出字段:`groupid`、`voltage`、`current`、`ts`、`inuse`、`location`。
|
||||
|
||||
``` json
|
||||
{"groupid": 170001, "voltage": "221V", "current": 12.3, "ts": "2023-12-18T22:12:00", "inuse": true, "location": "beijing.chaoyang.datun"}
|
||||
{"groupid": 170001, "voltage": "220V", "current": 12.2, "ts": "2023-12-18T22:12:02", "inuse": true, "location": "beijing.chaoyang.datun"}
|
||||
{"groupid": 170001, "voltage": "216V", "current": 12.5, "ts": "2023-12-18T22:12:04", "inuse": false, "location": "beijing.chaoyang.datun"}
|
||||
```
|
||||
|
||||
如下嵌套结构的 JSON 数据,可自动解析出字段`groupid`、`data_voltage`、`data_current`、`ts`、`inuse`、`location_0_province`、`location_0_city`、`location_0_datun`,也可以选择要解析的字段,并设置解析的别名。
|
||||
|
||||
``` json
|
||||
{"groupid": 170001, "data": { "voltage": "221V", "current": 12.3 }, "ts": "2023-12-18T22:12:00", "inuse": true, "location": [{"province": "beijing", "city":"chaoyang", "street": "datun"}]}
|
||||
```
|
||||
|
||||

|
||||
|
||||
##### 2. Regex 正则表达式<a name="regex"></a>
|
||||
|
||||
可以使用正则表达式的**命名捕获组**从任何字符串(文本)字段中提取多个字段。如图所示,从 nginx 日志中提取访问ip、时间戳、访问的url等字段。
|
||||
|
||||
``` re
|
||||
(?<ip>\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b)\s-\s-\s\[(?<ts>\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2}\s\+\d{4})\]\s"(?<method>[A-Z]+)\s(?<url>[^\s"]+).*(?<status>\d{3})\s(?<length>\d+)
|
||||
```
|
||||
|
||||

|
||||
|
||||
##### 3. UDT 自定义解析脚本
|
||||
|
||||
自定义 rhai 语法脚本解析输入数据(参考 `https://rhai.rs/book/` ),脚本目前仅支持 json 格式原始数据。
|
||||
|
||||
**输入**:脚本中可以使用参数 data, data 是原始数据 json 解析后的 Object Map;
|
||||
|
||||
**输出**:输出的数据必须是数组。
|
||||
|
||||
例如对于数据,一次上报三相电压值,分别入到三个子表中。则需要对这类数据做解析
|
||||
|
||||
``` json
|
||||
{
|
||||
"ts": "2024-06-27 18:00:00",
|
||||
"voltage": "220.1,220.3,221.1",
|
||||
"dev_id": "8208891"
|
||||
}
|
||||
```
|
||||
|
||||
那么可以使用如下脚本来提取三个电压数据。
|
||||
|
||||
```
|
||||
let v3 = data["voltage"].split(",");
|
||||
|
||||
[
|
||||
#{"ts": data["ts"], "val": v3[0], "dev_id": data["dev_id"]},
|
||||
#{"ts": data["ts"], "val": v3[1], "dev_id": data["dev_id"]},
|
||||
#{"ts": data["ts"], "val": v3[2], "dev_id": data["dev_id"]}
|
||||
]
|
||||
```
|
||||
|
||||
最终解析结果如下所示:
|
||||
|
||||

|
||||
|
||||
### 2 提取或拆分
|
||||
|
||||
解析后的数据,可能还无法满足目标表的数据要求。比如智能表原始采集数据如下( json 格式):
|
||||
|
||||
``` json
|
||||
{"groupid": 170001, "voltage": "221V", "current": 12.3, "ts": "2023-12-18T22:12:00", "inuse": true, "location": "beijing.chaoyang.datun"}
|
||||
{"groupid": 170001, "voltage": "220V", "current": 12.2, "ts": "2023-12-18T22:12:02", "inuse": true, "location": "beijing.chaoyang.datun"}
|
||||
{"groupid": 170001, "voltage": "216V", "current": 12.5, "ts": "2023-12-18T22:12:04", "inuse": false, "location": "beijing.chaoyang.datun"}
|
||||
```
|
||||
|
||||
使用 json 规则解析出的电压是字符串表达的带单位形式,最终入库希望能使用 int 类型记录电压值和电流值,便于统计分析,此时就需要对电压进一步拆分;另外日期期望拆分为日期和时间入库。
|
||||
|
||||
如下图所示可以对源字段`ts`使用 split 规则拆分成日期和时间,对字段`voltage`使用 regex 提取出电压值和电压单位。split 规则需要设置**分隔符**和**拆分数量**,拆分后的字段命名规则为`{原字段名}_{顺序号}`,Regex 规则同解析过程中的一样,使用**命名捕获组**命名提取字段。
|
||||
|
||||

|
||||
|
||||
### 3 过滤<a name="filter"></a>
|
||||
|
||||
过滤功能可以设置过滤条件,满足条件的数据行 才会被写入目标表。过滤条件表达式的结果必须是 boolean 类型。在编写过滤条件前,必须确定 解析字段的类型,根据解析字段的类型,可以使用判断函数、比较操作符(`>`、`>=`、`<=`、`<`、`==`、`!=`)来判断。
|
||||
|
||||
#### 3.1 字段类型及转换
|
||||
|
||||
只有明确解析出的每个字段的类型,才能使用正确的语法做数据过滤。
|
||||
|
||||
使用 json 规则解析出的字段,按照属性值来自动设置类型:
|
||||
|
||||
1. bool 类型:"inuse": true
|
||||
2. int 类型:"voltage": 220
|
||||
3. float 类型:"current" : 12.2
|
||||
4. String 类型:"location": "MX001"
|
||||
|
||||
使用 regex 规则解析的数据都是 string 类型。
|
||||
使用 split 和 regex 提取或拆分的数据是 string 类型。
|
||||
|
||||
如果提取出的数据类型不是预期中的类型,可以做数据类型转换。常用的数据类型转换就是把字符串转换成为数值类型。支持的转换函数如下:
|
||||
|
||||
|Function|From type|To type|e.g.|
|
||||
|:----|:----|:----|:----|
|
||||
| parse_int | string | int | parse_int("56") // 结果为整数 56 |
|
||||
| parse_float | string | float | parse_float("12.3") // 结果为浮点数 12.3 |
|
||||
|
||||
#### 3.2 判断表达式
|
||||
|
||||
不同的数据类型有各自判断表达式的写法。
|
||||
|
||||
##### 1. BOOL 类型
|
||||
|
||||
可以使用变量或者使用操作符`!`,比如对于字段 "inuse": true,可以编写以下表达式:
|
||||
|
||||
> 1. inuse
|
||||
> 2. !inuse
|
||||
|
||||
##### 2. 数值类型(int/float)
|
||||
|
||||
数值类型支持使用比较操作符`==`、`!=`、`>`、`>=`、`<`、`<=`。
|
||||
|
||||
##### 3. 字符串类型
|
||||
|
||||
使用比较操作符,比较字符串。
|
||||
|
||||
字符串函数
|
||||
|
||||
|Function|Description|e.g.|
|
||||
|:----|:----|:----|
|
||||
| is_empty | returns true if the string is empty | s.is_empty() |
|
||||
| contains | checks if a certain character or sub-string occurs in the string | s.contains("substring") |
|
||||
| starts_with | returns true if the string starts with a certain string | s.starts_with("prefix") |
|
||||
| ends_with | returns true if the string ends with a certain string | s.ends_with("suffix") |
|
||||
| len | returns the number of characters (not number of bytes) in the string,must be used with comparison operator | s.len == 5 判断字符串长度是否为5;len作为属性返回 int ,和前四个函数有区别,前四个直接返回 bool。 |
|
||||
|
||||
##### 4. 复合表达式
|
||||
|
||||
多个判断表达式,可以使用逻辑操作符(&&、||、!)来组合。
|
||||
比如下面的表达式表示获取北京市安装的并且电压值大于 200 的智能表数据。
|
||||
|
||||
> location.starts_with("beijing") && voltage > 200
|
||||
|
||||
### 4 映射
|
||||
|
||||
映射是将解析、提取、拆分的**源字段**对应到**目标表字段**,可以直接对应,也可以通过一些规则计算后再映射到目标表。
|
||||
|
||||
#### 4.1 选择目标超级表
|
||||
|
||||
选择目标超级表后,会加载出超级表所有的 tags 和 columns。
|
||||
源字段根据名称自动使用 mapping 规则映射到目标超级表的 tag 和 column。
|
||||
例如有如下解析、提取、拆分后的预览数据:
|
||||
|
||||
#### 4.2 映射规则 <a name="expression"></a>
|
||||
|
||||
支持的映射规则如下表所示:
|
||||
|
||||
|rule|description|
|
||||
|:----|:----|
|
||||
| mapping | 直接映射,需要选择映射源字段。|
|
||||
| value | 常量,可以输入字符串常量,也可以是数值常量,输入的常量值直接入库。|
|
||||
| generator | 生成器,目前仅支持时间戳生成器 now,入库时会将当前时间入库。|
|
||||
| join | 字符串连接器,可指定连接字符拼接选择的多个源字段。|
|
||||
| format | **字符串格式化工具**,填写格式化字符串,比如有三个源字段 year, month, day 分别表示年月日,入库希望以yyyy-MM-dd的日期格式入库,则可以提供格式化字符串为 `${year}-${month}-${day}`。其中`${}`作为占位符,占位符中可以是一个源字段,也可以是 string 类型字段的函数处理|
|
||||
| sum | 选择多个数值型字段做加法计算。|
|
||||
| expr | **数值运算表达式**,可以对数值型字段做更加复杂的函数处理和数学运算。|
|
||||
|
||||
##### 1. format 中支持的字符串处理函数
|
||||
|
||||
|Function|description|e.g.|
|
||||
|:----|:----|:----|
|
||||
| pad(len, pad_chars) | pads the string with a character or a string to at least a specified length | "1.2".pad(5, '0') // 结果为"1.200" |
|
||||
|trim|trims the string of whitespace at the beginning and end|" abc ee ".trim() // 结果为"abc ee"|
|
||||
|sub_string(start_pos, len)|extracts a sub-string,两个参数:<br />1. start position, counting from end if < 0<br />2. (optional) number of characters to extract, none if ≤ 0, to end if omitted|"012345678".sub_string(5) // "5678"<br />"012345678".sub_string(5, 2) // "56"<br />"012345678".sub_string(-2) // "78"|
|
||||
|replace(substring, replacement)|replaces a sub-string with another|"012345678".replace("012", "abc") // "abc345678"|
|
||||
|
||||
##### 2. expr 数学计算表达式
|
||||
|
||||
基本数学运算支持加`+`、减`-`、乘`*`、除`/`。
|
||||
|
||||
比如数据源采集数值以设置度为单位,目标库存储华氏度温度值。那么就需要对采集的温度数据做转换。
|
||||
|
||||
解析的源字段为`temperature`,则需要使用表达式 `temperature * 1.8 + 32`。
|
||||
|
||||
数值表达式中也支持使用数学函数,可用的数学函数如下表所示:
|
||||
|
||||
|Function|description|e.g.|
|
||||
|:----|:----|:----|
|
||||
|sin、cos、tan、sinh、cosh|Trigonometry|a.sin() |
|
||||
|asin、acos、atan、 asinh、acosh|arc-trigonometry|a.asin()|
|
||||
|sqrt|Square root|a.sqrt() // 4.sqrt() == 2|
|
||||
|exp|Exponential|a.exp()|
|
||||
|ln、log|Logarithmic|a.ln() // e.ln() == 1<br />a.log() // 10.log() == 1|
|
||||
|floor、ceiling、round、int、fraction|rounding|a.floor() // (4.2).floor() == 4<br />a.ceiling() // (4.2).ceiling() == 5<br />a.round() // (4.2).round() == 4<br />a.int() // (4.2).int() == 4<br />a.fraction() // (4.2).fraction() == 0.2|
|
||||
|
||||
#### 4.3 子表名映射
|
||||
|
||||
子表名类型为字符串,可以使用映射规则中的字符串格式化 format 表达式定义子表名。
|
|
@ -0,0 +1,36 @@
|
|||
---
|
||||
title: "TDengine2"
|
||||
sidebar_label: "TDengine2"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务, 从旧版 TDengine2 迁移数据到当前集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
taosX 通过 SQL 查询源集群数据,并把查询结果写入到目标数据库。具体实现上, taosX 以一个子表的一个时间段的数据作为查询的基本单元,将要迁移的数据分批写入目标数据库。
|
||||
|
||||
taosX 支持三种迁移模式:
|
||||
1. **history** 模式。指迁移指定时间范围内的数据,若不指定时间范围,则迁移截至创建任务前的所有数据。迁移完则任务停止。
|
||||
2. **realtime** 模式。同步从任务创建时间起之后的数据,若不手动停止任务则任务会持续运行。
|
||||
3. **both** 模式。先执行 history 模式,在执行 realtime 模式。
|
||||
|
||||
每种迁移模式下,都可以指定是否迁移表结构。如果选择了 “always”, 则会先同步表的结构到目标数据库再迁移数据。如果子表数量比较多这个过程可能会比较长。如果确定目标数据库已经有了和源数据库相同的表接口,建议选择 “none” 以节省时间。
|
||||
|
||||
任务在运行过程中会保存进度信息到硬盘上,因此如果暂停任务后重新启动,或任务自动从异常中自动恢复,任务并不会从头开始进行。
|
||||
|
||||
更多选项建议详细阅读创建任务页面每个表单字段的说明。
|
||||
|
||||
|
||||
|
||||
## 具体步骤
|
||||
|
||||
首先,点击左侧“数据写入”菜单,然后点击右侧新“增数据源”按钮。
|
||||

|
||||
|
||||
然后输入任务名称,比如 “migrate-test”, 最后选择类型“TDengine2”。此时,表单切换为从 TDengine2 迁移数据专用的表单,包含了大量选项,每种选项都有详细的说明,如下图所示。
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
点击“提交”按钮提交任务后,回到“数据源”任务列表页面,可以监控任务的运行情况。
|
|
@ -0,0 +1,72 @@
|
|||
---
|
||||
title: "TDengine3"
|
||||
sidebar_label: "TDengine3"
|
||||
---
|
||||
|
||||
本文讲述如何使用 Explorer 订阅另一个集群的数据到本集群。
|
||||
|
||||
## 准备工作
|
||||
|
||||
在源集群创建订阅所需的 Topic, 可以订阅整个库、超级表 或子表。本示例中我们演示订阅一个名为 test 的数据库。
|
||||
|
||||
### 第一步:进入“数据订阅”页面
|
||||
打开源集群的 Explorer 界面, 点击左侧“数据订阅”菜单,然后点击“添加新主题”。
|
||||
|
||||

|
||||
|
||||
### 第二步: 添加新主题
|
||||
输入主题名称,选择要订阅的数据库。
|
||||
|
||||

|
||||
|
||||
### 第三步:复制主题的 DSN
|
||||
|
||||
点击“创建”按钮,回到主题列表复制主题的 **DSN** 备用。
|
||||
|
||||

|
||||
|
||||
## 创建订阅任务
|
||||
|
||||
### 第一步: 进入“新增数据源”页面
|
||||
1. 点击左侧“数据写入”菜单
|
||||
2. 点击“新增数据源”
|
||||

|
||||
|
||||
### 第二步:输入数据源信息
|
||||
1. 输入任务名称
|
||||
2. 选择任务类型“TDengine3”
|
||||
3. 选择目标数据库
|
||||
4. 粘贴准备步骤复制的 DSN 到 **Topic DSN** 一栏。例如:tmq+ws://root:taosdata@localhost:6041/topic
|
||||
5. 完成以上步骤点击“连通性检查”按钮,测试与源端的连通性
|
||||

|
||||
|
||||
### 第三步:填写订阅设置并提交任务
|
||||
|
||||
1. 选择订阅初始位置。可配置从最早数据(earliest)或最晚(latest)数据开始订阅,默认为 earliest
|
||||
2. 设置超时时间。支持单位 ms(毫秒),s(秒),m(分钟),h(小时),d(天),M(月),y(年)
|
||||
3. 设置订阅组 ID。订阅组 ID 是用于标识一个订阅组的任意字符串,最大长度为 192。同一个订阅组内的订阅者共享消费进度。不指定情况下将使用随机生成的 group ID。
|
||||
4. 设置客户端 ID。客户端 ID 是一个用于标识客户端的任意字符串,最大长度为 192。
|
||||
5. 同步已落盘数据。如启用,可以同步已经落盘到 TSDB 时序数据存储文件中(即不在 WAL 中)的数据。如关闭,则只同步尚未落盘(即保存在 WAL 中)的数据。
|
||||
6. 同步删表操作。如启用则会同步删表操作到目标数据库。
|
||||
7. 同步删数据操作。如启用则会同步删数据操作到目标数据库。
|
||||
8. 压缩。启用 WebSocket 压缩支持,以降低网络带宽占用。
|
||||
9. 点击“提交按钮”, 提交任务
|
||||

|
||||
|
||||
|
||||
## 监控任务运行情况
|
||||
|
||||
提交任务后,回到数据源页面可以查看任务状态。任务先会被加入执行队列,稍后就开始运行。
|
||||

|
||||
|
||||
点击 “查看”按钮,可以监控任务的动态统计信息。
|
||||

|
||||
|
||||
也可以点击左侧折叠按钮,展开任务的活动信息。如果任务运行异常,此处可以看到详细的说明。
|
||||

|
||||
|
||||
## 高级用法
|
||||
|
||||
1. FROM DSN 支持多个 Topic,多个 Topic 的名字用逗号分割。例如: `tmq+ws://root:taosdata@localhost:6041/topic1,topic2,topic3`
|
||||
2. 在 FROM DSN 中,也可以用数据库名称、超级表名称或子表名称代替 Topic 名称。例如:`tmq+ws://root:taosdata@localhost:6041/db1,db2,db3`,此时不必要提前创建 Topic,taosX 将自动识别到使用的是数据库名称,并自动在源集群创建订阅数据库的 Topic。
|
||||
3. FROM DSN 支持 group.id 参数,以显式指定订阅用的 group ID。不指定情况下将使用随机生成的 group ID。
|
|
@ -0,0 +1,66 @@
|
|||
---
|
||||
title: "PI"
|
||||
sidebar_label: "PI"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 PI 系统迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
PI 系统是一套用于数据收集、查找、分析、传递和可视化的软件产品,可以作为管理实时数据和事件的企业级系统的基础架构。
|
||||
|
||||
taosX 可以通过 PI 连接器插件从 PI 系统中提取实时数据。
|
||||
|
||||
有两类 PI 任务: 实时同步任务和历史数据迁移任务,在任务下拉列表的名称分别对应 “PI” 和 “PI backfill”。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 中输入任务名称,如:“test”;
|
||||
|
||||
在 **类型** 下拉列表中选择 **PI** 或 **PI backfill**。
|
||||
|
||||
如果 taosX 服务运行在 PI 系统所在或可直连的服务器上(依赖 PI AF SDK),**代理** 是不必须的,否则,需要配置 **代理** :在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理 ,跟随提示进行代理的配置。即:taosX 或其代理需要部署在可直接连接 PI 系统的主机上。
|
||||
|
||||
在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
PI 连接器支持两种连接方式:
|
||||
|
||||
1. **PI Data Archive Only**: 不使用 AF 模式。此模式下直接填写 **PI 服务名**(服务器地址,通常使用主机名)。
|
||||
|
||||

|
||||
2. **PI Data Archive and Asset Framework (AF) Server**: 使用 AF SDK。此模式下除配置服务名外,还需要配置PI 系统(AF Server) 名称 (hostname) 和 AF 数据库名。
|
||||
|
||||

|
||||
|
||||
点击 **连通性检查** 按钮,检查数据源是否可用。
|
||||
|
||||
### 4. 配置数据模型
|
||||
|
||||
这一部分,我们用一个 csv 文件配置 PI 的数据模型到 TDengine 的数据模型的映射规则。这里所说的映射规则包含 3 方面内容:
|
||||
|
||||
1. 定义源数据范围,即哪些点或哪些模板需要同步到 TDengine。
|
||||
2. 定义过滤规则,即符合什么条件的数据才需要同步到 TDengine。
|
||||
3. 定义转换规则,即对原始数据做什么样的变换后再写入 TDengine。
|
||||
|
||||
如果您不知道具体怎么操作,可以点击“下载默认配置”按钮,下载得到的 csv 文件有详细的使用说明。
|
||||
|
||||
### 5. 其他配置
|
||||
|
||||
其余的配置,比较重要的是:
|
||||
|
||||
1. 对于 PI 任务,配置“重启补偿时间”,如果任务意外中断,重启时配置这个参数非常有用,它会让 taosX 自动 backfill 一段时间的数据。
|
||||
2. 对于 PI backfill 任务,需要配置 backfill 的开始和结束时间。
|
||||
|
||||
高级配置部分可以配置连接器日志的级别、批次大小、和批次延迟。用于 Debug 和 性能优化。
|
|
@ -0,0 +1,210 @@
|
|||
---
|
||||
title: "OPC-UA"
|
||||
sidebar_label: "OPC-UA"
|
||||
---
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务,从 OPC-UA 服务器同步数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
OPC 是工业自动化领域和其他行业中安全可靠地交换数据的互操作标准之一。
|
||||
|
||||
OPC-UA 是经典 OPC 规范的下一代标准,是一个平台无关的面向服务的架构规范,集成了现有 OPC Classic 规范的所有功能,提供了一条迁移到更安全和可扩展解决方案的路径。
|
||||
|
||||
TDengine 可以高效地从 OPC-UA 服务器读取数据并将其写入 TDengine,以实现实时数据入库。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 中输入任务名称,例如针对环境温湿度监控的任务,取名为 **environment-monitoring**。
|
||||
|
||||
在 **类型** 下拉列表中选择 **OPC-UA**。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。
|
||||
|
||||
在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 **OPC-UA 服务地址**,例如:`127.0.0.1:5000`,并配置数据传输安全模式,有三种安全模式可选:
|
||||
|
||||
1. None:通信数据以明文形式传输。
|
||||
2. Sign:使用数字签名对通信数据进行验证,保护数据完整性。
|
||||
3. SignAndEncrypt:使用数字签名对通信数据进行验证,并使用加密算法对数据进行加密,以保证数据的完整性、真实性和保密性。
|
||||
|
||||
如果安全模式选择了 Sign 或者 SignAndEncrypt,则必须选择有效的安全策略。安全策略定义了如何实现安全模式中的加密和验证机制,包括使用的加密算法、密钥长度、数字证书等。可选的安全策略有:
|
||||
|
||||
1. None:只能在安全模式为 None 时可选。
|
||||
2. Basic128Rsa15:使用 RSA 算法和128位的密钥长度对通信数据进行签名或加密。
|
||||
3. Basic256:使用 AES 算法和256位的密钥长度对通信数据进行签名或加密。
|
||||
4. Basic256Sha256:使用 AES 算法和256位的密钥长度,并使用 SHA-256 算法对数字签名进行加密。
|
||||
5. Aes128Sha256RsaOaep:使用 AES-128 算法进行通信数据的加解密,并使用 SHA-256 算法对数字签名进行加密,并使用 RSA 算法和 OAEP 模式用于加解密对称通信密钥。
|
||||
6. Aes256Sha256RsaPss:使用 AES-256 算法进行通信数据的加解密,并使用 SHA-256 算法对数字签名进行加密,并使用 RSA 算法和 PSS 模式用于加解密对称通信密钥。
|
||||
|
||||

|
||||
|
||||
### 4. 选择认证方式
|
||||
|
||||
如下图所示,切换 tab 可选择不同的认证方式,可选的认证方式有:
|
||||
|
||||
1. 匿名
|
||||
2. 用户名
|
||||
3. 证书访问:可以和安全通信证书相同,也可以用不同的证书。
|
||||
|
||||

|
||||
|
||||
配置好连接属性和认证方式后,点击 **连通性检查** 按钮,检查数据源是否可用。如果使用安全通信证书或认证证书,则证书必须在 OPC UA 服务端被信任,否则依然无法通过。
|
||||
|
||||
### 5. 配置点位集
|
||||
|
||||
**点位集** 可选择使用 CSV 文件模板或 **选择所有点位**。
|
||||
|
||||
#### 5.1. 上传 CSV 配置文件
|
||||
|
||||
您可以下载 CSV 空模板并按模板配置点位信息,然后上传 CSV 配置文件来配置点位;或者根据所配置的筛选条件下载数据点位,并以 CSV
|
||||
模板所制定的格式下载。
|
||||
|
||||
CSV 文件有如下规则:
|
||||
|
||||
1. 文件编码
|
||||
|
||||
用户上传的 CSV 文件的编码格式必须为以下格式中的一种:
|
||||
|
||||
(1) UTF-8 with BOM
|
||||
|
||||
(2) UTF-8(即:UTF-8 without BOM)
|
||||
|
||||
2. Header 配置规则
|
||||
|
||||
Header 是 CSV 文件的第一行,规则如下:
|
||||
|
||||
(1) CSV 的 Header 中可以配置以下列:
|
||||
|
||||
|
||||
| 序号 | 列名 | 描述 | 是否必填 | 默认行为 |
|
||||
| ---- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 1 | point_id | 数据点位在 OPC UA 服务器上的 id | 是 | 无 |
|
||||
| 2 | stable | 数据点位在 TDengine 中对应的超级表 | 是 | 无 |
|
||||
| 3 | tbname | 数据点位在 TDengine 中对应的子表 | 是 | 无 |
|
||||
| 4 | enable | 是否采集该点位的数据 | 否 | 使用统一的默认值`1`作为 enable 的值 |
|
||||
| 5 | value_col | 数据点位采集值在 TDengine 中对应的列名 | 否 | 使用统一的默认值`val` 作为 value_col 的值 |
|
||||
| 6 | value_transform | 数据点位采集值在 taosX 中执行的变换函数 | 否 | 统一不进行采集值的 transform |
|
||||
| 7 | type | 数据点位采集值的数据类型 | 否 | 统一使用采集值的原始类型作为 TDengine 中的数据类型 |
|
||||
| 8 | quality_col | 数据点位采集值质量在 TDengine 中对应的列名 | 否 | 统一不在 TDengine 添加 quality 列 |
|
||||
| 9 | ts_col | 数据点位的原始时间戳在 TDengine 中对应的时间戳列 | 否 | ts_col 和 received_ts_col 都非空时,使用前者作为时间戳列;ts_col 和 received_ts_col 有一列非空时,使用不为空的列作时间戳列;ts_col 和 received_ts_col 都为空时,使用数据点位原始时间戳作 TDengine 中的时间戳列,且列名为默认值`ts`。 |
|
||||
| 10 | received_ts_col | 接收到该点位采集值时的时间戳在 TDengine 中对应的时间戳列 | 否 | 同上 |
|
||||
| 11 | ts_transform | 数据点位时间戳在 taosX 中执行的变换函数 | 否 | 统一不进行数据点位原始时间戳的 transform |
|
||||
| 12 | received_ts_transform | 数据点位接收时间戳在 taosX 中执行的变换函数 | 否 | 统一不进行数据点位接收时间戳的 transform |
|
||||
| 13 | tag::VARCHAR(200)::name | 数据点位在 TDengine 中对应的 Tag 列。其中`tag` 为保留关键字,表示该列为一个 tag 列;`VARCHAR(200)` 表示该 tag 的类型,也可以是其它合法的类型;`name` 是该 tag 的实际名称。 | 否 | 配置 1 个以上的 tag 列,则使用配置的 tag 列;没有配置任何 tag 列,且 stable 在 TDengine 中存在,使用 TDengine 中的 stable 的 tag;没有配置任何 tag 列,且 stable 在 TDengine 中不存在,则默认自动添加以下 2 个 tag 列:tag::VARCHAR(256)::point_id 和 tag::VARCHAR(256)::point_name |
|
||||
|
||||
(2) CSV Header 中,不能有重复的列;
|
||||
|
||||
(3) CSV Header 中,类似`tag::VARCHAR(200)::name`这样的列可以配置多个,对应 TDengine 中的多个 Tag,但 Tag 的名称不能重复。
|
||||
|
||||
(4) CSV Header 中,列的顺序不影响 CSV 文件校验规则;
|
||||
|
||||
(5) CSV Header 中,可以配置不在上表中的列,例如:序号,这些列会被自动忽略。
|
||||
|
||||
3. Row 配置规则
|
||||
|
||||
CSV 文件中的每个 Row 配置一个 OPC 数据点位。Row 的规则如下:
|
||||
|
||||
(1) 与 Header 中的列有如下对应关系
|
||||
|
||||
|
||||
| 序号 | Header 中的列 | 值的类型 | 值的范围 | 是否必填 | 默认值 |
|
||||
| ---- | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------ |
|
||||
| 1 | point_id | String | 类似`ns=3;i=1005`这样的字符串,要满足 OPC UA 的 ID 的规范,即:包含 ns 和 id 部分 | 是 | |
|
||||
| 2 | enable | int | 0:不采集该点位,且在 OPC DataIn 任务开始前,删除 TDengine 中点位对应的子表;1:采集该点位,在 OPC DataIn 任务开始前,不删除子表。 | 否 | 1 |
|
||||
| 3 | stable | String | 符合 TDengine 超级表命名规范的任何字符串;如果存在特殊字符`.`,使用下划线替换如果存在`{type}`,则:CSV 文件的 type 不为空,使用 type 的值进行替换CSV 文件的 type 为空,使用采集值的原始类型进行替换 | 是 | |
|
||||
| 4 | tbname | String | 符合 TDengine 子表命名规范的任何字符串;如果存在特殊字符`.`,使用下划线替换对于 OPC UA:如果存在`{ns}`,使用 point_id 中的 ns 替换如果存在`{id}`,使用 point_id 中的 id 替换对于 OPC DA:如果存在`{tag_name}`,使用 tag_name 替换 | 是 | |
|
||||
| 5 | value_col | String | 符合 TDengine 命名规范的列名 | 否 | val |
|
||||
| 6 | value_transform | String | 符合 Rhai 引擎的计算表达式,例如:`(val + 10) / 1000 * 2.0`,`log(val) + 10`等; | 否 | None |
|
||||
| 7 | type | String | 支持类型包括:b/bool/i8/tinyint/i16/small/inti32/int/i64/bigint/u8/tinyint unsigned/u16/smallint unsigned/u32/int unsigned/u64/bigint unsigned/f32/float/f64/double/timestamp/timestamp(ms)/timestamp(us)/timestamp(ns)/json | 否 | 数据点位采集值的原始类型 |
|
||||
| 8 | quality_col | String | 符合 TDengine 命名规范的列名 | 否 | None |
|
||||
| 9 | ts_col | String | 符合 TDengine 命名规范的列名 | 否 | ts |
|
||||
| 10 | received_ts_col | String | 符合 TDengine 命名规范的列名 | 否 | rts |
|
||||
| 11 | ts_transform | String | 支持 +、-、*、/、% 操作符,例如:ts / 1000 * 1000,将一个 ms 单位的时间戳的最后 3 位置为 0;ts + 8 * 3600 * 1000,将一个 ms 精度的时间戳,增加 8 小时;ts - 8 * 3600 * 1000,将一个 ms 精度的时间戳,减去 8 小时; | 否 | None |
|
||||
| 12 | received_ts_transform | String | 否 | None | |
|
||||
| 13 | tag::VARCHAR(200)::name | String | tag 里的值,当 tag 的类型是 VARCHAR 时,可以是中文 | 否 | NULL |
|
||||
|
||||
(2) point_id 在整个 DataIn 任务中是唯一的,即:在一个 OPC DataIn 任务中,一个数据点位只能被写入到 TDengine 的一张子表。如果需要将一个数据点位写入多张子表,需要建多个 OPC DataIn 任务;
|
||||
|
||||
(3) 当 point_id 不同,但 tbname 相同时,value_col 必须不同。这种配置能够将不同数据类型的多个点位的数据写入同一张子表中不同的列。这种方式对应“OPC 数据入 TDengine 宽表”的使用场景。
|
||||
|
||||
4. 其他规则
|
||||
|
||||
(1) 如果 Header 和 Row 的列数不一致,校验失败,提示用户不满足要求的行号;
|
||||
|
||||
(2) Header 在首行,且不能为空;
|
||||
|
||||
(3) 至少有一个数据点;
|
||||
|
||||
#### 5.2. 选择数据点位
|
||||
|
||||
可以通过配置 **根节点ID**、**命名空间**、**正则匹配** 等条件,对点位进行筛选。
|
||||
|
||||
通过配置 **超级表名**、**表名称**,指定数据要写入的超级表、子表。
|
||||
|
||||
配置**主键列**,选择 origin_ts 表示使用 OPC 点位数据的原始时间戳作 TDengine 中的主键;选择 received_ts 表示使用数据的接收时间戳作 TDengine 中的主键。配置**主键别名**,指定 TDengine 时间戳列的名称。
|
||||
|
||||

|
||||
|
||||
### 6. 采集配置
|
||||
|
||||
在采集配置中,配置当前任务的采集模式、采集间隔、采集超时等选项。
|
||||
|
||||

|
||||
|
||||
如上图所示,其中:
|
||||
|
||||
- **采集模式**:可使用 `subscribe` 或 `observe` 模式。
|
||||
- `subscribe`:订阅模式,变更时上报数据并写入 TDengine。
|
||||
- `observe`:按照`采集间隔`时长,轮询读取点位最新值并写入 TDengine。
|
||||
- 采集间隔:默认为 10 秒,数据点位采集间隔,从上次采集数据结束后开始计时,轮询读取点位最新值并写入 TDengine。
|
||||
- **采集超时**:向 OPC 服务器读取点位数据时如果超过设定时间未返回数据,则读取失败,默认为 10 秒。
|
||||
|
||||
当 **点位集** 中使用 **选择数据点位** 方式时,采集配置中可以配置 **点位更新模式** 和 **点位更新间隔** 来启用动态点位更新。**动态点位更新** 是指,在任务运行期间,OPC Server增加或删除了点位后,符合条件的点位会自动添加到当前任务中,不需要重启 OPC 任务。
|
||||
|
||||
- 点位更新模式:可选择 `None`、`Append`、`Update`三种。
|
||||
- None:不开启动态点位更新;
|
||||
- Append:开启动态点位更新,但只追加;
|
||||
- Update:开启动态点位更新,追加或删除;
|
||||
- 点位更新间隔:在“点位更新模式”为 `Append` 和 `Update` 时生效。单位:秒,默认值是 600,最小值:60,最大值:2147483647。
|
||||
|
||||
### 7. 高级选项
|
||||
|
||||

|
||||
|
||||
如上图所示,配置高级选项对性能、日志等进行更加详尽的优化。
|
||||
|
||||
**日志级别** 默认为 `info`,可选项有 `error`、`warn`、`info`、`debug`、`trace`。
|
||||
|
||||
在 **最大写入并发数** 中设置写入 taosX 的最大并发数限制。默认值:0,表示 auto,自动配置并发数。
|
||||
|
||||
在 **批次大小** 中设置每次写入的批次大小,即:单次发送的最大消息数量。
|
||||
|
||||
在 **批次延时** 中设置单次发送最大延时(单位为秒),当超时结束时,只要有数据,即使不满足**批次大小**,也立即发送。
|
||||
|
||||
在 **保存原始数据** 中选择是否保存原始数据。默认值:否。
|
||||
|
||||
当保存原始数据时,以下 2 个参数配置生效。
|
||||
|
||||
在 **最大保留天数** 中设置原始数据的最大保留天数。
|
||||
|
||||
在 **原始数据存储目录** 中设置原始数据保存路径。若使用 Agent ,则存储路径指的是 Agent 所在服务器上路径,否则是 taosX 服务器上路径。路径中可使用占位符 `$DATA_DIR` 和 `:id` 作为路径中的一部分。
|
||||
|
||||
- Linux 平台,$DATA_DIR 为 /var/lib/taos/taosx,默认情况下存储路径为 `/var/lib/taos/taosx/tasks/<task_id>/rawdata` 。
|
||||
- Widonws 平台, $DATA_DIR 为 C:\TDengine\data\taosx,默认情况下存储路径为 `C:\TDengine\data\taosx\tasks\<task_id>\rawdata` 。
|
||||
|
||||
### 8. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 OPC UA 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,184 @@
|
|||
---
|
||||
title: "OPC-DA"
|
||||
sidebar_label: "OPC-DA"
|
||||
---
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务,从 OPC-DA 服务器同步数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
OPC是工业自动化领域和其他行业中安全可靠地交换数据的互操作标准之一。
|
||||
|
||||
OPC DA(数据访问)是一种经典的基于COM的规范,仅适用于Windows。尽管OPC DA不是最新和最高效的数据通信规范,但它被广泛使用。这主要是因为一些旧设备只支持OPC DA。
|
||||
|
||||
TDengine 可以高效地从 OPC-DA 服务器读取数据并将其写入 TDengine,以实现实时数据入库。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 中输入任务名称,例如针对环境温湿度监控的任务,取名为 **environment-monitoring**。
|
||||
|
||||
在 **类型** 下拉列表中选择 **OPC-DA**。
|
||||
|
||||
如果 taosX 服务运行在 OPC-DA 所在服务器上,**代理** 不是必须的,否则需要配置 **代理** :在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理 ,跟随提示进行代理的配置。
|
||||
|
||||
在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 **OPC-DA 服务地址**,例如:`127.0.0.1/Matrikon.OPC.Simulation.1`,并配置认证方式。
|
||||
|
||||
点击 **连通性检查** 按钮,检查数据源是否可用。
|
||||
|
||||

|
||||
|
||||
### 4. 配置点位集
|
||||
|
||||
**点位集** 可选择使用 CSV 文件模板或 **选择所有点位**。
|
||||
|
||||
#### 4.1. 上传 CSV 配置文件
|
||||
|
||||
您可以下载 CSV 空模板并按模板配置点位信息,然后上传 CSV 配置文件来配置点位;或者根据所配置的筛选条件下载数据点位,并以 CSV 模板所制定的格式下载。
|
||||
|
||||
CSV 文件有如下规则:
|
||||
|
||||
1. 文件编码
|
||||
|
||||
用户上传的 CSV 文件的编码格式必须为以下格式中的一种:
|
||||
|
||||
(1) UTF-8 with BOM
|
||||
|
||||
(2) UTF-8(即:UTF-8 without BOM)
|
||||
|
||||
2. Header 配置规则
|
||||
|
||||
Header 是 CSV 文件的第一行,规则如下:
|
||||
|
||||
(1) CSV 的 Header 中可以配置以下列:
|
||||
|
||||
|
||||
| 序号 | 列名 | 描述 | 是否必填 | 默认行为 |
|
||||
| ---- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 1 | tag_name | 数据点位在 OPC DA 服务器上的 id | 是 | 无 |
|
||||
| 2 | stable | 数据点位在 TDengine 中对应的超级表 | 是 | 无 |
|
||||
| 3 | tbname | 数据点位在 TDengine 中对应的子表 | 是 | 无 |
|
||||
| 4 | enable | 是否采集该点位的数据 | 否 | 使用统一的默认值`1`作为 enable 的值 |
|
||||
| 5 | value_col | 数据点位采集值在 TDengine 中对应的列名 | 否 | 使用统一的默认值`val` 作为 value_col 的值 |
|
||||
| 6 | value_transform | 数据点位采集值在 taosX 中执行的变换函数 | 否 | 统一不进行采集值的 transform |
|
||||
| 7 | type | 数据点位采集值的数据类型 | 否 | 统一使用采集值的原始类型作为 TDengine 中的数据类型 |
|
||||
| 8 | quality_col | 数据点位采集值质量在 TDengine 中对应的列名 | 否 | 统一不在 TDengine 添加 quality 列 |
|
||||
| 9 | ts_col | 数据点位的原始时间戳在 TDengine 中对应的时间戳列 | 否 | ts_col 和 received_ts_col 都非空时,使用前者作为时间戳列;ts_col 和 received_ts_col 有一列非空时,使用不为空的列作时间戳列;ts_col 和 received_ts_col 都为空时,使用数据点位原始时间戳作 TDengine 中的时间戳列,且列名为默认值ts。 |
|
||||
| 10 | received_ts_col | 接收到该点位采集值时的时间戳在 TDengine 中对应的时间戳列 | 否 | |
|
||||
| 11 | ts_transform | 数据点位时间戳在 taosX 中执行的变换函数 | 否 | 统一不进行数据点位原始时间戳的 transform |
|
||||
| 12 | received_ts_transform | 数据点位接收时间戳在 taosX 中执行的变换函数 | 否 | 统一不进行数据点位接收时间戳的 transform |
|
||||
| 13 | tag::VARCHAR(200)::name | 数据点位在 TDengine 中对应的 Tag 列。其中`tag` 为保留关键字,表示该列为一个 tag 列;`VARCHAR(200)` 表示该 tag 的类型,也可以是其它合法的类型;`name` 是该 tag 的实际名称。 | 否 | 配置 1 个以上的 tag 列,则使用配置的 tag 列;没有配置任何 tag 列,且 stable 在 TDengine 中存在,使用 TDengine 中的 stable 的 tag;没有配置任何 tag 列,且 stable 在 TDengine 中不存在,则默认自动添加以下 2 个 tag 列:tag::VARCHAR(256)::point_idtag::VARCHAR(256)::point_name |
|
||||
|
||||
(2) CSV Header 中,不能有重复的列;
|
||||
|
||||
(3) CSV Header 中,类似`tag::VARCHAR(200)::name`这样的列可以配置多个,对应 TDengine 中的多个 Tag,但 Tag 的名称不能重复。
|
||||
|
||||
(4) CSV Header 中,列的顺序不影响 CSV 文件校验规则;
|
||||
|
||||
(5) CSV Header 中,可以配置不在上表中的列,例如:序号,这些列会被自动忽略。
|
||||
|
||||
3. Row 配置规则
|
||||
|
||||
CSV 文件中的每个 Row 配置一个 OPC 数据点位。Row 的规则如下:
|
||||
|
||||
(1) 与 Header 中的列有如下对应关系
|
||||
|
||||
|
||||
| 序号 | Header 中的列 | 值的类型 | 值的范围 | 是否必填 | 默认值 |
|
||||
| ---- | ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------ |
|
||||
| 1 | tag_name | String | 类似`root.parent.temperature`这样的字符串,要满足 OPC DA 的 ID 规范 | 是 | |
|
||||
| 2 | enable | int | 0:不采集该点位,且在 OPC DataIn 任务开始前,删除 TDengine 中点位对应的子表;1:采集该点位,在 OPC DataIn 任务开始前,不删除子表。 | 否 | 1 |
|
||||
| 3 | stable | String | 符合 TDengine 超级表命名规范的任何字符串;如果存在特殊字符`.`,使用下划线替换如果存在`{type}`,则:CSV 文件的 type 不为空,使用 type 的值进行替换CSV 文件的 type 为空,使用采集值的原始类型进行替换 | 是 | |
|
||||
| 4 | tbname | String | 符合 TDengine 子表命名规范的任何字符串;如果存在特殊字符`.`,使用下划线替换对于 OPC UA:如果存在`{ns}`,使用 point_id 中的 ns 替换如果存在`{id}`,使用 point_id 中的 id 替换对于 OPC DA:如果存在`{tag_name}`,使用 tag_name 替换 | 是 | |
|
||||
| 5 | value_col | String | 符合 TDengine 命名规范的列名 | 否 | val |
|
||||
| 6 | value_transform | String | 符合 Rhai 引擎的计算表达式,例如:`(val + 10) / 1000 * 2.0`,`log(val) + 10`等; | 否 | None |
|
||||
| 7 | type | String | 支持类型包括:b/bool/i8/tinyint/i16/smallint/i32/int/i64/bigint/u8/tinyint unsigned/u16/smallint unsigned/u32/int unsigned/u64/bigint unsigned/f32/floatf64/double/timestamp/timestamp(ms)/timestamp(us)/timestamp(ns)/json | 否 | 数据点位采集值的原始类型 |
|
||||
| 8 | quality_col | String | 符合 TDengine 命名规范的列名 | 否 | None |
|
||||
| 9 | ts_col | String | 符合 TDengine 命名规范的列名 | 否 | ts |
|
||||
| 10 | received_ts_col | String | 符合 TDengine 命名规范的列名 | 否 | rts |
|
||||
| 11 | ts_transform | String | 支持 +、-、*、/、% 操作符,例如:ts / 1000 * 1000,将一个 ms 单位的时间戳的最后 3 位置为 0;ts + 8 * 3600 * 1000,将一个 ms 精度的时间戳,增加 8 小时;ts - 8 * 3600 * 1000,将一个 ms 精度的时间戳,减去 8 小时; | 否 | None |
|
||||
| 12 | received_ts_transform | String | 否 | None | |
|
||||
| 13 | tag::VARCHAR(200)::name | String | tag 里的值,当 tag 的类型是 VARCHAR 时,可以是中文 | 否 | NULL |
|
||||
|
||||
(2) tag_name 在整个 DataIn 任务中是唯一的,即:在一个 OPC DataIn 任务中,一个数据点位只能被写入到 TDengine 的一张子表。如果需要将一个数据点位写入多张子表,需要建多个 OPC DataIn 任务;
|
||||
|
||||
(3) 当 tag_name 不同,但 tbname 相同时,value_col 必须不同。这种配置能够将不同数据类型的多个点位的数据写入同一张子表中不同的列。这种方式对应 “OPC 数据入 TDengine 宽表”的使用场景。
|
||||
|
||||
4. 其他规则
|
||||
|
||||
(1) 如果 Header 和 Row 的列数不一致,校验失败,提示用户不满足要求的行号;
|
||||
|
||||
(2) Header 在首行,且不能为空;
|
||||
|
||||
(3) Row 为 1 行以上;
|
||||
|
||||
#### 4.2. 选择数据点位
|
||||
|
||||
可以通过配置 **根节点ID** 和 **正则匹配** 作为过滤条件,对点位进行筛选。
|
||||
|
||||
通过配置 **超级表名**、**表名称**,指定数据要写入的超级表、子表。
|
||||
|
||||
配置**主键列**,选择 origin_ts 表示使用 OPC 点位数据的原始时间戳作 TDengine 中的主键;选择 received_ts 表示使用数据的接收时间戳作 TDengine 中的主键。配置**主键别名**,指定 TDengine 时间戳列的名称。
|
||||
|
||||

|
||||
|
||||
|
||||
### 5. 采集配置
|
||||
在采集配置中,配置当前任务的采集间隔、连接超时、采集超时等选项。
|
||||
|
||||

|
||||
|
||||
如图所示,其中:
|
||||
|
||||
- **连接超时**:配置连接 OPC 服务器超时时间,默认为 10 秒。
|
||||
- **采集超时**:向 OPC 服务器读取点位数据时如果超过设定时间未返回数据,则读取失败,默认为 10 秒。
|
||||
- **采集间隔**:默认为 10 秒,数据点位采集间隔,从上次采集数据结束后开始计时,轮询读取点位最新值并写入 TDengine。
|
||||
|
||||
当 **点位集** 中使用 **选择数据点位** 方式时,采集配置中可以配置 **点位更新模式** 和 **点位更新间隔** 来启用动态点位更新。**动态点位更新** 是指,在任务运行期间,OPC Server增加或删除了点位后,符合条件的点位会自动添加到当前任务中,不需要重启 OPC 任务。
|
||||
|
||||
- 点位更新模式:可选择 `None`、`Append`、`Update`三种。
|
||||
- None:不开启动态点位更新;
|
||||
- Append:开启动态点位更新,但只追加;
|
||||
- Update:开启动态点位更新,追加或删除;
|
||||
- 点位更新间隔:在“点位更新模式”为 `Append` 和 `Update` 时生效。单位:秒,默认值是 600,最小值:60,最大值:2147483647。
|
||||
|
||||
### 6. 高级选项
|
||||
|
||||

|
||||
|
||||
如上图所示,配置高级选项对性能、日志等进行更加详尽的优化。
|
||||
|
||||
**日志级别** 默认为 `info`,可选项有 `error`、`warn`、`info`、`debug`、`trace`。
|
||||
|
||||
在 **最大写入并发数** 中设置写入 taosX 的最大并发数限制。默认值:0,表示 auto,自动配置并发数。
|
||||
|
||||
在 **批次大小** 中设置每次写入的批次大小,即:单次发送的最大消息数量。
|
||||
|
||||
在 **批次延时** 中设置单次发送最大延时(单位为秒),当超时结束时,只要有数据,即使不满足**批次大小**,也立即发送。
|
||||
|
||||
在 **保存原始数据** 中选择是否保存原始数据。默认值:否。
|
||||
|
||||
当保存原始数据时,以下 2 个参数配置生效。
|
||||
|
||||
在 **最大保留天数** 中设置原始数据的最大保留天数。
|
||||
|
||||
在 **原始数据存储目录** 中设置原始数据保存路径。若使用 Agent ,则存储路径指的是 Agent 所在服务器上路径,否则是 taosX 服务器上路径。路径中可使用占位符 `$DATA_DIR` 和 `:id` 作为路径中的一部分。
|
||||
|
||||
- Linux 平台,$DATA_DIR 为 /var/lib/taos/taosx,默认情况下存储路径为 `/var/lib/taos/taosx/tasks/<task_id>/rawdata` 。
|
||||
- Widonws 平台, $DATA_DIR 为 C:\TDengine\data\taosx,默认情况下存储路径为 `C:\TDengine\data\taosx\tasks\<task_id>\rawdata` 。
|
||||
|
||||
### 7. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 OPC DA 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,145 @@
|
|||
---
|
||||
title: "MQTT"
|
||||
sidebar_label: "MQTT"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 MQTT 迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
MQTT 表示 Message Queuing Telemetry Transport (消息队列遥测传输)。它是一种轻量级的消息协议,易于实现和使用。
|
||||
|
||||
TDengine 可以通过 MQTT 连接器从 MQTT 代理订阅数据并将其写入 TDengine,以实现实时数据流入库。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 中输入任务名称,如:“test_mqtt”;
|
||||
|
||||
在 **类型** 下拉列表中选择 **MQTT**。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理**
|
||||
按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。
|
||||
|
||||
在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库**
|
||||
按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接和认证信息
|
||||
|
||||
在 **MQTT地址** 中填写 MQTT 代理的地址,例如:`192.168.1.42:1883`
|
||||
|
||||
在 **用户** 中填写 MQTT 代理的用户名。
|
||||
|
||||
在 **密码** 中填写 MQTT 代理的密码。
|
||||
|
||||
点击 **连通性检查** 按钮,检查数据源是否可用。
|
||||
|
||||

|
||||
|
||||
### 4. 配置 SSL 证书
|
||||
|
||||
如果 MQTT 代理使用了 SSL 证书,需要在 **SSL证书** 中上传证书文件。
|
||||
|
||||

|
||||
|
||||
### 5. 配置采集信息
|
||||
|
||||
在 **采集配置** 区域填写采集任务相关的配置参数。
|
||||
|
||||
在 **MQTT 协议** 下拉列表中选择 MQTT 协议版本。有三个选项:`3.1`、`3.1.1`、`5.0`。 默认值为 3.1。
|
||||
|
||||
在 **Client ID** 中填写客户端 ID。建多个任务时,同个 MQTT 地址下,Client ID 必须是唯一的。
|
||||
|
||||
在 **Keep Alive** 中输入保持活动间隔。如果代理在保持活动间隔内没有收到来自客户端的任何消息,它将假定客户端已断开连接,并关闭连接。
|
||||
保持活动间隔是指客户端和代理之间协商的时间间隔,用于检测客户端是否活动。如果客户端在保持活动间隔内没有向代理发送消息,则代理将断开连接。
|
||||
|
||||
在 **Clean Session** 中,选择是否清除会话。默认值为 true。
|
||||
|
||||
在 **订阅主题及 QoS 配置** 中填写要消费的 Topic 名称。使用如下格式设置: `topic1::0,topic2::1`。
|
||||
|
||||

|
||||
|
||||
### 6. 配置 MQTT Payload 解析
|
||||
|
||||
在 **MQTT Payload 解析** 区域填写 Payload 解析相关的配置参数。
|
||||
|
||||
taosX 可以使用 JSON 提取器解析数据,并允许用户在数据库中指定数据模型,包括,指定表名称和超级表名,设置普通列和标签列等。
|
||||
|
||||
|
||||
#### 6.1 解析
|
||||
有三种获取示例数据的方法:
|
||||
|
||||
点击 **从服务器检索** 按钮,从 MQTT 获取示例数据。
|
||||
|
||||
点击 **文件上传** 按钮,上传 CSV 文件,获取示例数据。
|
||||
|
||||
在 **消息体** 中填写 MQTT 消息体中的示例数据,例如:`{"id": 1, "message": "hello-word"}{"id": 2, "message": "hello-word"}`。之后会使用这条示例数据来配置提取和过滤条件。
|
||||
|
||||

|
||||
|
||||
点击 **放大镜图标** 可查看预览解析结果。
|
||||
|
||||

|
||||
|
||||
#### 6.2 字段拆分
|
||||
|
||||
在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 message 字段拆分成 `message_0` 和 `message_1` 这2 个字段,选择 split 提取器,seperator 填写 -, number 填写 2。
|
||||
|
||||

|
||||
|
||||
点击 **删除**,可以删除当前提取规则。
|
||||
|
||||
点击 **新增**,可以添加更多提取规则。
|
||||
|
||||
点击 **放大镜图标** 可查看预览提取/拆分结果。
|
||||
|
||||

|
||||
|
||||
#### 6.3 数据过滤
|
||||
|
||||
在 **过滤** 中,填写过滤条件,例如:填写`id != 1`,则只有 id 不为 1 的数据才会被写入 TDengine。
|
||||
|
||||

|
||||
|
||||
点击 **删除**,可以删除当前过滤规则。
|
||||
|
||||
点击 **放大镜图标** 可查看预览过滤结果。
|
||||
|
||||

|
||||
|
||||
#### 6.4 表映射
|
||||
|
||||
在 **目标超级表** 的下拉列表中选择一个目标超级表,也可以先点击右侧的 **创建超级表** 按钮 [创建超级表](#创建超级表) 。
|
||||
|
||||
在 **映射** 中,填写目标超级表中的子表名称,例如:`t_{id}`。根据需求填写映射规则,其中 mapping 支持设置缺省值。
|
||||
|
||||

|
||||
|
||||
点击 **预览**,可以查看映射的结果。
|
||||
|
||||

|
||||
|
||||
### 7. 高级选项
|
||||
|
||||
在 **日志级别** 下拉列表中选择日志级别。有五个选项:`TRACE`、`DEBUG`、`INFO`、`WARN`、`ERROR`。 默认值为 INFO。
|
||||
|
||||
当 **保存原始数据时**,以下2个参数配置生效。
|
||||
|
||||
在 **最大保留天数** 中设置原始数据的最大保留天数。
|
||||
|
||||
在 **原始数据存储目录** 中设置原始数据保存路径。
|
||||
|
||||

|
||||
|
||||
### 8. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 MQTT 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,139 @@
|
|||
---
|
||||
title: "Kafka"
|
||||
sidebar_label: "Kafka"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 Kafka 迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
Apache Kafka 是一个用于流处理、实时数据管道和大规模数据集成的开源分布式流系统。
|
||||
|
||||
TDengine 可以高效地从 Kafka 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据流入库。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 中输入任务名称,如:“test_kafka”;
|
||||
|
||||
在 **类型** 下拉列表中选择 **Kafka**。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。
|
||||
|
||||
在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 **bootstrap-servers**,例如:`192.168.1.92:9092`。
|
||||
|
||||

|
||||
|
||||
### 4. 配置 SASL 认证机制
|
||||
|
||||
如果服务端开启了 SASL 认证机制,此处需要启用 SASL 并配置相关内容,目前支持 PLAIN/SCRAM-SHA-256/GSSAPI 三种认证机制,请按实际情况进行选择。
|
||||
|
||||

|
||||
|
||||
### 5. 配置 SSL 证书
|
||||
|
||||
如果服务端开启了 SSL 加密认证,此处需要启用 SSL 并配置相关内容。
|
||||
|
||||

|
||||
|
||||
### 6. 配置采集信息
|
||||
|
||||
在 **采集配置** 区域填写采集任务相关的配置参数。
|
||||
|
||||
在 **超时时间** 中填写超时时间。当从 Kafka 消费不到任何数据,超过 timeout 后,数据采集任务会退出。默认值是 0 ms。 当 timeout 设置为 0 时,会一直等待,直到有数据可用,或者发生错误。
|
||||
|
||||
在 **主题** 中填写要消费的 Topic 名称。可以配置多个 Topic , Topic 之间用逗号分隔。例如:`tp1,tp2`。
|
||||
|
||||
在 **Offset** 的下拉列表中选择从哪个 Offset 开始消费数据。有三个选项:`Earliest`、`Latest`、`ByTime(ms)`。 默认值为Earliest。
|
||||
|
||||
* Earliest:用于请求最早的 offset。
|
||||
* Latest:用于请求最晚的 offset。
|
||||
|
||||
在 **获取数据的最大时长** 中设置获取消息时等待数据不足的最长时间(以毫秒为单位),默认值为 100ms。
|
||||
|
||||
点击 **连通性检查** 按钮,检查数据源是否可用。
|
||||
|
||||

|
||||
|
||||
### 7. 配置 Payload 解析
|
||||
|
||||
在 **Payload 解析** 区域填写 Payload 解析相关的配置参数。
|
||||
|
||||
#### 7.1 解析
|
||||
有三种获取示例数据的方法:
|
||||
|
||||
点击 **从服务器检索** 按钮,从 Kafka 获取示例数据。
|
||||
|
||||
点击 **文件上传** 按钮,上传 CSV 文件,获取示例数据。
|
||||
|
||||
在 **消息体** 中填写 Kafka 消息体中的示例数据,例如:`{"id": 1, "message": "hello-word"}{"id": 2, "message": "hello-word"}`。之后会使用这条示例数据来配置提取和过滤条件。
|
||||
|
||||

|
||||
|
||||
点击 **放大镜图标** 可查看预览解析结果。
|
||||
|
||||

|
||||
|
||||
#### 7.2 字段拆分
|
||||
|
||||
在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 message 字段拆分成 `message_0` 和 `message_1` 这2个字段,选择 split 提取器,seperator 填写 -, number 填写2。
|
||||
|
||||
点击 **新增**,可以添加更多提取规则。
|
||||
|
||||
点击 **删除**,可以删除当前提取规则。
|
||||
|
||||

|
||||
|
||||
点击 **放大镜图标** 可查看预览提取/拆分结果。
|
||||
|
||||

|
||||
|
||||
#### 7.3 数据过滤
|
||||
|
||||
在 **过滤** 中,填写过滤条件,例如:填写 `id != 1`,则只有 id 不为 1 的数据才会被写入 TDengine。
|
||||
|
||||
点击 **新增**,可以添加更多过滤规则。
|
||||
|
||||
点击 **删除**,可以删除当前过滤规则。
|
||||
|
||||

|
||||
|
||||
点击 **放大镜图标** 可查看预览过滤结果。
|
||||
|
||||

|
||||
|
||||
#### 7.4 表映射
|
||||
|
||||
在 **目标超级表** 的下拉列表中选择一个目标超级表,也可以先点击右侧的 **创建超级表** 按钮 [创建超级表](#创建超级表) 。
|
||||
|
||||
在 **映射** 中,填写目标超级表中的子表名称,例如:`t_{id}`。根据需求填写映射规则,其中 mapping 支持设置缺省值。
|
||||
|
||||

|
||||
|
||||
点击 **预览**,可以查看映射的结果。
|
||||
|
||||

|
||||
|
||||
### 8. 配置高级选项
|
||||
|
||||
**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 9. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 Kafka 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,84 @@
|
|||
---
|
||||
title: "InfluxDB"
|
||||
sidebar_label: "InfluxDB"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 InfluxDB 迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
InfluxDB 是一种流行的开源时间序列数据库,它针对处理大量时间序列数据进行了优化。TDengine 可以通过 InfluxDB 连接器高效地读取 InfluxDB 中的数据,并将其写入 TDengine,以实现历史数据迁移或实时数据同步。
|
||||
|
||||
任务在运行过程中会保存进度信息到硬盘上,因此如果暂停任务后重新启动,或任务自动从异常中自动恢复,任务并不会从头开始进行。更多选项建议详细阅读创建任务页面每个表单字段的说明。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 字段中输入任务名称,例如 *`test_influxdb_01`* 。
|
||||
|
||||
选择 **类型** 下拉框中的 *`InfluxDB`* ,如下图所示(选择完成后页面中的字段会发生变化)。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。
|
||||
|
||||
**目标数据库** 是必填项,由于 InfluxDB 存储数据的时间精度可以同时存在秒、毫秒、微秒与纳秒等,所以这里需要选择一个 *`纳秒精度的数据库`* ,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 *`源 InfluxDB 数据库的连接信息`*,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 4. 配置认证信息
|
||||
|
||||
在 **认证** 区域有两个选项卡,*`1.x 版本`* 与 *`2.x 版本`* ,这是由于不同版本的 InfluxDB 数据库的鉴权参数不同且 API 存在较大差异,请根据实际情况进行选择:
|
||||
*`1.x 版本`*
|
||||
**版本** 在下拉框中选择源 InfluxDB 数据库的版本。
|
||||
**用户** 输入源 InfluxDB 数据库的用户,该用户必须在该组织中拥有读取权限。
|
||||
**密码** 输入源 InfluxDB 数据库中上方用户的登陆密码。
|
||||

|
||||
*`2.x 版本`*
|
||||
**版本** 在下拉框中选择源 InfluxDB 数据库的版本。
|
||||
**组织 ID** 输入源 InfluxDB 数据库的组织 ID,它是一个由十六进制字符组成的字符串,而不是组织名称,可以从 InfluxDB 控制台的 Organization->About 页面获取。
|
||||
**令牌 Token**:输入源 InfluxDB 数据库的访问令牌,该令牌必须在该组织中拥有读取权限。
|
||||
**添加数据库保留策略** 这是一个 *`是/否`* 的开关项,InfluxQL 需要数据库与保留策略(DBRP)的组合才能查询数据,InfluxDB 的 Cloud 版本及某些 2.x 版本需要人工添加这个映射关系,打开这个开关,连接器可以在执行任务时自动添加。
|
||||

|
||||
|
||||
在 **认证** 区域的下方有一个 **连通性检查** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 InfluxDB 数据库的数据,检查结果如下图所示:
|
||||
**失败**
|
||||

|
||||
**成功**
|
||||

|
||||
|
||||
### 5. 配置任务信息
|
||||
|
||||
**桶 Bucket** 是 InfluxDB 数据库中存储数据的一个命名空间,每个任务需要指定一个 Bucket,用户需要先点击右侧的 **获取 Schema** 按钮获取当前源 InfluxDB 数据库的数据结构信息,然后在下拉框中进行选择,如下图所示:
|
||||

|
||||
|
||||
**测量值 Measurements** 是非必填项,用户可以在下拉框中选择一个或多个需要同步的 Measurements,未指定则同步全部。
|
||||
|
||||
**起始时间** 是指源 InfluxDB 数据库中数据的起始时间,起始时间的时区使用 explorer 所选时区,此项为必填字段。
|
||||
|
||||
**结束时间** 是指源 InfluxDB 数据库中数据的截止时间,当不指定结束时间时,将持续进行最新数据的同步;当指定结束时间时,将只同步到这个结束时间为止,结束时间的时区使用 explorer 所选时区,此项为可选字段。
|
||||
|
||||
**每次读取的时间范围(分钟)** 是连接器从源 InfluxDB 数据库中单次读取数据时的最大时间范围,这是一个很重要的参数,需要用户结合服务器性能及数据存储密度综合决定。如果范围过小,则同步任务的执行速度会很慢;如果范围过大,则可能因内存使用过高而导致 InfluxDB 数据库系统故障。
|
||||
|
||||
**延迟(秒)** 是一个范围在 1 到 30 之间的整数,为了消除乱序数据的影响,TDengine 总是等待这里指定的时长,然后才读取数据。
|
||||
|
||||
### 6. 配置高级选项
|
||||
|
||||
**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示:
|
||||

|
||||

|
||||
|
||||
### 7. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 InfluxDB 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
title: "OpenTSDB"
|
||||
sidebar_label: "OpenTSDB"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 OpenTSDB 迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
OpenTSDB 是一个架构在 HBase 系统之上的实时监控信息收集和展示平台。TDengine 可以通过 OpenTSDB 连接器高效地读取 OpenTSDB 中的数据,并将其写入 TDengine,以实现历史数据迁移或实时数据同步。
|
||||
|
||||
任务在运行过程中会保存进度信息到硬盘上,因此如果暂停任务后重新启动,或任务自动从异常中自动恢复,任务并不会从头开始进行。更多选项建议详细阅读创建任务页面每个表单字段的说明。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 字段中输入任务名称,例如 *`test_opentsdb_01`* 。
|
||||
|
||||
选择 **类型** 下拉框中的 *`OpenTSDB`* ,如下图所示(选择完成后页面中的字段会发生变化)。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。
|
||||
|
||||
**目标数据库** 是必填项,由于 OpenTSDB 存储数据的时间精度是毫秒,所以这里需要选择一个 *`毫秒精度的数据库`* ,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 *`源 OpenTSDB 数据库的连接信息`*,如下图所示:
|
||||
|
||||

|
||||
|
||||
在 **连接配置** 区域的下方有一个 **连通性检查** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 OpenTSDB 数据库的数据,检查结果如下图所示:
|
||||
**失败**
|
||||

|
||||
**成功**
|
||||

|
||||
|
||||
### 4. 配置任务信息
|
||||
|
||||
**物理量 Metrics** 是 OpenTSDB 数据库中存储数据的物理量,用户可以指定多个需要同步的物理量,未指定则同步数据库中的全部数据。如果用户指定物理量,需要先点击右侧的 **获取 Metrics** 按钮获取当前源 OpenTSDB 数据库的所有物理量信息,然后在下拉框中进行选择,如下图所示:
|
||||

|
||||
|
||||
**起始时间** 是指源 OpenTSDB 数据库中数据的起始时间,起始时间的时区使用 explorer 所选时区,此项为必填字段。
|
||||
|
||||
**结束时间** 是指源 OpenTSDB 数据库中数据的截止时间,当不指定结束时间时,将持续进行最新数据的同步;当指定结束时间时,将只同步到这个结束时间为止,结束时间的时区使用 explorer 所选时区,此项为可选字段。
|
||||
|
||||
**每次读取的时间范围(分钟)** 是连接器从源 OpenTSDB 数据库中单次读取数据时的最大时间范围,这是一个很重要的参数,需要用户结合服务器性能及数据存储密度综合决定。如果范围过小,则同步任务的执行速度会很慢;如果范围过大,则可能因内存使用过高而导致 OpenTSDB 数据库系统故障。
|
||||
|
||||
**延迟(秒)** 是一个范围在 1 到 30 之间的整数,为了消除乱序数据的影响,TDengine 总是等待这里指定的时长,然后才读取数据。
|
||||
|
||||
### 5. 配置高级选项
|
||||
|
||||
**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示:
|
||||

|
||||

|
||||
|
||||
### 6. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 OpenTSDB 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,87 @@
|
|||
---
|
||||
title: "CSV"
|
||||
sidebar_label: "CSV"
|
||||
---
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务, 从 CSV 迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
导入一个或多个 CSV 文件数据到 TDengine。
|
||||
|
||||
## 创建任务
|
||||
### 1. 新增数据源
|
||||
在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
在 **名称** 中输入任务名称,如:“test_csv”;
|
||||
|
||||
在 **类型** 下拉列表中选择 **CSV**。
|
||||
|
||||
在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。
|
||||
|
||||

|
||||
|
||||
### 3. 配置 CSV 选项
|
||||
在 **包含表头** 区域点击开启或关闭,如果包含表头,则第一行将被视为列信息。
|
||||
|
||||
在 **忽略前 N 行** 区域填写 N,表示忽略 CSV 文件的前 N 行。
|
||||
|
||||
在 **字段分隔符** 区域进行选择,CSV 字段之间的分隔符,默认是 “,” 。
|
||||
|
||||
在 **字段引用符** 区域进行选择,当 CSV 字段中包含分隔符或换行符时,用于包围字段内容,以确保整个字段被正确识别,默认是 "“"。
|
||||
|
||||
在 **注释前缀符** 区域进行选择,当 CSV 文件中某行以此处指定的字符开头,则忽略该行默认是 “#”。
|
||||
|
||||

|
||||
|
||||
### 4. 配置解析 CSV 文件
|
||||
在本地上传 CSV 文件,例如:test-json.csv,之后会使用这条示例 csv 文件来配置提取和过滤条件。
|
||||
|
||||
#### 4.1 解析
|
||||
|
||||
点击 **选取文件** 后,选择 test-json.csv,点击 **解析** 预览识别的列。
|
||||
|
||||

|
||||
|
||||
**预览解析结果**
|
||||
|
||||

|
||||
|
||||
#### 4.2 字段拆分
|
||||
|
||||
在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 message 字段拆分成 `text_0` 和 `text_1` 这2个字段,选择 split 提取器,seperator 填写 -, number 填写2。
|
||||
点击 **删除**,可以删除当前提取规则。
|
||||
点击 **新增**,可以添加更多提取规则。
|
||||
|
||||

|
||||
|
||||
点击 **放大镜图标** 可预览提取或拆分结果。
|
||||
|
||||

|
||||
|
||||
<!-- 在 **过滤** 中,填写过滤条件,例如:填写 `id != 1`,则只有 id 不为 1 的数据才会被写入 TDengine。
|
||||
点击 **删除**,可以删除当前过滤规则。
|
||||
|
||||

|
||||
|
||||
点击 **放大镜图标** 可查看预览过滤结果。
|
||||
|
||||
 -->
|
||||
|
||||
#### 4.3 表映射
|
||||
|
||||
在 **目标超级表** 的下拉列表中选择一个目标超级表,也可以先点击右侧的 **创建超级表** 按钮 [创建超级表](#创建超级表) 。
|
||||
|
||||
在 **映射** 中,填写目标超级表中的子表名称,例如:`t_${groupid}`。
|
||||
|
||||

|
||||
|
||||
点击 **预览**,可以预览映射的结果。
|
||||
|
||||

|
||||
|
||||
|
||||
### 5. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 CSV 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,138 @@
|
|||
---
|
||||
title: "AVEVA Historian"
|
||||
sidebar_label: "AVEVA Historian"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移/数据同步任务, 从 AVEVA Historian 迁移/同步数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
AVEVA Historian 是一款工业大数据分析软件,前身为 Wonderware。可以捕获并存储高保真工业大数据,释放受制约的潜力,从而改善运营。
|
||||
|
||||
TDengine 可以高效地从 AVEVA Historian 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 中输入任务名称,如:“test_avevaHistorian”;
|
||||
|
||||
在 **类型** 下拉列表中选择 **AVEVA Historian**。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮 [创建一个新的代理](../../explorer/#创建新的代理) 。
|
||||
|
||||
在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮 [创建一个新的数据库](../../explorer/#创建数据库) 。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 **Server 地址** 和 **Server 端口**。
|
||||
|
||||
在 **认证** 区域填写 **用户名** 和 **密码**。
|
||||
|
||||
点击 **连通性检查** 按钮,检查数据源是否可用。
|
||||
|
||||

|
||||
|
||||
### 4. 配置采集信息
|
||||
|
||||
在 **采集配置** 区域填写采集任务相关的配置参数。
|
||||
|
||||
#### 4.1. 迁移数据
|
||||
|
||||
如果要进行数据迁移,需要配置以下参数:
|
||||
|
||||
在 **采集模式** 下拉列表中选择 **migrate**。
|
||||
|
||||
在 **标签** 中,填写要迁移的标签列表,以逗号(,)分隔。
|
||||
|
||||
在 **标签组大小** 中,填写标签组的大小。
|
||||
|
||||
在 **任务开始时间** 中,填写数据迁移任务的开始时间。
|
||||
|
||||
在 **任务结束时间** 中,填写数据迁移任务的结束时间。
|
||||
|
||||
在 **查询的时间窗口** 中,填写一个时间间隔,数据迁移任务将按照这个时间间隔划分时间窗口。
|
||||
|
||||

|
||||
|
||||
#### 4.2. 同步 History 表的数据
|
||||
|
||||
如果要同步 **Runtime.dbo.History** 表中的数据到 TDengine,需要配置以下参数:
|
||||
|
||||
在 **采集模式** 下拉列表中选择 **synchronize**。
|
||||
|
||||
在 **表** 中选择 **Runtime.dbo.History**。
|
||||
|
||||
在 **标签** 中,填写要迁移的标签列表,以逗号(,)分隔。
|
||||
|
||||
在 **标签组大小** 中,填写标签组的大小。
|
||||
|
||||
在 **任务开始时间** 中,填写数据迁移任务的开始时间。
|
||||
|
||||
在 **查询的时间窗口** 中,填写一个时间间隔,历史数据部分将按照这个时间间隔划分时间窗口。
|
||||
|
||||
在 **实时同步的时间间隔** 中,填写一个时间间隔,实时数据部分将按照这个时间间隔轮询数据。
|
||||
|
||||
在 **乱序时间上限** 中,填写一个时间间隔,实时数据同步过程中,超过这个时间才入库的数据可能会丢失。
|
||||
|
||||

|
||||
|
||||
#### 4.3. 同步 Live 表的数据
|
||||
|
||||
如果要同步 **Runtime.dbo.Live** 表中的数据到 TDengine,需要配置以下参数:
|
||||
|
||||
在 **采集模式** 下拉列表中选择 **synchronize**。
|
||||
|
||||
在 **表** 中选择 **Runtime.dbo.Live**。
|
||||
|
||||
在 **标签** 中,填写要迁移的标签列表,以逗号(,)分隔。
|
||||
|
||||
在 **实时同步的时间间隔** 中,填写一个时间间隔,实时数据部分将按照这个时间间隔轮询数据。
|
||||
|
||||

|
||||
|
||||
### 5. 配置数据映射
|
||||
|
||||
在 **数据映射** 区域填写数据映射相关的配置参数。
|
||||
|
||||
点击 **从服务器检索** 按钮,从 AVEVA Historian 服务器获取示例数据。
|
||||
|
||||
在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。
|
||||
|
||||
在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。
|
||||
|
||||
在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。
|
||||
|
||||
点击 **预览**,可以查看映射的结果。
|
||||
|
||||

|
||||
|
||||
### 6. 配置高级选项
|
||||
|
||||
在 **高级选项** 区域填写高级选项相关的配置参数。
|
||||
|
||||
在 **最大读取并发数** 中设置最大读取并发数。默认值:0,表示 auto,自动配置并发数。
|
||||
|
||||
在 **批次大小** 中设置每次写入的批次大小,即:单次发送的最大消息数量。
|
||||
|
||||
在 **保存原始数据** 中选择是否保存原始数据。默认值:否。
|
||||
|
||||
当保存原始数据时,以下2个参数配置生效。
|
||||
|
||||
在 **最大保留天数** 中设置原始数据的最大保留天数。
|
||||
|
||||
在 **原始数据存储目录** 中设置原始数据保存路径。
|
||||
|
||||

|
||||
|
||||
### 7. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建任务。提交任务后,回到 [数据写入](../../explorer/#数据写入) 页面可以查看任务状态。
|
|
@ -0,0 +1,103 @@
|
|||
---
|
||||
title: "MySQL"
|
||||
sidebar_label: "MySQL"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务,从 MySQL 迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
MySQL 是最流行的关系型数据库之一。很多系统都曾经或正在使用 MySQL 数据库存储物联网、工业互联网等设备上报的数据。但随着接入系统的设备量日益增长、用户对数据实时性反馈的要求也越来越高,MySQL 已经无法满足业务需求。从 TDengine 企业版 3.3.0.0 开始,TDengine 可以高效地从 MySQL 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步,解决业务面临的技术痛点。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 字段中输入任务名称,例如 *`test_mysql_01`* 。
|
||||
|
||||
选择 **类型** 下拉框中的 *`MySQL`* ,如下图所示(选择完成后页面中的字段会发生变化)。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理。
|
||||
|
||||
**目标数据库** 是必填项,可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 *`源 MySQL 数据库的连接信息`*,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 4. 配置认证信息
|
||||
|
||||
**用户** 输入源 MySQL 数据库的用户,该用户必须在该组织中拥有读取权限。
|
||||
|
||||
**密码** 输入源 MySQL 数据库中上方用户的登陆密码。
|
||||
|
||||

|
||||
|
||||
### 5. 配置连接选项
|
||||
|
||||
**字符集** 设置连接的字符集。默认字符集为 utf8mb4 。MySQL 5.5.3 支持此功能。如果需要连接到旧版本,建议改为 utf8。
|
||||
可选项有 utf8、utf8mb4、utf16、utf32、gbk、big5、latin1、ascii。
|
||||
|
||||
**SSL 模式** 设置是否与服务器协商安全 SSL TCP/IP 连接或以何种优先级进行协商。默认值是 PREFERRED。可选项有 DISABLED、PREFERRED、REQUIRED。
|
||||
|
||||

|
||||
|
||||
然后点击 **检查连通性** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 MySQL 数据库的数据。
|
||||
|
||||
### 6. 配置 SQL 查询
|
||||
|
||||
**SQL 模板** 用于查询的 SQL 语句模板,SQL 语句中必须包含时间范围条件,且开始时间和结束时间必须成对出现。SQL 语句模板中定义的时间范围由源数据库中的某个代表时间的列和下面定义的占位符组成。
|
||||
> SQL使用不同的占位符表示不同的时间格式要求,具体有以下占位符格式:
|
||||
> 1. `${start}`、`${end}`:表示 RFC3339 格式时间戳,如: 2024-03-14T08:00:00+0800
|
||||
> 2. `${start_no_tz}`、`${end_no_tz}`: 表示不带时区的 RFC3339 字符串:2024-03-14T08:00:00
|
||||
> 3. `${start_date}`、`${end_date}`:表示仅日期,如:2024-03-14
|
||||
|
||||
**起始时间** 迁移数据的起始时间,此项为必填字段。
|
||||
|
||||
**结束时间** 迁移数据的结束时间,可留空。如果设置,则迁移任务执行到结束时间后,任务完成自动停止;如果留空,则持续同步实时数据,任务不会自动停止。
|
||||
|
||||
**查询间隔** 分段查询数据的时间间隔,默认1天。为了避免查询数据量过大,一次数据同步子任务会使用查询间隔分时间段查询数据。
|
||||
|
||||
**延迟时长** 实时同步数据场景中,为了避免延迟写入的数据丢失,每次同步任务会读取延迟时长之前的数据。
|
||||
|
||||

|
||||
|
||||
### 7. 配置数据映射
|
||||
|
||||
在 **数据映射** 区域填写数据映射相关的配置参数。
|
||||
|
||||
点击 **从服务器检索** 按钮,从 MySQL 服务器获取示例数据。
|
||||
|
||||
在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。
|
||||
|
||||
在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。
|
||||
|
||||
在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。
|
||||
|
||||
点击 **预览**,可以查看映射的结果。
|
||||
|
||||

|
||||
|
||||
### 8. 配置高级选项
|
||||
|
||||
**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示:
|
||||
|
||||
**最大读取并发数** 数据源连接数或读取线程数限制,当默认参数不满足需要或需要调整资源使用量时修改此参数。
|
||||
|
||||
**批次大小** 单次发送的最大消息数或行数。默认是 10000。
|
||||
|
||||

|
||||
|
||||
### 9. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 MySQL 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,104 @@
|
|||
---
|
||||
title: "PostgreSql"
|
||||
sidebar_label: "PostgreSql"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务,从 PostgreSql 迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
PostgreSQL 是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统,有很多在大型商业 RDBMS 中所具有的特性,包括事务、子选择、触发器、视图、外键引用完整性和复杂锁定功能。
|
||||
|
||||
TDengine 可以高效地从 PostgreSQL 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 字段中输入任务名称,例如 *`test_postgres_01`* 。
|
||||
|
||||
选择 **类型** 下拉框中的 *`PostgreSQL`* ,如下图所示(选择完成后页面中的字段会发生变化)。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理 。
|
||||
|
||||
**目标数据库** 是必填项,可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 *`源 PostgreSQL 数据库的连接信息`*,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 4. 配置认证信息
|
||||
|
||||
**用户** 输入源 PostgreSQL 数据库的用户,该用户必须在该组织中拥有读取权限。
|
||||
|
||||
**密码** 输入源 PostgreSQL 数据库中上方用户的登陆密码。
|
||||
|
||||

|
||||
|
||||
### 5. 配置连接选项
|
||||
|
||||
**应用名称** 设置应用程序名称,用于标识连接的应用程序。
|
||||
|
||||
**SSL 模式** 设置是否与服务器协商安全 SSL TCP/IP 连接或以何种优先级进行协商。默认值是 PREFER。可选项有 DISABLE、ALLOW、PREFER、REQUIRE。
|
||||
|
||||

|
||||
|
||||
然后点击 **检查连通性** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 PostgreSQL 数据库的数据。
|
||||
|
||||
### 6. 配置 SQL 查询
|
||||
|
||||
**SQL 模板** 用于查询的 SQL 语句模板,SQL 语句中必须包含时间范围条件,且开始时间和结束时间必须成对出现。SQL 语句模板中定义的时间范围由源数据库中的某个代表时间的列和下面定义的占位符组成。
|
||||
> SQL使用不同的占位符表示不同的时间格式要求,具体有以下占位符格式:
|
||||
> 1. `${start}`、`${end}`:表示 RFC3339 格式时间戳,如: 2024-03-14T08:00:00+0800
|
||||
> 2. `${start_no_tz}`、`${end_no_tz}`: 表示不带时区的 RFC3339 字符串:2024-03-14T08:00:00
|
||||
> 3. `${start_date}`、`${end_date}`:表示仅日期,如:2024-03-14
|
||||
|
||||
**起始时间** 迁移数据的起始时间,此项为必填字段。
|
||||
|
||||
**结束时间** 迁移数据的结束时间,可留空。如果设置,则迁移任务执行到结束时间后,任务完成自动停止;如果留空,则持续同步实时数据,任务不会自动停止。
|
||||
|
||||
**查询间隔** 分段查询数据的时间间隔,默认1天。为了避免查询数据量过大,一次数据同步子任务会使用查询间隔分时间段查询数据。
|
||||
|
||||
**延迟时长** 实时同步数据场景中,为了避免延迟写入的数据丢失,每次同步任务会读取延迟时长之前的数据。
|
||||
|
||||

|
||||
|
||||
### 7. 配置数据映射
|
||||
|
||||
在 **数据映射** 区域填写数据映射相关的配置参数。
|
||||
|
||||
点击 **从服务器检索** 按钮,从 PostgreSQL 服务器获取示例数据。
|
||||
|
||||
在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。
|
||||
|
||||
在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。
|
||||
|
||||
在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。
|
||||
|
||||
点击 **预览**,可以查看映射的结果。
|
||||
|
||||

|
||||
|
||||
### 8. 配置高级选项
|
||||
|
||||
**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示:
|
||||
|
||||
**最大读取并发数** 数据源连接数或读取线程数限制,当默认参数不满足需要或需要调整资源使用量时修改此参数。
|
||||
|
||||
**批次大小** 单次发送的最大消息数或行数。默认是 10000。
|
||||
|
||||

|
||||
|
||||
### 9. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 PostgreSQL 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,96 @@
|
|||
---
|
||||
title: "Oracle"
|
||||
sidebar_label: "Oracle"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务,从 Oracle 迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
Oracle 数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。
|
||||
|
||||
TDengine 可以高效地从 Oracle 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 字段中输入任务名称,例如 *`test_oracle_01`* 。
|
||||
|
||||
选择 **类型** 下拉框中的 *`Oracle`* ,如下图所示(选择完成后页面中的字段会发生变化)。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理 。
|
||||
|
||||
**目标数据库** 是必填项,可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 *`源 Oracle 数据库的连接信息`*,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 4. 配置认证信息
|
||||
|
||||
**用户** 输入源 Oracle 数据库的用户,该用户必须在该组织中拥有读取权限。
|
||||
|
||||
**密码** 输入源 Oracle 数据库中上方用户的登陆密码。
|
||||
|
||||

|
||||
|
||||
然后点击 **检查连通性** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 Oracle 数据库的数据。
|
||||
|
||||
### 5. 配置 SQL 查询
|
||||
|
||||
**SQL 模板** 用于查询的 SQL 语句模板,SQL 语句中必须包含时间范围条件,且开始时间和结束时间必须成对出现。SQL 语句模板中定义的时间范围由源数据库中的某个代表时间的列和下面定义的占位符组成。
|
||||
> SQL使用不同的占位符表示不同的时间格式要求,具体有以下占位符格式:
|
||||
> 1. `${start}`、`${end}`:表示 RFC3339 格式时间戳,如: 2024-03-14T08:00:00+0800
|
||||
> 2. `${start_no_tz}`、`${end_no_tz}`: 表示不带时区的 RFC3339 字符串:2024-03-14T08:00:00
|
||||
> 3. `${start_date}`、`${end_date}`:表示仅日期,但 Oracle 中没有纯日期类型,所以它会带零时零分零秒,如:2024-03-14 00:00:00,所以使用 `date <= ${end_date}` 时需要注意,它不能包含 2024-03-14 当天数据
|
||||
|
||||
**起始时间** 迁移数据的起始时间,此项为必填字段。
|
||||
|
||||
**结束时间** 迁移数据的结束时间,可留空。如果设置,则迁移任务执行到结束时间后,任务完成自动停止;如果留空,则持续同步实时数据,任务不会自动停止。
|
||||
|
||||
**查询间隔** 分段查询数据的时间间隔,默认1天。为了避免查询数据量过大,一次数据同步子任务会使用查询间隔分时间段查询数据。
|
||||
|
||||
**延迟时长** 实时同步数据场景中,为了避免延迟写入的数据丢失,每次同步任务会读取延迟时长之前的数据。
|
||||
|
||||

|
||||
|
||||
### 6. 配置数据映射
|
||||
|
||||
在 **数据映射** 区域填写数据映射相关的配置参数。
|
||||
|
||||
点击 **从服务器检索** 按钮,从 Oracle 服务器获取示例数据。
|
||||
|
||||
在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。
|
||||
|
||||
在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。
|
||||
|
||||
在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。
|
||||
|
||||
点击 **预览**,可以查看映射的结果。
|
||||
|
||||

|
||||
|
||||
### 7. 配置高级选项
|
||||
|
||||
**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示:
|
||||
|
||||
**最大读取并发数** 数据源连接数或读取线程数限制,当默认参数不满足需要或需要调整资源使用量时修改此参数。
|
||||
|
||||
**批次大小** 单次发送的最大消息数或行数。默认是 10000。
|
||||
|
||||

|
||||
|
||||
### 8. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 Oracle 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1,110 @@
|
|||
---
|
||||
title: "Microsoft SQL Server"
|
||||
sidebar_label: "SQL Server"
|
||||
---
|
||||
|
||||
本节讲述如何通过 Explorer 界面创建数据迁移任务,从 Microsoft SQL Server 迁移数据到当前 TDengine 集群。
|
||||
|
||||
## 功能概述
|
||||
|
||||
Microsoft SQL Server 是最流行的关系型数据库之一。很多系统都曾经或正在使用 Microsoft SQL Server 数据库存储物联网、工业互联网等设备上报的数据。但随着接入系统的设备量日益增长、用户对数据实时性反馈的要求也越来越高,Microsoft SQL Server 已经无法满足业务需求。从 TDengine 企业版 3.3.2.0 开始,TDengine 可以高效地从 Microsoft SQL Server 读取数据并将其写入 TDengine,以实现历史数据迁移或实时数据同步,解决业务面临的技术痛点。
|
||||
|
||||
## 创建任务
|
||||
|
||||
### 1. 新增数据源
|
||||
|
||||
在数据写入页面中点击左上角的 **+新增数据源** 按钮进入新增数据源页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 2. 配置基本信息
|
||||
|
||||
在 **名称** 字段中输入任务名称,例如 *`test_mssql_01`* 。
|
||||
|
||||
选择 **类型** 下拉框中的 *`Microsoft SQL Server`* ,如下图所示(选择完成后页面中的字段会发生变化)。
|
||||
|
||||
**代理** 是非必填项,如有需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮创建一个新的代理。
|
||||
|
||||
**目标数据库** 是必填项,可以先点击右侧的 **+创建数据库** 按钮创建一个新的数据库。
|
||||
|
||||

|
||||
|
||||
### 3. 配置连接信息
|
||||
|
||||
在 **连接配置** 区域填写 *`源 Microsoft SQL Server 数据库的连接信息`*,如下图所示:
|
||||
|
||||

|
||||
|
||||
### 4. 配置认证信息
|
||||
|
||||
**用户** 输入源 Microsoft SQL Server 数据库的用户,该用户必须在该组织中拥有读取权限。
|
||||
|
||||
**密码** 输入源 Microsoft SQL Server 数据库中上方用户的登陆密码。
|
||||
|
||||

|
||||
|
||||
### 5. 配置连接选项
|
||||
|
||||
**实例名称** 设置 Microsoft SQL Server 实例名称(在 SQL 浏览器中定义的实例名称,仅在 Windows 平台上可用,如果指定,端口将被替换为从 SQL 浏览器中返回的值)。
|
||||
|
||||
**应用名称** 设置应用程序名称,用于标识连接的应用程序。
|
||||
|
||||
**加密** 设置是否使用加密连接。默认值是 Off。可选项有 Off、On、NotSupported、Required。
|
||||
|
||||
**信任证书** 设置是否信任服务器证书,如果开启,则不会验证服务器证书,并按原样接受它(如果开启信任,将会隐藏下方`信任证书CA`字段)。
|
||||
|
||||
**信任证书CA** 设置是否信任服务器的证书 CA。如果上传 CA 文件,除了系统信任库之外,还将根据给定的 CA 证书验证服务器证书。
|
||||
|
||||

|
||||
|
||||
然后点击 **检查连通性** 按钮,用户可以点击此按钮检查上方填写的信息是否可以正常获取源 Microsoft SQL Server 数据库的数据。
|
||||
|
||||
### 6. 配置 SQL 查询
|
||||
|
||||
**SQL 模板** 用于查询的 SQL 语句模板,SQL 语句中必须包含时间范围条件,且开始时间和结束时间必须成对出现。SQL 语句模板中定义的时间范围由源数据库中的某个代表时间的列和下面定义的占位符组成。
|
||||
> SQL使用不同的占位符表示不同的时间格式要求,具体有以下占位符格式:
|
||||
> 1. `${start}`、`${end}`:表示 RFC3339 格式时间戳,如: 2024-03-14T08:00:00+0800
|
||||
> 2. `${start_no_tz}`、`${end_no_tz}`: 表示不带时区的 RFC3339 字符串:2024-03-14T08:00:00
|
||||
> 3. `${start_date}`、`${end_date}`:表示仅日期,如:2024-03-14
|
||||
>
|
||||
> 注意:只有 `datetime2` 与 `datetimeoffset` 支持使用 start/end 查询,`datetime` 与 `smalldatetime` 只能使用 start_no_tz/end_no_tz 查询,而 `timestamp` 不能用作查询条件。
|
||||
|
||||
**起始时间** 迁移数据的起始时间,此项为必填字段。
|
||||
|
||||
**结束时间** 迁移数据的结束时间,可留空。如果设置,则迁移任务执行到结束时间后,任务完成自动停止;如果留空,则持续同步实时数据,任务不会自动停止。
|
||||
|
||||
**查询间隔** 分段查询数据的时间间隔,默认1天。为了避免查询数据量过大,一次数据同步子任务会使用查询间隔分时间段查询数据。
|
||||
|
||||
**延迟时长** 实时同步数据场景中,为了避免延迟写入的数据丢失,每次同步任务会读取延迟时长之前的数据。
|
||||
|
||||

|
||||
|
||||
### 7. 配置数据映射
|
||||
|
||||
在 **数据映射** 区域填写数据映射相关的配置参数。
|
||||
|
||||
点击 **从服务器检索** 按钮,从 Microsoft SQL Server 服务器获取示例数据。
|
||||
|
||||
在 **从列中提取或拆分** 中填写从消息体中提取或拆分的字段,例如:将 vValue 字段拆分成 `vValue_0` 和 `vValue_1` 这 2 个字段,选择 split 提取器,seperator 填写分割符 `,`, number 填写 2。
|
||||
|
||||
在 **过滤** 中,填写过滤条件,例如:填写`Value > 0`,则只有 Value 大于 0 的数据才会被写入 TDengine。
|
||||
|
||||
在 **映射** 中,选择要映射到 TDengine 的超级表,以及映射到超级表的列。
|
||||
|
||||
点击 **预览**,可以查看映射的结果。
|
||||
|
||||

|
||||
|
||||
### 8. 配置高级选项
|
||||
|
||||
**高级选项** 区域是默认折叠的,点击右侧 `>` 可以展开,如下图所示:
|
||||
|
||||
**最大读取并发数** 数据源连接数或读取线程数限制,当默认参数不满足需要或需要调整资源使用量时修改此参数。
|
||||
|
||||
**批次大小** 单次发送的最大消息数或行数。默认是 10000。
|
||||
|
||||

|
||||
|
||||
### 9. 创建完成
|
||||
|
||||
点击 **提交** 按钮,完成创建 Microsoft SQL Server 到 TDengine 的数据同步任务,回到[数据源列表](../../explorer/#数据写入)页面可查看任务执行情况。
|
|
@ -0,0 +1 @@
|
|||
label: 数据写入
|
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 363 KiB |
After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
@ -1,9 +1,11 @@
|
|||
---
|
||||
sidebar_label: 数据源接入
|
||||
sidebar_label: 数据写入
|
||||
title: 零代码数据源接入
|
||||
toc_max_heading_level: 4
|
||||
---
|
||||
|
||||
## 概述
|
||||
|
||||
TDengine Enterprise 配备了一个强大的可视化数据管理工具—taosExplorer。借助 taosExplorer,用户只须在浏览器中简单配置,就能轻松地向 TDengine 提交任务,实现以零代码方式将来自不同数据源的数据无缝导入 TDengine。在导入过程中,TDengine 会对数据进行自动提取、过滤和转换,以保证导入的数据质量。通过这种零代码数据源接入方式,TDengine 成功转型为一个卓越的时序大数据汇聚平台。用户无须部署额外的 ETL 工具,从而大大简化整体架构的设计,提高了数据处理效率。
|
||||
|
||||
## 支持的数据源
|
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 247 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 22 KiB |