注释 CSV
InfluxDB /api/v2/query
API 以注释 CSV 格式返回查询结果。您还可以使用注释 CSV 和 influx write
命令将数据写入 InfluxDB,或在 InfluxDB UI 中上传 CSV 文件。
CSV 表必须以 UTF-8 和 Unicode 正常形式 C 进行编码,如UAX15中定义。InfluxDB 删除换行符之前的回车符。
CSV 响应格式
InfluxDB 注释 CSV 支持以下编码。
表格
表格可能包含以下行和列。
行
- 注释行:描述列属性。
- 标题行:定义列标签(每个表格一个标题行)。
- 记录行:描述表格中的数据(每行一个记录)。
示例
#group,false,false,true,true,false,false,true,true,true,true
#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,double,string,string,string,string
#default,mean,,,,,,,,,
,result,table,_start,_stop,_time,_value,_field,_measurement,host,region
,,0,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:52:00Z,15.43,mem,m,A,east
,,1,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:52:00Z,59.25,mem,m,B,east
,,2,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:52:00Z,52.62,mem,m,C,east
列
除了数据列之外,表格可能还包括以下列
- 注释列:显示注释的名称。仅在注释行中使用,始终是第一列。值可以为空或支持的注释。响应格式使用逗号(
,
)分隔注释名称和行中的值。为此,表格中的行以一个前导逗号开始;您会注意到整个表格长度的一个空列。 - 结果列:包含查询指定的结果名称。
- 表格列:包含结果中每个表格的唯一 ID。
多个表格和结果
如果文件或数据流包含多个表格或结果,必须满足以下要求
- 表格列指示行属于哪个表格。
- 表格中的所有行都是连续的。
- 以下情况下,空行用于分隔新的表格边界
- 在同一个结果中但表结构不相同的表格之间。
- 在连接的 CSV 文件之间。
- 每个新的表格边界都以新的注释和标题行开始。
示例
#group,false,false,true,true,false,false,true,true,true,true
#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,double,string,string,string,string
#default,_result,,,,,,,,,
,result,table,_start,_stop,_time,_value,_field,_measurement,host,region
,,0,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,15.43,mem,m,A,east
,,1,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,59.25,mem,m,B,east
,,2,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,52.62,mem,m,C,east
#group,false,false,true,true,true,true,false,false,true,true
#datatype,string,long,string,string,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,string,string,string
#default,_result,,,,,,,,,
,result,table,_field,_measurement,_start,_stop,_time,_value,host,region
,,3,mem_level,m,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,ok,A,east
,,4,mem_level,m,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,info,B,east
,,5,mem_level,m,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,info,C,east
方言选项
Flux 支持 text/csv
格式的以下方言选项。
选项 | 描述 | 默认值 |
---|---|---|
header | 如果为真,则包含标题行。 | true |
delimiter | 用于分隔列的字符。 | , |
quoteChar | 用于引用包含分隔符的值的字符。 | " |
annotations | 要编码的注释列表(数据类型、组或默认值)。 | empty |
commentPrefix | 用于识别注释的字符串前缀。始终添加到注释中。 | # |
注释
注释行描述列属性,并以 #
(或 commentPrefix 值)开始。注释行中的第一列始终包含注释名称。后续列包含注释值,如下表所示。
注释名称 | 值 | 描述 |
---|---|---|
datatype | 数据类型或 行协议元素 | 描述数据类型或列代表哪个行协议元素。 |
group | 布尔标志 true 或 false | 指示该列是组键的一部分。 |
默认值 | 列的数据类型值 | 用于空值的行应使用的值。 |
某些工具可能使用或需要逗号(,
)来分隔注释行中的注释名称和值。
要编码具有其组键的表,必须包含datatype
、group
和default
注释。如果表没有行,则default
注释提供组键值。
数据类型
数据类型 | Flux类型 | 描述 |
---|---|---|
布尔值 | bool | “true”或“false” |
unsignedLong | uint | 无符号64位整数 |
long | int | 有符号64位整数 |
double | float | IEEE-754 64位浮点数 |
字符串 | 字符串 | UTF-8编码的字符串 |
base64Binary | bytes | 按照RFC 4648定义的base64编码的字节序列 |
dateTime | time | 时间点,可能后跟一个冒号:和格式的描述(数字、RFC3339、RFC3339Nano) |
duration | duration | 表示为无符号64位整数数字的持续时间(纳秒) |
行协议元素
datatype
注释接受数据类型和行协议元素。行协议元素标识了当使用influx write
命令将注释CSV写入InfluxDB时,列如何转换为行协议。
行协议元素 | 描述 |
---|---|
measurement | 列值是度量 |
field (默认) | 列标题是字段键,列值是字段值 |
tag | 列标题是标签键,列值是标签值 |
time | 列值是时间戳 (dateTime的别名) |
ignore 或ignored | 该列被忽略,不包含在行协议中 |
混合数据类型和行协议元素
在#datatype
注释中具有数据类型(除dateTime
之外)的列在转换为行协议时被视为字段。未指定数据类型的列在转换为行协议时默认为field
,并且行协议中的列值保持未修改。 请参见下面的示例示例和行协议数据类型和格式。
时间列
具有time
或dateTime
#datatype
注释的列在转换为行协议时用作时间戳。如果有多个time
或dateTime
列,则最后一列(在右侧)用作行协议中的时间戳。其他时间列被忽略,并且influx write
命令输出警告。
时间列值应该是Unix纳秒时间戳、RFC3339或RFC3339Nano。
在数据类型注释中的示例行协议元素
#group false,false,false,false,false,false,false
#datatype measurement,tag,tag,field,field,ignored,time
#default ,,,,,,
m,cpu,host,time_steal,usage_user,nothing,time
cpu,cpu1,host1,0,2.7,a,1482669077000000000
cpu,cpu1,host2,0,2.2,b,1482669087000000000
结果行协议
cpu,cpu=cpu1,host=host1 time_steal=0,usage_user=2.7 1482669077000000000
cpu,cpu=cpu1,host=host2 time_steal=0,usage_user=2.2 1482669087000000000
混合数据类型和行协议元素的示例
#group,false,false,false,false,false,false,false,false,false
#datatype,measurement,tag,string,double,boolean,long,unsignedLong,duration,dateTime
#default,test,annotatedDatatypes,,,,,,
,m,name,s,d,b,l,ul,dur,time
,,,str1,1.0,true,1,1,1ms,1
,,,str2,2.0,false,2,2,2us,2020-01-11T10:10:10Z
结果行协议
test,name=annotatedDatatypes s="str1",d=1,b=true,l=1i,ul=1u,dur=1000000i 1
test,name=annotatedDatatypes s="str2",d=2,b=false,l=2i,ul=2u,dur=2000i 1578737410000000000
错误
如果在执行过程中发生错误,则返回一个表,其中包含
- 包含错误消息的错误列。
- 具有唯一参考代码的参考列,用于识别有关错误的更多信息。
- 包含错误属性的第二行。
如果发生错误
- 在结果出现之前,HTTP状态码指示错误。错误详细信息编码在csv表中。
- 在将部分结果发送给客户端之后,错误编码为下一个表,并且剩余的结果被丢弃。在这种情况下,HTTP状态码保持为200 OK。
示例
具有数据类型注释的错误编码
#datatype,string,long
,error,reference
,Failed to parse query,897
这个页面有帮助吗?
感谢您的反馈!