文档

注释 CSV

The InfluxDB /api/v2/query API returns query results in annotated CSV format. You can also write data to InfluxDB using annotated CSV and the influx write command, or upload a CSV file in the InfluxDB UI.

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,则包含标题行。true
delimiter用于分隔列的字符。,
quoteChar用于引用包含分隔符的值的字符。"
annotations要编码的注释列表(数据类型、组或默认)。empty
commentPrefix用于标识注释的字符串前缀。始终添加到注释中。#

注释

注释行描述列属性,并以#(或commentPrefix值)开头。注释行中的第一列始终包含注释名称。后续列包含注释值,如以下表格所示。

注释名称描述
datatype一个数据类型行协议元素描述数据的类型或列表示哪个行协议元素。
group布尔标志truefalse指示该列是组键的一部分。
default列的数据类型的一个值对于空值行使用的值。

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

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

数据类型

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

行协议元素

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

行协议元素描述
measurement列值是度量
field (默认)列标题是字段键,列值是字段值
tag列标题是标签键,列值是标签值
time列值是时间戳 (alias for 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 集群版现已正式发布

新功能,包括更快的查询性能和管理工具,推动了 InfluxDB v3 产品线的进步。InfluxDB 集群版现已正式发布。

InfluxDB v3 性能和功能

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

了解 v3 增强功能


InfluxDB 集群版正式发布

InfluxDB 集群版现已正式发布,并为您在自行管理的堆栈中提供了 InfluxDB v3 的强大功能。

与我们讨论 InfluxDB 集群版