菜单
Grafana Cloud 企业版 开源

转换数据

转换是系统应用可视化之前操纵查询返回的数据的强大方法。使用转换,您可以

  • 重命名字段
  • 连接时间序列/类似 SQL 的数据
  • 跨查询执行数学运算
  • 将一个转换的输出用作另一个转换的输入

对于依赖于同一数据集的多个视图的用户,转换提供了一种创建和维护多个仪表板的有效方法。

您还可以将一个转换的输出用作另一个转换的输入,从而提高性能。

有时系统无法绘制转换后的数据。在这种情况下,单击可视化上方 的 表格视图 切换按钮以切换到数据的表格视图。这可以帮助您了解转换的最终结果。

转换类型

Grafana 提供了许多方法来转换数据。有关转换的完整列表,请参阅 转换函数

转换顺序

当有多个转换时,Grafana 按它们列出的顺序应用它们。每个转换都会创建一个结果集,然后将其传递给处理管道中的下一个转换。

Grafana 应用转换的顺序会直接影响结果。例如,如果您使用 Reduce 转换将一列的所有结果压缩成单个值,那么您只能对该单个值应用转换。

将转换函数添加到数据

以下步骤指导您将转换添加到数据。本文档不包括每种转换类型的步骤。有关转换的完整列表,请参阅 转换函数。有关可用计算的信息,请参阅 计算类型

  1. 导航到您要添加一个或多个转换的面板。
  2. 将鼠标悬停在面板的任何位置以显示右上角的操作菜单。
  3. 单击菜单并选择 **编辑**。
  4. 单击 **转换** 选项卡。
  5. 单击转换。将出现一个转换行,您可以在其中配置转换选项。有关如何配置转换的更多信息,请参阅 转换函数。有关可用计算的信息,请参阅 计算类型
  6. 要应用另一个转换,请单击 **添加转换**。此转换会对前一个转换返回的结果集进行操作。
    Transform tab in the panel editor

调试转换

要查看转换的输入和输出结果集,请单击转换行右侧的错误图标。

输入和输出结果集可以帮助您调试转换。

The debug transformation screen with the debug icon highlighted

禁用转换

您可以通过单击转换行右上角的眼睛图标来禁用或隐藏一个或多个转换。这会禁用该特定转换的应用操作,并且当您依次更改多个转换时,这可以帮助您识别问题。

A transformation row with the disable transformation icon highlighted

过滤转换

如果您的面板使用多个查询,您可以过滤这些查询并将选定的转换仅应用于其中一个查询。为此,请单击转换行右上角的过滤器图标。这将打开一个下拉菜单,其中包含面板上使用的查询列表。在这里,您可以选择要转换的查询。

您还可以通过注释(包括示例)进行过滤,以将转换应用于它们。当您这样做时,字段列表会更改以反映注释或示例工具提示中的字段。

如果您的面板具有多个查询或数据源(即面板或注释数据),则始终显示过滤器图标,但如果应用了用于合并查询输出的先前转换,则它可能不起作用。这是因为一个转换接受上一个转换的输出。

删除转换

我们建议您删除不需要的转换。删除转换时,您会从可视化中删除数据。

开始之前

  • 确定所有依赖于该转换的仪表板,并通知受影响的仪表板用户。

删除转换:

  1. 打开一个用于编辑的面板。
  2. 单击 **转换** 选项卡。
  3. 点击要删除的转换旁边的垃圾桶图标。
A transformation row with the remove transformation icon highlighted

转换函数

您可以对您的数据执行以下转换。

从计算中添加字段

使用此转换添加一个从其他两个字段计算得到的新字段。每个转换允许您添加一个新字段。

  • **模式** - 选择一种模式
    • **减少行** - 对所选字段的每一行独立应用所选计算。
    • **二元运算** - 对来自两个所选字段的单行中值的应用基本二元运算(例如,求和或相乘)。
    • **一元运算** - 对来自所选字段的单行中值的应用基本一元运算。可用的运算有
      • **绝对值 (abs)** - 返回给定表达式的绝对值。它表示表达式距离零的距离,以正数表示。
      • **自然指数 (exp)** - 返回e的给定表达式的幂。
      • **自然对数 (ln)** - 返回给定表达式的自然对数。
      • **地板 (floor)** - 返回小于或等于给定表达式的最大整数。
      • **天花板 (ceil)** - 返回大于或等于给定表达式的最小整数。
    • **累积函数** - 对当前行和所有前一行应用函数。
      • **总计** - 计算到当前行(包括当前行)的累积总计。
      • **平均值** - 计算到当前行(包括当前行)的平均值。
    • **窗口函数** - 应用窗口函数。窗口可以是**拖尾**或**居中**。使用拖尾窗口,当前行将是窗口的最后一行。使用居中窗口,窗口将以当前行为中心。对于偶数窗口大小,窗口将以当前行和前一行之间为中心。
      • **平均值** - 计算移动平均值或滚动平均值。
      • **标准差 (stddev)** - 计算移动标准差。
      • **方差** - 计算移动方差。
    • **行索引** - 插入一个包含行索引的字段。
  • **字段名称** - 选择您要用于新字段计算的字段名称。
  • **计算** - 如果您选择**减少行**模式,则会显示**计算**字段。点击该字段以查看可用于创建新字段的计算选项列表。有关可用计算的信息,请参阅计算类型
  • **运算** - 如果您选择**二元运算**或**一元运算**模式,则会显示**运算**字段。这些字段允许您对来自所选字段的单行中值的应用基本数学运算。您还可以使用数值进行二元运算。
  • **作为百分位数** - 如果您选择**行索引**模式,则会显示**作为百分位数**开关。此开关允许您将行索引转换为总行数的百分比。
  • **别名** - (可选)输入新字段的名称。如果您不填写此项,则字段将以匹配计算的名称命名。
  • **替换所有字段** - (可选)如果您想要隐藏所有其他字段,并在可视化中仅显示您的计算字段,请选择此选项。

在下面的示例中,我们将两个字段加在一起,并将其命名为 Sum。

A stat visualization including one field called Sum

连接字段

使用此转换将所有帧中的所有字段合并到一个结果中。

例如,如果您有单独的查询来检索温度和正常运行时间数据(查询 A)以及空气质量指数和错误信息(查询 B),应用连接转换将生成一个合并的数据帧,其中包含所有相关信息在一个视图中。

考虑以下内容

查询 A

温度正常运行时间
15.41230233

查询 B

AQI错误
3.25

连接字段后,数据帧将是

温度正常运行时间AQI错误
15.412302333.25

此转换简化了合并来自不同来源的数据的过程,为分析和可视化提供了全面的视图。

来自查询结果的配置

使用此转换选择一个查询并提取标准选项,例如**最小值**、**最大值**、**单位**和**阈值**,并将它们应用于其他查询结果。此功能可以根据特定查询返回的数据实现动态可视化配置。

选项

  • **配置查询** - 选择返回您要作为配置使用的数据的查询。
  • **应用于** - 选择要应用配置的字段或序列。
  • **应用于选项** - 指定字段类型或使用字段名称正则表达式,具体取决于您在**应用于**中所做的选择。

字段映射表

在配置选项下方,您将找到字段映射表。此表列出了配置查询返回的数据中找到的所有字段,以及**用作**和**选择**选项。它提供了对将字段映射到配置属性的控制,并且对于多行,它允许您选择要选择的值。

示例

输入[0](来自查询:A,名称:ServerA)

时间
162617811912710
162617811912930

输入[1](来自查询:B)

时间
1626178119127100
1626178119129100

输出(与输入[0]相同,但现在在 Value 字段上配置)

时间值(配置:最大值=100)
162617811912710
162617811912930

源数据中的每一行都成为一个单独的字段。每个字段现在都有一个最大配置选项。选项(例如**最小值**、**最大值**、**单位**和**阈值**)是字段配置的一部分。如果已设置,则可视化将使用它们,而不是面板编辑器选项窗格中手动配置的任何选项。

值映射

您还可以将查询结果转换为值映射。使用此选项,配置查询结果中的每一行都定义一个单独的值映射行。请参阅以下示例。

配置查询结果

文本颜色
L蓝色
M中等绿色
H红色

在字段映射中指定

字段用作选择
值映射/值所有值
文本值映射/文本所有值
颜色值映射/颜色所有值

Grafana 从您的查询结果构建值映射,并将它们应用于实际数据查询结果。您应该看到值被映射并根据配置查询结果进行着色。

转换字段类型

使用此转换修改指定字段的字段类型。

此转换具有以下选项

  • **字段** - 从可用字段中选择
  • **作为** - 选择要转换到的FieldType
    • **数值** - 尝试将值转换为数字
    • **字符串** - 将值转换为字符串
    • **时间** - 尝试将值解析为时间
      • 输入将根据Moment.js 解析格式进行解析
      • 它将以毫秒为单位的 Unix 纪元时间戳解析数值输入。如果您的输入以秒为单位,则必须将输入乘以 1000。
      • 将显示一个选项,允许您通过类似 yyyy-mm-dd 或 DD MM YYYY hh:mm:ss 的字符串指定日期格式作为输入。
    • **布尔值** - 将值转换为布尔值
    • **枚举** - 将值转换为枚举
      • 将显示一个表来管理枚举
    • **其他** - 尝试将值解析为 JSON

例如,考虑以下查询,可以通过选择时间字段作为时间并指定日期格式为 YYYY 来修改该查询。

示例查询

时间标记
2017-07-01高于25
2018-08-02低于22
2019-09-02低于29
2020-10-04高于22

结果

转换后的查询

时间标记
2017-01-01 00:00:00高于25
2018-01-01 00:00:00低于22
2019-01-01 00:00:00低于29
2020-01-01 00:00:00高于22

此转换允许您灵活地调整数据类型,确保可视化中的兼容性和一致性。

提取字段

使用此转换选择一个数据源,并以不同的格式从其中提取内容。此转换具有以下字段

  • **源** - 选择数据源的字段。
  • **格式** - 选择以下选项之一
    • **JSON** - 从源解析 JSON 内容。
    • **键值对** - 从源解析格式为“a=b”或“c:d”的内容。
    • **自动** - 自动发现字段。
  • **替换所有字段** - (可选)选择此选项以隐藏所有其他字段,并在可视化中仅显示您的计算字段。
  • **保留时间** - (可选)仅在**替换所有字段**为真时可用。在输出中保留时间字段。

考虑以下数据集

数据集示例

时间戳json_data
1636678740000000000{“value”: 1}
1636678680000000000{“value”: 5}
1636678620000000000{“value”: 12}

您可以使用此配置准备数据以供时间序列面板使用

  • 源:json_data
  • 格式:JSON
    • 字段:value
    • 别名:my_value
  • 替换所有字段:true
  • 保留时间:true

这将生成以下输出

转换后的数据

时间戳my_value
16366787400000000001
16366786800000000005
163667862000000000012

此转换允许您以各种方式提取和格式化数据。您可以根据您的特定数据需求自定义提取格式。

从资源查找字段

使用此转换通过从外部源查找其他字段来丰富字段值。

此转换具有以下字段

  • **字段** - 从您的数据集中选择一个文本字段。
  • **查找** - 从**国家/地区**、**美国州**和**机场**中选择。

此转换当前支持空间数据。

例如,如果您有以下数据

数据集示例

位置
AL0
AK10
亚利桑那州5
阿肯色州1
某处5

使用此配置

  • 字段:location
  • 查找:美国州

您将获得以下输出

转换后的数据

位置ID名称经度纬度
ALAL阿拉巴马州-80.89106412.4484570
AKAK阿肯色州-100.89106424.44845710
亚利桑那州5
阿肯色州1
某处5

此转换使您可以通过从外部源获取其他信息来扩展您的数据,从而为分析和可视化提供更全面的数据集。

按查询 refId 过滤数据

使用此转换在具有多个查询的面板中隐藏一个或多个查询。

Grafana 以深灰色文本显示查询标识字母。点击查询标识符以切换过滤。如果查询字母为白色,则显示结果。如果查询字母为深色,则隐藏结果。

**注意:** 此转换不适用于 Graphite,因为此数据源不支持将返回的数据与查询相关联。

在下面的示例中,面板具有三个查询(A、B、C)。我们从可视化中删除了查询 B。

A stat visualization with results from two queries, A and C

按值过滤数据

使用此转换直接在您的可视化中选择性地过滤数据点。此转换提供了选项,可以根据应用于所选字段的一个或多个条件来包含或排除数据。

如果您的数据源不能本地按值过滤,此转换非常有用。如果您使用共享查询,也可以使用此转换来缩小要显示的值范围。

所有字段的可用条件为

  • 正则表达式 - 匹配正则表达式。
  • 为空 - 如果值为 null,则匹配。
  • 不为空 - 如果值不为 null,则匹配。
  • 等于 - 如果值等于指定的值,则匹配。
  • 不同 - 如果值与指定的值不同,则匹配。

字符串字段的可用条件为

  • 包含子字符串 - 如果值包含指定的子字符串(不区分大小写),则匹配。
  • 不包含子字符串 - 如果值不包含指定的子字符串(不区分大小写),则匹配。

数字字段的可用条件为

  • 大于 - 如果值大于指定的值,则匹配。
  • 小于 - 如果值小于指定的值,则匹配。
  • 大于或等于 - 如果值大于或等于,则匹配。
  • 小于或等于 - 如果值小于或等于,则匹配。
  • 范围 - 匹配指定最小值和最大值之间的范围,包括最小值和最大值。

考虑以下数据集

数据集示例

时间温度海拔
2020-07-07 11:34:2332101
2020-07-07 11:34:2228125
2020-07-07 11:34:2126110
2020-07-07 11:34:202398
2020-07-07 10:32:243195
2020-07-07 10:31:222085
2020-07-07 09:30:5719101

如果您包含温度低于 30°C 的数据点,则配置将如下所示

  • 过滤器类型:‘包含’
  • 条件:‘温度’匹配 ‘小于’ ‘30’ 的行

您将获得以下结果,其中仅包含低于 30°C 的温度

转换后的数据

时间温度海拔
2020-07-07 11:34:2228125
2020-07-07 11:34:2126110
2020-07-07 11:34:202398
2020-07-07 10:31:222085
2020-07-07 09:30:5719101

您可以在过滤器中添加多个条件。例如,您可能希望仅在海拔高于 100 时才包含数据。为此,请将该条件添加到以下配置中

  • 过滤器类型:‘包含’ ‘匹配所有’ 条件的行
  • 条件 1:‘温度’ 匹配 ‘小于’ ‘30’ 的行
  • 条件 2:‘海拔’ 匹配 ‘大于’ ‘100’ 的行

当您有多个条件时,您可以选择要将操作(包含/排除)应用于匹配所有条件的行还是匹配任何您添加的条件。

在上面的示例中,我们选择了匹配所有,因为我们希望包含温度低于 30°C 海拔高于 100 的行。如果我们希望包含温度低于 30°C 海拔高于 100 的行,那么我们将选择匹配任何。这将包含原始数据中的第一行,该行的温度为 32°C(不匹配第一个条件),但海拔为 101(匹配第二个条件),因此它被包含在内。

无效或配置不完整的条件将被忽略。

这种多功能的数据过滤转换允许您根据特定条件有选择地包含或排除数据点。自定义标准以根据您的独特分析需求定制数据呈现。

按名称过滤字段

使用此转换有选择地删除查询结果的一部分。有三种方法可以过滤字段名称

使用正则表达式

使用正则表达式过滤时,与正则表达式匹配的字段名称将被包含。

例如,从输入数据

时间dev-eu-westdev-eu-northprod-eu-westprod-eu-north
2023-03-04 23:56:2323.524.522.220.2
2023-03-04 23:56:2323.624.422.120.1

使用正则表达式 ‘prod.*’ 的结果将是

时间prod-eu-westprod-eu-north
2023-03-04 23:56:2322.220.2
2023-03-04 23:56:2322.120.1

正则表达式可以使用 ${variableName} 语法包含插值的仪表板变量。

手动选择包含的字段

单击并取消选中字段名称以将其从结果中删除。与正则表达式匹配的字段仍然包含在内,即使它们被取消选中。

使用仪表板变量

启用 ‘来自变量’ 以允许您选择用于包含字段的仪表板变量。通过设置具有多个选择的 仪表板变量,相同的字段可以在多个可视化中显示。

A table visualization with time, value, Min, and Max columns

这是在应用转换以删除 Min 字段后的表格。

A table visualization with time, value, and Max columns

这是使用 Stat 可视化的相同查询。

A stat visualization with value and Max fields

此转换提供灵活性,可以根据您的特定需求定制查询结果,以关注您有效分析和可视化所需的特定字段。

格式化字符串

使用此转换自定义字符串字段的输出。此转换具有以下字段

  • 大写 - 将整个字符串格式化为大写字符。
  • 小写 - 将整个字符串格式化为小写字符。
  • 句子大小写 - 将字符串的第一个字符格式化为大写。
  • 标题大小写 - 将字符串中每个单词的第一个字符格式化为大写。
  • 帕斯卡大小写 - 将字符串中每个单词的第一个字符格式化为大写,并且不包含单词之间的空格。
  • 驼峰大小写 - 将字符串中每个单词的第一个字符格式化为大写,除了第一个单词,并且不包含单词之间的空格。
  • 蛇形大小写 - 将字符串中的所有字符格式化为小写,并使用下划线代替单词之间的空格。
  • 烤肉串大小写 - 将字符串中的所有字符格式化为小写,并使用连字符代替单词之间的空格。
  • 修剪 - 从字符串中删除所有前导和尾随空格。
  • 子字符串 - 返回字符串的子字符串,使用指定的开始和结束位置。

此转换提供了一种方便的方法来标准化和定制字符串数据的呈现方式,以实现更好的可视化和分析。

格式化时间

使用此转换自定义时间字段的输出。可以使用 Moment.js 格式字符串 格式化输出。例如,如果要仅显示时间字段的年份,则可以使用格式字符串 ‘YYYY’ 来显示公历年份(例如,1999 或 2012)。

转换前

时间戳事件
1636678740000000000系统启动
1636678680000000000用户登录
1636678620000000000数据更新

应用 ‘YYYY-MM-DD HH:mm:ss’ 后

时间戳事件
2021-11-12 14:25:40系统启动
2021-11-12 14:24:40用户登录
2021-11-12 14:23:40数据更新

此转换允许您根据需要定制可视化中的时间表示,为显示时间数据提供灵活性和精度。

注意: 此转换在 Grafana 10.1+ 中作为 alpha 功能提供。

分组

使用此转换按指定字段(列)值对数据进行分组,并在每个组上执行计算。单击以查看计算选项列表。有关可用计算的信息,请参阅 计算类型

以下是一个原始数据的示例。

时间服务器 IDCPU 温度服务器状态
2020-07-07 11:34:20server 180已关闭
2020-07-07 11:34:20server 362正常
2020-07-07 10:32:20server 290过载
2020-07-07 10:31:22server 355正常
2020-07-07 09:30:57server 362重新启动
2020-07-07 09:30:05server 288正常
2020-07-07 09:28:06server 180正常
2020-07-07 09:25:05server 288正常
2020-07-07 09:23:07server 186正常

此转换分两步完成。首先,您指定一个或多个字段以按其对数据进行分组。这将像排序一样将这些字段的所有相同值分组在一起。例如,如果我们按服务器 ID 字段分组,那么它会以这种方式对数据进行分组

时间服务器 IDCPU 温度服务器状态
2020-07-07 11:34:20server 180已关闭
2020-07-07 09:28:06server 180正常
2020-07-07 09:23:07server 186正常
2020-07-07 10:32:20server 290过载
2020-07-07 09:30:05server 288正常
2020-07-07 09:25:05server 288正常
2020-07-07 11:34:20server 362正常
2020-07-07 10:31:22server 355正常
2020-07-07 09:30:57server 362重新启动

所有具有相同服务器 ID 值的行都分组在一起。

选择要按其对数据进行分组的字段后,您可以在其他字段上添加各种计算,并将计算应用于每组行。例如,我们可能希望计算每台服务器的平均 CPU 温度。因此,我们可以添加应用于 CPU 温度字段的平均值计算,以获得以下结果

服务器 IDCPU 温度(平均值)
server 182
server 288.6
server 359.6

我们还可以添加多个计算。例如

  • 对于时间字段,我们可以计算最后一个值,以了解每台服务器的最后数据点接收时间
  • 对于服务器状态字段,我们可以计算最后一个值,以了解每台服务器的最后状态值
  • 对于温度字段,我们还可以计算最后一个值,以了解每台服务器的最新监控温度

然后我们将获得

服务器 IDCPU 温度(平均值)CPU 温度(最后一个)时间(最后一个)服务器状态(最后一个)
server 182802020-07-07 11:34:20已关闭
server 288.6902020-07-07 10:32:20过载
server 359.6622020-07-07 11:34:20正常

此转换允许您从时间序列中提取重要信息并以方便的方式呈现。

分组为矩阵

使用此转换将三个字段(用作查询输出中单元格值字段的输入)组合在一起,并生成一个矩阵。矩阵的计算方法如下

原始数据

服务器 IDCPU 温度服务器状态
server 182正常
server 288.6正常
server 359.6已关闭

我们可以使用‘服务器状态’的值作为列名称、‘服务器 ID’ 的值作为行名称以及‘CPU 温度’作为每个单元格的内容来生成矩阵。每个单元格的内容将显示在现有的列(‘服务器状态’)和行(‘服务器 ID’)组合中。对于其他单元格,您可以选择在NullTrueFalseEmpty 之间显示哪个值。

输出

服务器 ID服务器状态正常已关闭
server 182
server 288.6
server 359.6

使用此转换通过指定查询结果中的字段来构建矩阵。矩阵输出反映了这些字段中唯一值之间的关系。这有助于您以清晰、结构化的矩阵格式呈现复杂的关系。

分组为嵌套表格

使用此转换按指定字段(列)值对数据进行分组,并在每个组上执行计算。将生成共享相同分组字段值的记录,并在嵌套表格中显示。

要计算字段的统计信息,请单击其旁边的选择框并选择计算选项

A select box showing the Group and Calculate options for the transformation.

选择计算后,将在相应字段旁边出现另一个选择框,允许选择统计信息

A select box showing available statistic calculations once the calculate option for the field has been selected.

有关可用计算的信息,请参阅 计算类型

以下是一个原始数据的示例

时间服务器 IDCPU 温度服务器状态
2020-07-07 11:34:20server 180已关闭
2020-07-07 11:34:20server 362正常
2020-07-07 10:32:20server 290过载
2020-07-07 10:31:22server 355正常
2020-07-07 09:30:57server 362重新启动
2020-07-07 09:30:05server 288正常
2020-07-07 09:28:06server 180正常
2020-07-07 09:25:05server 288正常
2020-07-07 09:23:07server 186正常

此转换有两个步骤。首先,指定一个或多个字段以按其对数据进行分组。这将像排序一样将这些字段的所有相同值分组在一起。例如,如果按服务器 ID 字段分组,Grafana 会以这种方式对数据进行分组

服务器 ID
server 1
时间CPU 温度服务器状态
2020-07-07 11:34:2080已关闭
2020-07-07 09:28:0680正常
2020-07-07 09:23:0786正常
server 2
时间CPU 温度服务器状态
2020-07-07 10:32:2090过载
2020-07-07 09:30:0588正常
2020-07-07 09:25:0588正常
server 3
时间CPU 温度服务器状态
2020-07-07 11:34:2062正常
2020-07-07 10:31:2255正常
2020-07-07 09:30:5762重新启动

选择要按其对数据进行分组的字段后,您可以在其他字段上添加各种计算,并将计算应用于每组行。例如,您可能希望计算每台服务器的平均 CPU 温度。为此,请添加应用于 CPU 温度字段的平均值计算,以获得以下结果

服务器 IDCPU 温度(平均值)
server 182
时间服务器状态
2020-07-07 11:34:20已关闭
2020-07-07 09:28:06正常
2020-07-07 09:23:07正常
server 288.6
时间服务器状态
2020-07-07 10:32:20过载
2020-07-07 09:30:05正常
2020-07-07 09:25:05正常
server 359.6
时间服务器状态
2020-07-07 11:34:20正常
2020-07-07 10:31:22正常
2020-07-07 09:30:57重新启动

创建热图

使用此转换准备直方图数据以可视化时间趋势。与热图可视化类似,此转换将直方图指标转换为时间桶。

X 桶

此设置确定如何将 x 轴分成桶。

  • 大小 - 在输入字段中指定时间间隔。例如,‘1h’ 的时间范围会在 x 轴上创建宽度为一小时的单元格。
  • 计数 - 对于与时间无关的序列,使用此选项来定义桶中的元素数量。

Y 桶

此设置确定如何将 y 轴分成桶。

  • 线性
  • 对数 - 在以 2 为底的对数或以 10 为底的对数之间选择。
  • 对称对数 - 使用对称对数刻度。在以 2 为底的对数或以 10 为底的对数之间选择,允许负值。

假设您有以下数据集

时间戳
2023-01-01 12:00:005
2023-01-01 12:15:0010
2023-01-01 12:30:0015
2023-01-01 12:45:008
  • 将 X 桶设置为 ‘大小:15m’ 且 Y 桶为 ‘线性’,则直方图将值组织到 x 轴上的 15 分钟时间间隔和 y 轴上的线性范围内。
  • 对于 X 桶为 ‘计数:2’ 且 Y 桶为 ‘对数(以 10 为底)’,则直方图将值分组到 x 轴上的两个桶中,并在 y 轴上使用对数刻度。

直方图

使用此转换根据输入数据生成直方图,允许您可视化值的分布。

  • 桶大小 - 桶中最低项和最高项之间的范围(xMin 到 xMax)。
  • 桶偏移量 - 非零基桶的偏移量。
  • 合并系列 - 使用所有可用系列创建统一直方图。

原始数据

系列 1

ABC
135
246
357
468
579

系列 2

C
5
6
7
8
9

输出

xMinxMaxABCC
121000
231000
341100
451100
561111
670111
780111
890011
9100011

使用生成的直方图可视化值的分布,从而深入了解数据的分布和密度。

按字段联接

使用此转换将多个结果合并到单个表格中,从而能够合并来自不同查询的数据。

这对于将多个时间序列结果转换为具有共享时间字段的单个宽表特别有用。

内联接(用于时间序列或类似 SQL 的数据)

内联接合并来自多个表的​​数据,其中所有表都从所选字段共享相同的值。此类型的联接排除数据中值不匹配每个结果的情况。

使用此转换将来自多个查询的结果(在传递的联接字段或第一个时间列上合并)组合到一个结果中,并删除无法成功联接的行。这对于大型时间序列数据集未经优化。

在以下示例中,两个查询返回时间序列数据。在应用内联接转换之前,它被可视化为两个单独的表格。

查询 A

时间作业正常运行时间
2020-07-07 11:34:20节点25260122
2020-07-07 11:24:20postgre123001233
2020-07-07 11:14:20postgre345001233

查询 B

时间服务器错误
2020-07-07 11:34:20server 115
2020-07-07 11:24:20server 25
2020-07-07 11:04:20server 310

应用内联接转换后的结果如下所示

时间作业正常运行时间服务器错误
2020-07-07 11:34:20节点25260122server 115
2020-07-07 11:24:20postgre123001233server 25

这对于非时间序列表格数据也以相同的方式工作。

学生

学号名称专业
1约翰计算机科学
2艾米丽数学
3迈克尔物理
4詹妮弗化学

入学

学号课程ID等级
1CS101A
1CS102B
2MATH201A
3PHYS101B
5HIST101B

应用内联接转换后的结果如下所示

学号名称专业课程ID等级
1约翰计算机科学CS101A
1约翰计算机科学CS102B
2艾米丽数学MATH201A
3迈克尔物理PHYS101B

内联接仅包括两个表中“学号”匹配的行。在这种情况下,结果不包括“学生”表中的“詹妮弗”,因为在“入学”表中没有与她匹配的入学记录。

外联接(用于时间序列数据)

外联接包括内联接中的所有数据以及值在每个输入中不匹配的行。虽然内联接在时间字段上联接查询 A 和查询 B,但外联接包括所有在时间字段上不匹配的行。

在以下示例中,两个查询返回表数据。在应用外联接转换之前,它被可视化为两个表格。

查询 A

时间作业正常运行时间
2020-07-07 11:34:20节点25260122
2020-07-07 11:24:20postgre123001233
2020-07-07 11:14:20postgre345001233

查询 B

时间服务器错误
2020-07-07 11:34:20server 115
2020-07-07 11:24:20server 25
2020-07-07 11:04:20server 310

应用外联接转换后的结果如下所示

时间作业正常运行时间服务器错误
2020-07-07 11:04:20server 310
2020-07-07 11:14:20postgre345001233
2020-07-07 11:34:20节点25260122server 115
2020-07-07 11:24:20postgre123001233server 25

在以下示例中,模板查询在表格可视化中显示来自多个服务器的时间序列数据。一次只能查看一个查询的结果。

A table visualization showing results for one server

我应用了转换来使用时间字段联接查询结果。现在我可以计算、合并和组织此新表中的结果。

A table visualization showing results for multiple servers

外联接(用于类似 SQL 的数据)

表格外联接合并表格,以便结果包括来自任一或两个表格的匹配和不匹配的行。

学号名称专业
1约翰计算机科学
2艾米丽数学
3迈克尔物理
4詹妮弗化学

现在可以与

学号课程ID等级
1CS101A
1CS102B
2MATH201A
3PHYS101B
5HIST101B

应用外联接转换后的结果如下所示

学号名称专业课程ID等级
1约翰计算机科学CS101A
1约翰计算机科学CS102B
2艾米丽数学MATH201A
3迈克尔物理PHYS101B
4詹妮弗化学NULLNULL
5NULLNULLHIST101B

通过使用表格联接从各种查询中合并和分析数据,以全面了解您的信息。

按标签联接

使用此转换将多个结果合并到单个表格中。

这对于将多个时间序列结果转换为具有共享标签字段的单个宽表特别有用。

  • 联接 - 在所有时间序列中可用的标签或共有的标签之间选择要联接的标签。
  • - 输出结果的名称。

示例

输入

series1{what=“Temp”, cluster=“A”, job=“J1”}

时间
110
2200

series2{what=“Temp”, cluster=“B”, job=“J1”}

时间
110
2200

series3{what=“Speed”, cluster=“B”, job=“J1”}

时间
2222
2877
配置

value: “what”

输出
集群作业温度速度
AJ110
AJ1200
BJ11022
BJ120077

使用此转换有效地合并和组织时间序列数据,以获得全面的见解。

标签到字段

使用此转换将具有标签或标记的时间序列结果转换为表格,包括结果中每个标签的键和值。将标签显示为列或行值以增强数据可视化。

给定两个时间序列的查询结果

  • 系列 1:标签 Server=Server A,Datacenter=EU
  • 系列 2:标签 Server=Server B,Datacenter=EU

在“列”模式下,结果如下所示

时间服务器数据中心
2020-07-07 11:34:20服务器 A欧盟1
2020-07-07 11:34:20服务器 B欧盟2

在“行”模式下,结果为每个系列都有一个表格,并显示每个标签值,如下所示

标签
服务器服务器 A
数据中心欧盟
标签
服务器服务器 B
数据中心欧盟

值字段名称

如果您选择 Server 作为值字段名称,那么您将为 Server 标签的每个值获得一个字段。

时间数据中心服务器 A服务器 B
2020-07-07 11:34:20欧盟12

合并行为

标签到字段转换器在内部是两个独立的转换。第一个作用于单个系列并将标签提取到字段中。第二个是将所有结果合并到单个表中的合并转换。合并转换尝试在所有匹配的字段上联接。此合并步骤是必需的,不能关闭。

为了说明这一点,这里有一个示例,其中您有两个查询返回没有重叠标签的时间序列。

  • 系列 1:标签 Server=ServerA
  • 系列 2:标签 Datacenter=EU

这将首先导致这两个表格

时间服务器
2020-07-07 11:34:20服务器A10
时间数据中心
2020-07-07 11:34:20欧盟20

合并后

时间服务器数据中心
2020-07-07 11:34:20服务器A10
2020-07-07 11:34:2020欧盟

将您的时间序列数据转换为结构化表格格式,以获得更清晰、更组织的表示。

限制

使用此转换来限制显示的行数,从而提供更集中的数据视图。这在处理大型数据集时尤其有用。

下面是一个示例,说明限制转换对来自数据源的响应的影响

时间指标
2020-07-07 11:34:20温度25
2020-07-07 11:34:20湿度22
2020-07-07 10:32:20湿度29
2020-07-07 10:31:22温度22
2020-07-07 09:30:57湿度33
2020-07-07 09:30:05温度19

以下是添加了值为“3”的限制转换后的结果

时间指标
2020-07-07 11:34:20温度25
2020-07-07 11:34:20湿度22
2020-07-07 10:32:20湿度29

此转换可帮助您调整数据的视觉呈现以专注于最相关的信息。

合并系列/表格

使用此转换将来自多个查询的结果合并到单个结果中,这在使用表格面板可视化时特别有用。此转换将值合并到同一行中,如果共享字段包含相同的数据。

下面是一个示例,说明合并系列/表格转换对返回表数据的两个查询的影响

查询 A

时间作业正常运行时间
2020-07-07 11:34:20节点25260122
2020-07-07 11:24:20postgre123001233

查询 B

时间作业错误
2020-07-07 11:34:20节点15
2020-07-07 11:24:20postgre5

以下是应用合并转换后的结果。

时间作业错误正常运行时间
2020-07-07 11:34:20节点1525260122
2020-07-07 11:24:20postgre5123001233

此转换将查询 A 和查询 B 中的值合并到一个统一的表格中,增强了数据呈现以获得更好的见解。

按名称组织字段

使用此转换可以灵活地重命名、重新排序或隐藏面板中单个查询返回的字段。此转换仅适用于具有单个查询的面板。如果您的面板有多个查询,请考虑使用“外联接”转换或删除额外的查询。

转换字段

Grafana 显示查询返回的字段列表,允许您执行以下操作

  • 更改字段顺序 - 将鼠标悬停在字段上,当光标变成手形时,将字段拖动到新位置。
  • 隐藏或显示字段 - 使用字段名称旁边的眼睛图标切换特定字段的可见性。
  • 重命名字段 - 在“重命名””框中键入新名称以自定义字段名称。

示例

原始查询结果
时间指标
2020-07-07 11:34:20温度25
2020-07-07 11:34:20湿度22
2020-07-07 10:32:20湿度29
应用字段覆盖后
时间传感器读数
2020-07-07 11:34:20温度25
2020-07-07 11:34:20湿度22
2020-07-07 10:32:20湿度29

此转换可让您调整查询结果的显示,确保在 Grafana 中清晰直观地呈现您的数据。

按值分区

使用此转换来简化绘制多个系列的过程,而无需使用具有不同“WHERE”子句的多个查询。

这在处理指标 SQL 表时尤其有用,如下所示

时间地区
2022-10-20 12:00:00美国1520
2022-10-20 12:00:00欧盟2936
2022-10-20 01:00:00美国1327
2022-10-20 01:00:00欧盟912

使用按值分区转换,您可以发出单个查询并根据您选择的 ​​一列或多列(字段)中的唯一值拆分结果。以下示例使用“地区”

“SELECT Time, Region, Value FROM metrics WHERE Time > “2022-10-20””

时间地区
2022-10-20 12:00:00美国1520
2022-10-20 01:00:00美国1327
时间地区
2022-10-20 12:00:00欧盟2936
2022-10-20 01:00:00欧盟912

此转换简化了流程,并增强了在同一时间序列可视化中可视化多个系列的灵活性。

准备时间序列

使用此转换来解决数据源以不兼容于所需可视化的格式返回时间序列数据时的问题。此转换允许您在宽格式和长格式之间转换时间序列数据,从而提供数据帧结构的灵活性。

可用选项

多帧时间序列

使用此选项将时间序列数据帧从宽格式转换为长格式。当您的数据源以需要重新整形以与您的可视化最佳兼容的格式提供时间序列信息时,这特别有用。

示例:从宽格式转换为长格式

时间戳值1值2
2023-01-01 00:00:001020
2023-01-01 01:00:001525

转换为

时间戳变量
2023-01-01 00:00:00值110
2023-01-01 00:00:00值220
2023-01-01 01:00:00值115
2023-01-01 01:00:00值225
宽时间序列

选择此选项将时间序列数据帧从长格式转换为宽格式。如果您的数据源以长格式返回时间序列数据,而您的可视化需要宽格式,则此转换将简化该过程。

示例:从长格式转换为宽格式

时间戳变量
2023-01-01 00:00:00值110
2023-01-01 00:00:00值220
2023-01-01 01:00:00值115
2023-01-01 01:00:00值225

转换为

时间戳值1值2
2023-01-01 00:00:001020
2023-01-01 01:00:001525

注意:此转换在 Grafana 7.5.10+ 和 Grafana 8.0.6+ 中可用。

减少

使用此转换对数据帧中的每个字段应用计算并返回单个值。此转换对于将多个时间序列数据合并为更紧凑、更简洁的格式特别有用。在应用此转换时,时间字段将被删除。

考虑输入

查询 A

时间温度正常运行时间
2020-07-07 11:34:2012.3256122
2020-07-07 11:24:2015.41230233

查询 B

时间AQI错误
2020-07-07 11:34:206.515
2020-07-07 11:24:203.25

减少转换器有两种模式

  • 系列到行 - 为每个字段创建一个行,为每个计算创建一个列。
  • 减少字段 - 保持现有帧结构,但将每个字段折叠成单个值。

例如,如果您使用第一个最后一个计算以及系列到行转换,那么结果将是

字段第一个最后一个
温度12.315.4
正常运行时间2561221230233
AQI6.53.2
错误155

减少字段最后一个计算一起使用,会产生两个帧,每个帧有一行

查询 A

温度正常运行时间
15.41230233

查询 B

AQI错误
3.25

此灵活的转换简化了将来自多个时间序列的数据合并和汇总为更易于管理和组织的格式的过程。

按正则表达式重命名

使用此转换使用正则表达式和替换模式重命名查询结果的某些部分。

您可以指定一个正则表达式,该表达式仅应用于匹配项,以及支持反向引用的替换模式。例如,假设您正在可视化每个主机的 CPU 使用率,并且想要删除域名。您可以将正则表达式设置为“/^([^.]+).*/”,将替换模式设置为“$1”,“web-01.example.com” 将变为“web-01”。

注意:按正则表达式重命名转换在 Grafana v9.0.0 中得到了改进,允许使用“//g” 的全局模式。根据使用的正则表达式匹配,这可能会导致某些转换的行为略有不同。您可以通过将匹配字符串括在正斜杠“(/)”中来保证与以前相同的行为,例如“(.)” 将变为“/(.)/”。

在以下示例中,我们正在从字段名称中删除“A-”前缀。在之前的图像中,您可以看到所有内容都以“A-”为前缀

A time series with full series names

应用转换后,您可以看到我们只保留了字符串的剩余部分。

A time series with shortened series names

这种转换可以让您根据可视化需求定制数据,从而使仪表板更具信息量且更易于使用。

行转字段

使用此转换将行转换为单独的字段。这样做很有用,因为字段可以单独设置样式和配置。它还可以使用其他字段作为动态字段配置的来源,或将它们映射到字段标签。然后,可以使用这些额外的标签来定义生成字段的更好的显示名称。

此转换包含一个字段表,该表列出了配置查询返回的数据中的所有字段。此表让您控制将哪个字段映射到每个配置属性(“用作”选项)。如果返回的数据中有多行,您还可以选择选择哪个值。

此转换需要

  • 一个用作字段名称来源的字段。

    默认情况下,转换使用第一个字符串字段作为来源。您可以通过在要使用的字段的“用作”列中选择“字段名称”来覆盖此默认设置。

  • 一个用作值来源的字段。

    默认情况下,转换使用第一个数字字段作为来源。但您可以通过在要使用的字段的“用作”列中选择“字段值”来覆盖此默认设置。

在可视化以下数据时很有用

  • 仪表
  • 统计
  • 饼图

将额外字段映射到标签

如果一个字段没有映射到配置属性,Grafana 会自动使用它作为输出字段标签的来源-

示例

名称数据中心
服务器A美国100
服务器 B欧盟200

输出

服务器 A(标签:数据中心:美国)服务器 B(标签:数据中心:欧洲)
1020

现在可以使用额外的标签在字段显示名称中提供更完整的字段名称。

如果您想从一个查询中提取配置并将其应用于另一个查询,则应使用来自查询结果的配置转换。

示例

输入

名称最大值
服务器A10100
服务器 B20200
服务器 C30300

输出

服务器 A(配置:最大值=100)服务器 B(配置:最大值=200)服务器 C(配置:最大值=300)
102030

如您所见,源数据中的每一行都成为一个单独的字段。每个字段现在也都有一个最大值配置选项设置。像“最小值”、“最大值”、“单位”和“阈值”这样的选项都是字段配置的一部分,如果像这样设置,将被可视化使用,而不是面板编辑器选项窗格中手动配置的任何选项。

此转换使您可以将行转换为单个字段,简化动态字段配置,并将其他字段映射到标签。

系列转行

使用此转换将来自多个时间序列数据查询的结果合并到一个单个结果中。这在使用表格面板可视化时很有用。

此转换的结果将包含三列:时间、指标和值。添加指标列是为了让您轻松地看到指标来自哪个查询。通过在源查询中定义标签来自定义此值。

在下面的示例中,我们有两个查询返回时间序列数据。在应用转换之前,它被可视化为两个单独的表格。

查询 A

时间温度
2020-07-07 11:34:2025
2020-07-07 10:31:2222
2020-07-07 09:30:0519

查询 B

时间湿度
2020-07-07 11:34:2024
2020-07-07 10:32:2029
2020-07-07 09:30:5733

以下是应用系列转行转换后的结果。

时间指标
2020-07-07 11:34:20温度25
2020-07-07 11:34:20湿度22
2020-07-07 10:32:20湿度29
2020-07-07 10:31:22温度22
2020-07-07 09:30:57湿度33
2020-07-07 09:30:05温度19

此转换简化了来自多个时间序列查询的结果的合并,为以表格格式高效分析和可视化提供了一个简化且统一的数据集。

注意:此转换在 Grafana 7.1+ 中可用。

排序

使用此转换根据指定字段对查询结果中的每个帧进行排序,使您的数据更容易理解和分析。通过配置所需的排序字段,您可以控制数据在表格或可视化中呈现的顺序。

使用“反转”开关以相反顺序对指定字段中的值进行排序。当您想快速在升序和降序之间切换以满足您的分析需求时,此功能特别有用。

例如,在从数据源检索时间序列数据的情况下,可以应用“排序”转换来根据时间戳(按升序或降序排列)排列数据帧,具体取决于分析要求。此功能可确保您能够轻松地浏览和解释时间序列数据,从组织良好且视觉一致的演示中获得宝贵的见解。

空间

使用此转换对查询结果应用空间操作。

  • 操作 - 选择一个操作
    • 准备空间字段 - 根据其他字段的结果设置几何字段。
      • 位置模式 - 选择一个位置模式(这些选项由“计算值”和“转换”模式共享)
        • 自动 - 根据默认字段名称自动识别位置数据。
        • 坐标 - 指定纬度和经度字段。
        • GeoHash - 指定一个 GeoHash 字段。
        • 查找 - 指定 Gazetteer 位置字段。
    • 计算值 - 使用几何来定义一个新字段(标题/距离/面积)。
      • 函数 - 选择一个要应用于几何的数学运算
        • 标题 - 计算两点之间的标题(方向)。
        • 面积 - 计算几何定义的多边形所包围的面积。
        • 距离 - 计算两点之间的距离。
    • 转换 - 对几何应用空间操作。
      • 操作 - 选择一个要应用于几何的操作
        • 作为线 - 使用每行的顶点创建一个单一线要素。
        • 线构建器 - 在两点之间创建一条线。

此转换允许您操纵和分析地理空间数据,实现创建点之间的线、计算空间属性等操作。

时间序列转表格转换

使用此转换将时间序列结果转换为表格,将时间序列数据帧转换为“趋势”字段,然后可以与火花线单元格类型一起使用。如果有多个时间序列查询,每个查询都将生成一个单独的表格数据帧。可以使用连接或合并转换将这些数据帧连接起来,以生成一个包含每行多个火花线的单一表格。

A table panel showing multiple values and their corresponding sparklines.

对于每个生成的“趋势”字段值,可以选择一个计算函数。此值将显示在火花线旁边,并将用于对表格行进行排序。

A select box showing available statistics that can be calculated.

注意:此转换在 Grafana 9.5+ 中作为可选的 beta 功能可用。修改 Grafana 的配置文件以使用它。

转置

使用此转换来旋转数据帧,将行转换为列,将列转换为行。当您想要更改数据的方向以更好地满足您的可视化需求时,此转换特别有用。如果您有多种类型,它将默认设置为字符串类型。

转换前

env一月二月
prod12
dev34

应用转置转换后

字段proddev
一月13
二月24
Before and after transpose transformation

回归分析

使用此转换创建一个包含统计模型预测值的新数据帧。这对于在混乱数据中寻找趋势很有用。它是通过使用线性或多项式回归将数学函数拟合到数据来实现的。然后可以在可视化中使用数据帧来显示趋势线。

有两种不同的模型

  • 线性回归 - 将线性函数拟合到数据。
    A time series visualization with a straight line representing the linear function
  • 多项式回归 - 将多项式函数拟合到数据。
    A time series visualization with a curved line representing the polynomial function

注意:此转换目前处于公开预览阶段。Grafana Labs 提供有限的支持,在功能全面发布之前可能会出现重大更改。在 Grafana 中启用“regressionTransformation”功能切换以使用此功能。请联系 Grafana 支持团队在 Grafana Cloud 中启用此功能。