文档说明

注释 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布尔标志 truefalse指示该列是组键的一部分。
默认值列的数据类型值用于空值的行应使用的值。

某些工具可能使用或需要逗号(,)来分隔注释行中的注释名称和值。

要编码具有其组键的表,必须包含datatypegroupdefault注释。如果表没有行,则default注释提供组键值。

数据类型

数据类型Flux类型描述
布尔值bool“true”或“false”
unsignedLonguint无符号64位整数
longint有符号64位整数
doublefloatIEEE-754 64位浮点数
字符串字符串UTF-8编码的字符串
base64Binarybytes按照RFC 4648定义的base64编码的字节序列
dateTimetime时间点,可能后跟一个冒号:和格式的描述(数字、RFC3339、RFC3339Nano)
durationduration表示为无符号64位整数数字的持续时间(纳秒)

行协议元素

datatype注释接受数据类型行协议元素。行协议元素标识了当使用influx write命令将注释CSV写入InfluxDB时,列如何转换为行协议。

行协议元素描述
measurement列值是度量
field (默认)列标题是字段键,列值是字段值
tag列标题是标签键,列值是标签值
time列值是时间戳 (dateTime的别名)
ignoreignored该列被忽略,不包含在行协议中

混合数据类型和行协议元素

#datatype注释中具有数据类型(除dateTime之外)的列在转换为行协议时被视为字段。未指定数据类型的列在转换为行协议时默认为field,并且行协议中的列值保持未修改。 请参见下面的示例示例行协议数据类型和格式

时间列

具有timedateTime #datatype注释的列在转换为行协议时用作时间戳。如果有多个timedateTime列,则最后一列(在右侧)用作行协议中的时间戳。其他时间列被忽略,并且influx write命令输出警告。

时间列值应该是Unix纳秒时间戳RFC3339RFC3339Nano

在数据类型注释中的示例行协议元素
#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

这个页面有帮助吗?

感谢您的反馈!


Flux的未来

Flux将进入维护模式。您可以继续按当前方式使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB v3增强和InfluxDB Clustered现已全面上市

新功能,包括更快的查询性能和管理工具,推动了InfluxDB v3产品线的进步。InfluxDB Clustered现已全面上市。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括用于监控InfluxDB集群健康状况的操作仪表板,InfluxDB Cloud专用版中的单点登录(SSO)支持以及新的令牌和数据库管理API。

了解v3的新增强功能


InfluxDB Clustered全面上市

InfluxDB Clustered现已全面上市,并为您在自管理堆栈中提供了InfluxDB v3的功能。

与我们讨论InfluxDB Clustered

由TSM支持的InfluxDB Cloud