菜单

数据帧

Grafana支持各种不同的数据源,每个国家都有其自己的数据模型。为做到这一点,Grafana合并来自每一个数据源的查询结果为一个统一的数据结构数据帧

数据帧的结构是一个概念的借用等数据分析工具R编程语言,熊猫

数据帧中可用Grafana 7.0 +,取代了时间序列和表结构更通用的数据结构,可以支持更广泛的数据类型。

本文件概述的数据帧结构,并在Grafana数据是如何处理的。

的数据帧

数据帧是columnar-oriented表结构,这意味着它不是由行和列存储数据。要理解这意味着什么,让我们看一下打印稿Grafana所使用的定义:

接口DataFrame{名字吗?:字符串;/ /引用查询创建框架refId ?:字符串;字段:[]字段;}

从本质上讲,数据帧的集合字段每个字段,对应于一个列。反过来,每个字段包含一个值的集合,连同元信息,如数据类型的值。

{界面字段名称:字符串;/ /普罗米修斯喜欢标签/标签标签吗?:记录<字符串,字符串>;/ /例如字符串、数字、时间(或更具体的原语在后端)类型:FieldType;/ /数组值的所有相同类型的值:向量< T >;/ /可选的显示数据的字段(如单位名称搁置,等)配置:FieldConfig;}

让我们来看一个例子。下表展示了两个字段的数据帧,时间温度

时间 温度
2020-01-02 03:04:00 45.0
2020-01-02 03:05:00 47.0
2020-01-02 03:06:00 48.0

有三个每个字段值,每个值字段必须共享相同的类型。在这种情况下,所有的值在时间上的时间戳,和温度场中的所有值是数字。

限制数据帧是各个领域的框架必须是一个有效的数据帧的长度相同。

字段配置

每个字段在数据帧包含可选字段中的值的信息,如单位、缩放、等等。

通过添加字段配置数据帧,Grafana可以配置自动可视化。例如,您可以配置Grafana自动设置单位提供的数据源。

转换

随着类型信息,字段配置启用数据转换Grafana之内。

数据转换是任何函数,它接受一个数据帧作为输入,并返回一个数据帧作为输出。通过使用数据帧在你的插件,你会得到一个免费的转换。

时间序列数据帧

与至少一个数据帧被认为是一个时间字段时间序列

有关时间序列的更多信息,请参阅我们的介绍时间序列

宽格式

当一组时间序列相同的股票时间指数——在每一个时间序列时间字段相同,那么它们可以存储在一起,在一个格式。通过重用领域的时候,我们可以减少数据发送到浏览器。

在这个例子中,cpu从每个主机使用股票指数的时候,我们可以将它们存储在相同的数据帧。

名称:宽尺寸:3字段2行+ - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |名称:时间|名称:cpu |名称:cpu | |标签:|标签:主机= |标签:主机b = | |类型:[]。时间|类型:[]float64 |类型:[]float64 | + - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | 2020-01-02 03:04:00 | 3 | 4 | | 2020-01-02 03:05:00 | 6 | 7 | + - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

然而,如果两个时间序列不共享相同的时间值,表示为两个不同的数据帧。

名称:cpu维度:2字段2行+ - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + |名称:时间|名称:cpu | |标签:|标签:主机= | |类型:[]。时间|类型:[]float64 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 2020-01-02 03:04:00 | 3 | | 2020-01-02 03:05:00 | 6 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +名称:cpu维度:2字段2行+ - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + |名称:时间|名称:cpu | |标签:|标签:主机b = | |类型:[]。时间|类型:[]float64 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 2020-01-02 03:04:01 | 4 | | 2020-01-02 03:05:01 | 7 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +

宽格式通常可以使用多个时间序列时收集的过程是相同的。在这种情况下,每个测量都是在相同的时间间隔,因此共享相同的时间值。

长格式

一些数据源返回数据格式(也称为狭窄的格式)。返回的格式,这是很常见的,例如,SQL数据库。

在长格式字符串值表示为单独的字段而不是标签。因此,长形式的数据形式可能有重复的时间值。

Grafana可以检测和数据帧长格式转换成宽格式。

注意:后端长格式目前仅支持:Grafana问题# 22219

例如,下面的数据帧格式:

名称:长尺寸:4场4行+ - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + |名称:时间|名称:aMetric |名称:bMetric |名称:主机| |标签:|标签:|标签:|标签:| |类型:[]。时间|类型:[]float64 |类型:[]float64 |类型:[]字符串| + - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + | 2020-01-02 03:04:00 | 2 | 10 | foo | | 2020-01-02 03:04:00 | 5 | 15酒吧| | | 2020-01-02 03:05:00 | 3 | 11 | foo | | 2020-01-02 03:05:00 | 6 | 16 | | +酒吧- - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

可以转换成广泛的数据帧格式:

名称:宽尺寸:5字段2行+ - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + |名称:时间|名称:aMetric |名称:bMetric |名称:aMetric |名称:bMetric | |标签:|标签:主机= foo |标签:主机= foo |标签:主机=酒吧|标签:主机=酒吧| |类型:[]。时间|类型:[]float64 |类型:[]float64 |类型:[]float64 |类型:[]float64 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 2020-01-02 03:04:00 | 2 | 10 | 5 | 15 | | 2020-01-02 03:05:00 | 3 | 11 | 6 | 16 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +

注意:并不是所有的面板支持广泛的时间序列数据帧格式。保持完整的向后兼容性我们引入了一个转换,可用于转换的宽的长格式。使用信息,参考准备时间series-transformation

技术的引用

本节包含链接的技术参考和实现数据帧。

Apache箭头

数据帧结构的启发,并使用Apache箭头项目。Javascript数据帧使用箭头表作为底层结构,和后端代码序列化框架的箭头表进行传播。

Javascript

Javascript实现的数据帧/ src / dataframe文件夹/ src /类型/ dataframe.ts@grafana /数据

对数据帧的去实施文档,请参考github.com/grafana/grafana-plugin-sdk-go/data包