菜单
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) - 计算移动标准差。
      • 方差(Variance) - 计算移动方差。
    • 行索引 - 插入一个包含行索引的字段。
  • 字段名称 - 选择用于新字段计算的所需字段名称。
  • 计算 - 如果您选择 减少行 模式,则会出现 计算 字段。点击该字段以查看您可以使用以创建新字段的计算选择列表。有关可用计算的信息,请参阅 计算类型
  • 操作 - 如果您选择 二元运算一元运算 模式,则会出现 操作 字段。这些字段允许您对所选字段的单行值应用基本的数学运算。您还可以为二元运算使用数值。
    • 所有数字字段 - 将 二元运算 的左侧设置为对所有数字字段应用计算。
  • 作为百分比 - 如果您选择 行索引 模式,则会出现 作为百分比 开关。此开关允许您将行索引转换为总行数的百分比。
  • 别名 - (可选)输入您新字段的名稱。如果您留空,则字段将根据计算命名。
  • 替换所有字段 - (可选)如果您想隐藏所有其他字段并仅在可视化中显示您的计算字段,请选择此选项。

在下面的示例中,我们将两个字段相加,并将它们命名为总和。

A stat visualization including one field called Sum

连接字段

使用此转换将所有框架的字段组合成一个结果。

例如,如果您有单独的查询获取温度和运行时间数据(查询A)以及空气质量指数和错误信息(查询B),应用连接转换将产生一个包含所有相关信息的综合数据框。

考虑以下内容

查询A

TempUptime
15.41230233

查询B

AQIErrors
3.25

连接字段后,数据框将是

TempUptimeAQIErrors
15.412302333.25

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

从查询结果配置

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

选项

  • 配置查询 - 选择返回您希望用作配置的数据的查询。
  • 应用到 - 选择要应用配置的字段或序列。
  • 应用到选项 - 根据在 应用到 中的选择指定字段类型或使用字段名称正则表达式。

字段映射表

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

示例

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

时间
162617811912710
162617811912930

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

时间
1626178119127100
1626178119129100

输出(与输入[0]相同,但现在对值字段应用了配置)

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

源数据中的每一行都成为单独的字段。每个字段现在都设置了最大配置选项。例如 最小值最大值单位阈值 等选项都是字段配置的一部分。如果已设置,它们将由可视化代替在面板编辑选项面板中手动配置的任何选项使用。

值映射

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

配置查询结果

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

在字段映射中指定

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

Grafana 从您的查询结果构建值映射并将其应用于实际数据查询结果。您应该看到值被映射并按照配置查询结果着色。

转换字段类型

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

此转换有以下选项

  • 字段 - 从可用字段中选择
  • 转换为 - 选择要转换到的 FieldType
    • 数值 - 尝试使值成为数字
    • 字符串 - 将值转换为字符串
    • 时间 - 尝试将值解析为时间
      • 输入将根据 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' 的内容。
    • 自动 - 自动发现字段。
  • 替换所有字段 - (可选)选择此选项以隐藏所有其他字段,并在可视化中仅显示计算字段。
  • 保留时间 - (可选)仅在 替换所有字段 为 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

这是我们在删除最小字段后应用的转换的表格。

A table visualization with time, value, and Max columns

这是使用统计可视化进行的相同查询。

A stat visualization with value and Max fields

此转换提供了定制查询结果以关注特定字段进行有效分析和可视化的灵活性。

格式化字符串

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

  • 大写 - 将整个字符串格式化为大写字母。
  • 小写 - 将整个字符串格式化为小写字母。
  • 句子大小写 - 将字符串的第一个字符格式为大写。
  • 标题大小写 - 将字符串中每个单词的第一个字符格式为大写。
  • Pascal大小写 - 将字符串中每个单词的第一个字符格式为大写,并且单词之间没有空格。
  • 驼峰大小写 - 将字符串中每个单词的第一个字符格式为大写,除了第一个单词,并且单词之间没有空格。
  • 蛇形大小写 - 将字符串中的所有字符格式化为小写,并且使用下划线代替单词之间的空格。
  • 短横线大小写 - 将字符串中的所有字符格式化为小写,并且使用短横线代替单词之间的空格。
  • 删除前导和尾随空格 - 从字符串中删除所有前导和尾随空格。
  • 子字符串 - 返回字符串的子字符串,使用指定的起始和结束位置。

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

格式化时间

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

这个转换分为两个步骤。首先,您指定一个或多个字段,以便按这些字段对数据进行分组。这将将这些字段的相同值分组在一起,就像排序一样。例如,如果我们按服务器ID字段进行分组,那么数据将这样分组

时间服务器 IDCPU 温度服务器状态
2020-07-07 11:34:20服务器 180关闭
2020-07-07 09:28:06服务器 180OK
2020-07-07 09:23:07服务器 186OK
2020-07-07 10:32:20服务器 290过载
2020-07-07 09:30:05服务器 288OK
2020-07-07 09:25:05服务器 288OK
2020-07-07 11:34:20服务器 362OK
2020-07-07 10:31:22服务器 355OK
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:20OK

这个转换允许您从时间序列数据中提取关键信息,并以方便的方式展示。

分组到矩阵

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

原始数据

服务器 IDCPU 温度服务器状态
服务器 182OK
服务器 288.6OK
服务器 359.6关闭

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

输出

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

这个转换有两个步骤。首先,指定一个或多个字段来分组数据。这将将这些字段的相同值分组在一起,就像排序一样。例如,如果您按服务器ID字段分组,Grafana将这样分组数据

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

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

服务器 IDCPU温度(平均值)
服务器 182
时间服务器状态
2020-07-07 11:34:20关闭
2020-07-07 09:28:06OK
2020-07-07 09:23:07OK
服务器 288.6
时间服务器状态
2020-07-07 10:32:20过载
2020-07-07 09:30:05OK
2020-07-07 09:25:05OK
服务器 359.6
时间服务器状态
2020-07-07 11:34:20OK
2020-07-07 10:31:22OK
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-like数据)

内部连接将多个表中共享所选字段相同值的表中的数据合并。此类连接排除了在每个结果中值不匹配的数据。

使用此转换将多个查询的结果(基于传递的连接字段或第一个时间列)合并为一个结果,并删除无法成功连接的行。这不适合大型时间序列数据集。

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

查询A

时间工作Uptime
2020-07-07 11:34:20节点25260122
2020-07-07 11:24:20后置123001233
2020-07-07 11:14:20后置345001233

查询B

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

应用内部连接转换后的结果如下

时间工作Uptime服务器Errors
2020-07-07 11:34:20节点25260122服务器 115
2020-07-07 11:24:20后置123001233服务器 25

这同样适用于非时间序列表格数据。

学生

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

入学情况

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

应用内部连接转换后的结果如下

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

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

外连接(针对时间序列数据)

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

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

查询A

时间工作Uptime
2020-07-07 11:34:20节点25260122
2020-07-07 11:24:20后置123001233
2020-07-07 11:14:20后置345001233

查询B

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

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

时间工作Uptime服务器Errors
2020-07-07 11:04:20服务器 310
2020-07-07 11:14:20后置345001233
2020-07-07 11:34:20节点25260122服务器 115
2020-07-07 11:24:20后置123001233服务器 25

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

A table visualization showing results for one server

我对查询结果应用了转换,使用时间字段进行连接。现在我可以运行计算、组合并组织这个新表中的结果。

A table visualization showing results for multiple servers

外连接(针对类似SQL的数据)

一个表格外连接将表组合在一起,使得结果包括来自任一或两个表中的匹配和不匹配的行。

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

现在可以与

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

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

学生ID名称专业课程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”

输出
clusterjobTempSpeed
AJ110
AJ1200
BJ11022
BJ120077

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

标签到字段

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

给定一个包含两个时序查询结果的结果

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

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

时间服务器Datacenter
2020-07-07 11:34:20Server AEU1
2020-07-07 11:34:20Server BEU2

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

标签
服务器Server A
DatacenterEU
标签
服务器Server B
DatacenterEU

值字段名

如果您选择Server作为值字段名,则每个Server标签的每个值都将有一个字段。

时间DatacenterServer AServer B
2020-07-07 11:34:20EU12

合并行为

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

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

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

这将首先产生以下两个表

时间服务器
2020-07-07 11:34:20ServerA10
时间Datacenter
2020-07-07 11:34:20EU20

合并后

时间服务器Datacenter
2020-07-07 11:34:20ServerA10
2020-07-07 11:34:2020EU

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

限制

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

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

时间指标
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

时间工作Uptime
2020-07-07 11:34:20节点25260122
2020-07-07 11:24:20后置123001233

查询B

时间工作Errors
2020-07-07 11:34:20节点15
2020-07-07 11:24:20后置5

应用合并转换后的结果如下

时间工作ErrorsUptime
2020-07-07 11:34:20节点1525260122
2020-07-07 11:24:20后置5123001233

此转换将查询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:00EU2936
2022-10-20 01:00:00美国1327
2022-10-20 01:00:00EU912

使用 按值分区 转换,您可以发出单个查询,并通过所选的一个或多个列(字段)中的唯一值来分割结果。以下示例使用‘区域’

‘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:00EU2936
2022-10-20 01:00:00EU912

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

准备时间序列

使用此转换来处理数据源返回的时间序列数据格式与所需可视化不兼容的情况。此转换允许您在宽格式和长格式之间转换时间序列数据,提供灵活的数据帧结构。

可用选项

多帧时间序列

使用此选项将时间序列数据帧从宽格式转换为长格式。这对于您的数据源提供的时间序列信息需要重塑以与您的可视化优化兼容的格式特别有用。

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

时间戳Value1Value2
2023-01-01 00:00:001020
2023-01-01 01:00:001525

转换为

时间戳变量
2023-01-01 00:00:00Value110
2023-01-01 00:00:00Value220
2023-01-01 01:00:00Value115
2023-01-01 01:00:00Value225
宽时间序列

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

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

时间戳变量
2023-01-01 00:00:00Value110
2023-01-01 00:00:00Value220
2023-01-01 01:00:00Value115
2023-01-01 01:00:00Value225

转换为

时间戳Value1Value2
2023-01-01 00:00:001020
2023-01-01 01:00:001525

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

减少

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

考虑输入

查询A

时间TempUptime
2020-07-07 11:34:2012.3256122
2020-07-07 11:24:2015.41230233

查询B

时间AQIErrors
2020-07-07 11:34:206.515
2020-07-07 11:24:203.25

减少转换器有两种模式

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

例如,如果您使用 FirstLast 计算与 系列到行 转换,则结果将是

字段FirstLast
Temp12.315.4
Uptime2561221230233
AQI6.53.2
Errors155

使用 减少字段Last 计算的结果,将产生两个帧,每个帧有一行

查询A

TempUptime
15.41230233

查询B

AQIErrors
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
服务器BEU200

输出

服务器A(标签:数据中心:US)服务器B(标签:数据中心:EU)
1020

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

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

示例

输入

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

输出

服务器A(配置:max=100)服务器B(配置:max=200)服务器C(配置:max=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字段。
        • 查找 - 指定地名册位置字段。
    • 计算值 - 使用几何形状来定义一个新字段(航向/距离/面积)。
      • 函数 - 选择应用于几何形状的数学运算
        • 航向 - 计算两点之间的航向(方向)。
        • 面积 - 计算由几何形状定义的多边形所围成的面积。
        • 距离 - 计算两点之间的距离。
    • 转换 - 对几何形状应用空间运算。
      • 操作 - 选择应用于几何形状的操作
        • 作为线 - 创建具有每行一个顶点的单一线特征。
        • 线构建器 - 在两点之间创建线条。

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

时间序列到表格转换

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

A table panel showing multiple values and their corresponding sparklines.

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

A select box showing available statistics that can be calculated.

注意:此转换在Grafana 9.5+中作为可选的测试版功能提供。修改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中启用此功能。