菜单
Grafana Cloud Enterprise Open source

转换数据

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

  • 重命名字段
  • 连接时间序列/类 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] 相同,但现在在“值”字段上配置)

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

源数据中的每一行都变成一个单独的字段。现在每个字段都设置了最大配置选项。诸如 最小值最大值单位阈值 等选项是字段配置的一部分。如果设置了这些选项,则可视化将使用它们,而不是面板编辑器选项窗格中手动配置的任何选项。

值映射

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

配置查询结果

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

在字段映射中指定

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

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

注意: 当您将此转换用于阈值时,可视化将继续使用面板的基本阈值。

转换字段类型

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

此转换具有以下选项

  • 字段 - 从可用字段中选择
  • - 选择要转换成的字段类型
    • 数值 - 尝试将值设为数字
    • 字符串 - 将值设为字符串
    • 时间 - 尝试将值解析为时间
      • 输入将根据 Moment.js 解析格式 进行解析
      • 它会将数值输入解析为毫秒级的 Unix 纪元时间戳。如果输入以秒为单位,则必须将输入乘以 1000。
      • 将显示一个选项,用于通过类似于 yyyy-mm-dd 或 DD MM YYYY hh:mm:ss 的字符串指定 DateFormat 作为输入
    • 布尔值 - 将值设为布尔值
    • 枚举 - 将值设为枚举
      • 将显示一个表格来管理枚举
    • 其他 - 尝试将值解析为 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”的内容。
    • RegExp - 使用正则表达式和命名捕获组(例如 /(?<NewField>.*)/)解析内容。
      Example of a regular expression
    • 自动 - 自动发现字段。
  • 替换所有字段 - (可选)选择此选项可隐藏所有其他字段并在可视化中仅显示计算字段。
  • 保留时间 - (可选)仅当 替换所有字段 为 true 时可用。在输出中保留时间字段。

考虑以下数据集

数据集示例

时间戳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

使用此配置

  • 字段:位置
  • 查找:美国州

您将获得以下输出

转换后的数据

位置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

按值过滤数据

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

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

所有字段的可用条件为

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

字符串字段的可用条件为

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

数字字段的可用条件为

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

考虑以下数据集

数据集示例

时间温度海拔
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

此转换提供了灵活性,可以调整您的查询结果,以专注于有效分析和可视化所需的特定字段。

格式化字符串

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

  • 大写 - 将整个字符串格式化为大写字符。
  • 小写 - 将整个字符串格式化为小写字符。
  • 句首字母大写 - 将字符串的第一个字符格式化为大写。
  • 标题首字母大写 - 将字符串中每个单词的第一个字符格式化为大写。
  • Pascal 大小写 - 将字符串中每个单词的第一个字符格式化为大写,并且单词之间不包含空格。
  • Camel 大小写 - 将字符串中每个单词的第一个字符格式化为大写,但第一个单词除外,并且单词之间不包含空格。
  • Snake 大小写 - 将字符串中的所有字符格式化为小写,并使用下划线代替单词之间的空格。
  • Kebab 大小写 - 将字符串中的所有字符格式化为小写,并使用破折号代替单词之间的空格。
  • Trim - 删除字符串中所有前导和尾随空格。
  • 子字符串 - 返回字符串的子字符串,使用指定的起始和结束位置。

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

格式化时间

使用此转换来自定义时间字段的输出。可以使用 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:20服务器 180关机
2020-07-07 11:34:20服务器 362正常
2020-07-07 10:32:20服务器 290过载
2020-07-07 10:31:22服务器 355正常
2020-07-07 09:30:57服务器 362正在重启
2020-07-07 09:30:05服务器 288正常
2020-07-07 09:28:06服务器 180正常
2020-07-07 09:25:05服务器 288正常
2020-07-07 09:23:07服务器 186正常

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

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

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

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

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

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

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

然后我们将得到

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

此转换允许您从时间序列中提取基本信息,并方便地呈现它。

分组到矩阵

使用此转换来组合三个字段——用作查询输出中的单元格值字段的输入——并生成矩阵。矩阵计算如下

原始数据

服务器 IDCPU 温度服务器状态
服务器 182正常
服务器 288.6正常
服务器 359.6关机

我们可以使用“服务器状态”的值作为列名,“服务器 ID”的值作为行名,以及“CPU 温度”作为每个单元格的内容来生成矩阵。每个单元格的内容将出现在现有列(“服务器状态”)和行组合(“服务器 ID”)中。对于其余单元格,您可以选择要显示的 value:NullTrueFalseEmpty

输出

服务器 ID服务器状态正常关机
服务器 182
服务器 288.6
服务器 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:20服务器 180关机
2020-07-07 11:34:20服务器 362正常
2020-07-07 10:32:20服务器 290过载
2020-07-07 10:31:22服务器 355正常
2020-07-07 09:30:57服务器 362正在重启
2020-07-07 09:30:05服务器 288正常
2020-07-07 09:28:06服务器 180正常
2020-07-07 09:25:05服务器 288正常
2020-07-07 09:23:07服务器 186正常

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

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

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

服务器 IDCPU 温度(平均值)
服务器 182
时间服务器状态
2020-07-07 11:34:20关机
2020-07-07 09:28:06正常
2020-07-07 09:23:07正常
服务器 288.6
时间服务器状态
2020-07-07 10:32:20过载
2020-07-07 09:30:05正常
2020-07-07 09:25:05正常
服务器 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 为底的对数之间选择。
  • Symlog - 使用对称对数刻度。在以 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 轴分桶设置为 ‘大小:15 分钟’ 且 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:20PostgreSQL123001233
2020-07-07 11:14:20PostgreSQL345001233

查询 B

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

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

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

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

学生

学生 ID名称专业
1John计算机科学
2Emily数学
3Michael物理
4Jennifer化学

注册

学生 ID课程 ID成绩
1CS101A
1CS102B
2MATH201A
3PHYS101B
5HIST101B

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

学生 ID名称专业课程 ID成绩
1John计算机科学CS101A
1John计算机科学CS102B
2Emily数学MATH201A
3Michael物理PHYS101B

内联接仅包含两个表中的 “学生 ID” 之间存在匹配的行。在本例中,结果不包括 “学生” 表中的 “Jennifer”,因为 “注册” 表中没有她的匹配注册信息。

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

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

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

查询 A

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

查询 B

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

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

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

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

A table visualization showing results for one server

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

A table visualization showing results for multiple servers

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

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

学生 ID名称专业
1John计算机科学
2Emily数学
3Michael物理
4Jennifer化学

现在可以与以下项联接

学生 ID课程 ID成绩
1CS101A
1CS102B
2MATH201A
3PHYS101B
5HIST101B

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

学生 ID名称专业课程 ID成绩
1John计算机科学CS101A
1John计算机科学CS102B
2Emily数学MATH201A
3Michael物理PHYS101B
4Jennifer化学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
配置

值:“what”

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

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

标签到字段

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

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

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

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

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

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

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

值字段名称

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

时间数据中心Server AServer B
2020-07-07 11:34:20欧盟12

合并行为

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

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

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

这将首先导致这两个表

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

合并后

时间服务器数据中心
2020-07-07 11:34:20ServerA10
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

使用负数,您可以保留集合末尾的值。这是在添加值为 ‘-3’ 的限制转换后的结果

时间指标
2020-07-07 10:31:22温度22
2020-07-07 09:30:57湿度33
2020-07-07 09:30:05温度19

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

合并序列/表格

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

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

查询 A

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

查询 B

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

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

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

此转换将来自查询 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

减少

使用此转换对数据帧中的每个字段应用计算并返回单个值。此转换对于将多个时间序列数据整合为更紧凑的摘要格式尤其有用。应用此转换时,将删除时间字段。

考虑输入

查询 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 将自动将其用作输出字段上标签的来源 -

示例

名称数据中心
ServerA美国100
ServerB欧盟200

输出

ServerA(标签:数据中心:美国)ServerB(标签:数据中心:欧盟)
1020

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

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

示例

输入

名称最大值
ServerA10100
ServerB20200
ServerC30300

输出

ServerA(配置:最大值=100)ServerB(配置:最大值=200)ServerC(配置:最大值=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

此转换有助于整合来自多个时间序列查询的结果,从而提供简化的统一数据集,以便在表格格式中进行高效的分析和可视化。

排序依据

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

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

例如,在从数据源检索时间序列数据的场景中,可以应用排序依据转换来根据时间戳按升序或降序排列数据帧,具体取决于分析需求。此功能确保您可以轻松导航和解释时间序列数据,从有组织且视觉连贯的呈现中获得宝贵的见解。

空间

使用此转换将空间运算应用于查询结果。

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

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

时间序列到表格转换

使用此转换将时间序列结果转换为表格,将时间序列数据帧转换为 趋势 字段,然后可以将其与 迷你图单元格类型 一起使用。如果有多个时间序列查询,则每个查询将生成一个单独的表格数据帧。这些可以使用连接或合并转换进行连接,以生成每行具有多个迷你图的单个表格。

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 配置文件 以使用它。

转置

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

转换前

环境一月二月
生产12
开发34

应用转置转换后

字段生产开发
一月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 中启用此功能。