行协议参考
InfluxDB 3核心正在进行公开测试
InfluxDB 3 Core 正在进行公开 alpha 测试,并可供测试和反馈,但不适合用于生产环境。产品和本文件都是进行中的工作。我们欢迎并鼓励您分享您对 alpha 版本的体验,并邀请您加入我们的公共频道以获取更新和分享反馈。
InfluxDB 3 Core使用行协议来写入数据点。它是一种基于文本的格式,提供数据点的表格、标签集、字段集和时间戳。
// Syntax
<table>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]
// Example
myTable,tag1=value1,tag2=value2 fieldKey="fieldValue" 1556813561098000000
由换行符 \n 分隔的行表示 InfluxDB 中的一个单独点。行协议对空格敏感。
行协议不支持标签或字段值中的换行符 \n。
行协议的元素
表格
(必需) 表名。 InfluxDB 每个点接受一个表。 表名是区分大小写的,并受到 命名限制 的约束。
数据类型: String
如果熟悉之前的 InfluxDB 版本,“table” 与 “measurement” 是同义的。
标签集
可选 –
该点的所有标签键值对。
键值关系用 = 操作符表示。
多个标签键值对用逗号分隔。
标签键和标签值是区分大小写的。
标签键受 命名限制 的约束。
标签值不能为空;请省略标签即可。
字段集合
(必填) 所有点的键值对。 点必须至少有一个字段。 字段键和值是区分大小写的。 字段键受命名限制的约束。
关键数据类型: String
值数据类型: Float | Integer | UInteger | String | Boolean
始终对字符串字段值使用双引号。关于引号的更多信息请参阅下方.
tableName fieldKey="field string value" 1556813561098000000
时间戳
可选 – 数据点的unix时间戳。 InfluxDB每个数据点接受一个时间戳。 如果未提供时间戳,InfluxDB将使用其主机机器的系统时间(UTC)。
数据类型: Unix时间戳
有关时间戳的重要说明
- 确保数据点包含指标观察的时间(而不是接收的时间),请包含时间戳。
- 如果您的时间戳不是以纳秒为单位,则在将数据写入 InfluxDB 3 Core 时指定时间戳的精度。
空白字符
行协议中的空格决定了 InfluxDB 如何解释数据点。 第一个未转义的空格 将表和标签集与字段集分隔开。 第二个未转义的空格 将字段集与时间戳分隔开。
数据类型和格式
浮点数
IEEE-754 64位浮点数。 默认数值类型。 InfluxDB支持浮点字段值的科学记数法。
浮点字段值示例
myTable fieldKey=1.0
myTable fieldKey=1
myTable fieldKey=-1.234456e+78
整数
签名的 64 位整数。
数字上的尾部 i 表示一个整数。
| 最小整数 | 最大整数 |
|---|---|
-9223372036854775808i | 9223372036854775807i |
整数字段值示例
myTable fieldKey=1i
myTable fieldKey=12485903i
myTable fieldKey=-12485903i
无符号整数
无符号64位整数。
数字后面的 u 表示一个无符号整数。
| 最小无符号整数 | 最大无符号整数 |
|---|---|
0u | 18446744073709551615u |
无符号整数字段值示例
myTable fieldKey=1u
myTable fieldKey=12485903u
字符串
纯文本字符串。 长度限制 64KB。
字符串示例
# String table name, field key, and field value
myTable fieldKey="this is a string"
布尔值
存储 true 或 false 值。
| 布尔值 | 接受的语法 |
|---|---|
| 正确 | t, T, true, True, TRUE |
| 假 | f, F, false, False, FALSE |
布尔字段值示例
myTable fieldKey=true
myTable fieldKey=false
myTable fieldKey=t
myTable fieldKey=f
myTable fieldKey=TRUE
myTable fieldKey=FALSE
不要引用布尔字段值。引用的字段值被解释为字符串。
Unix 时间戳
Unix 时间戳以指定的精度。默认精度是纳秒 (ns)。
| 最小时间戳 | 最大时间戳 |
|---|---|
-9223372036854775806 | 9223372036854775806 |
Unix 时间戳示例
myTableName fieldKey="fieldValue" 1556813561098000000
引用
行协议支持单引号和双引号,如下表所述:
| 元素 | 双引号 | 单引号 |
|---|---|---|
| 表 | 有限 * | 有限 * |
| 标签键 | 有限 * | 有限 * |
| 标签值 | 有限 * | 有限 * |
| 字段键 | 有限 * | 有限 * |
| 字段值 | 仅限字符串 | 从不 |
| 时间戳 | 从不 | 从不 |
* 行协议在表名、标签键、标签值和字段键中接受双引号和单引号,但将其解释为名称、键或值的一部分。
特殊字符
行协议支持字符串元素中的特殊字符。 在以下上下文中,它需要使用反斜杠(\)转义某些字符:
| 元素 | 转义字符 |
|---|---|
| 表 | 逗号, 空格 |
| 标签键 | 逗号、等号、空格 |
| 标签值 | 逗号、等号、空格 |
| 字段键 | 逗号, 等号, 空格 |
| 字段值 | 双引号,反斜杠 |
您不需要转义其他特殊字符。
行协议中特殊字符的示例
# Table name with spaces
my\ Table fieldKey="string value"
# Double quotes in a string field value
myTable fieldKey="\"string\" within a string"
# Tag keys and values with spaces
myTable,tag\ Key1=tag\ Value1,tag\ Key2=tag\ Value2 fieldKey=100
# Emojis
myTable,tagKey=🍭 fieldKey="Launch 🚀" 1556813561098000000
转义反斜杠
行协议支持字面上的反斜杠和作为转义字符的反斜杠。 有两个连续的反斜杠,第一个被解释为转义字符。 例如:
| 反斜杠 | 被解释为 |
|---|---|
\ | \ |
\\ | \ |
\\\ | \\ |
\\\\ | \\ |
\\\\\ | \\\ |
\\\\\\ | \\\ |
评论
行协议将 # 视为行的注释字符,并忽略后续所有字符,直到下一个换行 \n。
# This is a comment
myTable fieldKey="string value" 1556813561098000000
命名限制
表名、标签键和字段键是字母数字组合,且必须以字母或数字开头。它们可以包含连字符 (-) 和下划线 (_)。
重复点
一个点通过表名、标签集和时间戳唯一标识。如果您提交具有相同表、标签集和时间戳的行协议,但具有不同的字段集,字段集将成为旧字段集和新字段集的并集,其中任何冲突都优先考虑新字段集。