本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
转换函数
本文档主题专为支持 Grafana 10.x 版本 的 Grafana 工作区而设计。
有关支持 Grafana 版本 12.x 的 Grafana 工作空间,请参阅。 在 Grafana 版本 12 中工作
对于支持 Grafana 9.x 版本的 Grafana 工作区,请参阅 使用 Grafana 版本 9 。
对于支持 Grafana 8.x 版本的 Grafana 工作区,请参阅 使用 Grafana 版本 8 。
您可以对数据执行以下转换。
从计算添加字段
使用此转换可以添加一个根据其他两个字段计算得出的新字段。每次转换都允许您添加一个新字段。
字段名称 :选择要在新字段的计算中使用的字段名称。
计算 :如果您选择 减少行 模式,则会出现 计算 字段。选择字段以查看可用于创建新字段的计算选项列表。有关可用计算的信息,请参阅 计算类型 。
运算 :如果选择 二元运算 或 一元运算 模式,则会出现 运算 字段。通过这些字段,您可以对来自两个选定字段的单行中的值进行基本数学运算。也可以使用数值进行二元运算。
百分位数 :如果选择 行索引 模式,则会出现 百分位数 开关。此开关可将行索引转换为占总行数的百分比。
别名 :(可选)输入新字段的名称。如果将此项保留为空,则将对该字段命名以与计算匹配。
替换所有字段 :(可选)如果您想在可视化中隐藏所有其他字段并仅显示经过计算字段,请使用此选项。
注意
累积函数 和 窗口函数 当前为公共预览版。Grafana Labs 提供的支持有限,在该功能正式发布之前可能会发生重大更改。
使用此转换将所有帧中的所有字段合并为一个结果。
例如,如果您有单独的查询来检索温度和正常运行时间数据(查询 A)以及空气质量指数和错误信息(查询 B),则应用连接转换将生成一个合并的数据框,其中包含所有相关信息。
考虑以下两个查询。
查询 A:
正常运行时间1230233
查询 B:
连接字段后,数据帧为:
正常运行时间1230233
这种转换简化了合并不同来源数据的过程,为分析和可视化提供了全面的视图。
来自查询结果的配置
来自查询结果的配置
通过这种转换,您可以选择一个查询,从中提取 最小值 、 最大值 、 单位 和 阈值 等标准选项,并将其应用于其他查询结果。这可以根据特定查询返回的数据实现动态可视化配置。
Options
字段映射表
在配置选项下方,可以找到字段映射表。此表列出了在配置查询返回的数据中找到的所有字段,以及 用作 和 选择 选项。可实现对将字段映射到配置属性的控制,对于多行,允许选择要选择的值。
以下示例显示了输入查询和用作字段配置的查询。
1626178119127
1626178119129
1626178119127
1626178119129
输出查询(与输入相同,但现在的值字段上有配置)
值(配置:Max=100)1626178119127
1626178119129
现在,每个字段还设置了最大配置选项。 最小值 、 最大值 、 单位 和 阈值 等选项是字段配置的一部分。如果进行设置,则可视化将使用这些选项,而不是在面板编辑器选项窗格中手动配置的任何选项。
您还可以将查询结果转换为值映射。使用此选项,配置查询结果中的每一行都定义了一个值映射行。请参阅以下示例。
配置查询结果
green
在字段映射中,指定:
Select值映射/值
值映射/文本
值映射/颜色
Grafana 根据您的查询结果构建值映射,并将其应用于真实的数据查询结果。您应该会看到根据配置查询结果映射和着色的值。
转换字段类型
使用此转换来修改指定字段的字段类型。
此转换具有以下选项:
替换所有字段 :(可选)如果要在可视化中隐藏所有其他字段并仅显示经过计算字段,请选择此选项。
保留时间 :(可选)仅当 替换所有字段 为 true 时才可用。在输出中保留时间字段。
考虑以下数据集:
数据集示例
Timestamp json_data163667874000000000000
{ "value": 1}
163667868000000000000
{ "value": 5}
1636678620000000000
{ "value": 12}
您可以使用以下配置来准备供 时间序列面板 使用的数据:
使用此转换可在包含多个查询的面板中隐藏一个或多个查询。
Grafana 以深灰色文本显示查询标识字母。选择查询标识符来切换筛选。如果查询字母是白色的,则会显示结果。如果查询字母是深色的,则会隐藏结果。
注意
这种转换不适用于 Graphite,因为此数据来源不支持将返回的数据与查询关联。
按值筛选数据
使用此转换可直接在可视化中有选择地筛选数据点。此转换提供了根据应用于选定字段的一个或多个条件来包含或排除数据的选项。
如果您的数据来源未按值进行本机筛选,则此转换非常有用。如果您使用的是共享查询,也可以使用它来缩小要显示的值的范围。
所有字段的可用条件如下:
条件 2:“海拔”与“高于”“100”匹配的行
当您有多个条件时,可以选择是否要将操作 (include/exclude) 应用于 匹配所有 条件的行,还是要将操作应用于与您添加 的任何条件相匹配 的行。
在上面的示例中,我们之所以选择 Match all ,是因为我们希望包括温度低于 30 且 海拔高于 100 的行。如果我们想包括温度低于 30 或 海拔高于 100 的行,则可以选择 Match any 。这包括原始数据中的第一行,该行的温度为 32°C(与第一个条件不匹配),但海拔高度为 101(与第二个条件匹配),因此包括在内。
无效或配置不完整的条件将被忽略。
这种多功能数据筛选转换允许您根据特定条件有选择地包含或排除数据点。自定义标准以定制您的数据呈现方式,从而满足您独特的分析需求。
按名称筛选字段
使用此转换可删除部分查询结果。可通过三种方式筛选字段名称:
使用正则表达式
使用正则表达式进行筛选时,会包含与正则表达式匹配的字段名称。例如,使用正则表达式
'prod.*'
将仅返回以
prod
开头的字段
正则表达式可以包含使用
$
{
variableName}
语法插值的控制面板变量。
手动选择包含的字段
选择或取消选择字段名称以将其从结果中删除。如果还包含正则表达式,则包含与表达式匹配的字段,即使未选中这些字段。
使用控制面板变量
选择 来自变量 以选择用于包含字段的控制面板变量。通过设置具有多个选项的控制面板变量,可以在多个可视化中显示相同的字段。
通过这种转换,您可以灵活地定制查询结果,以便专注于有效分析和可视化所需的特定字段。
格式化字符串
使用此转换来自定义字符串字段的输出。此转换具有以下字段:
Pascal 大小写 :将字符串中每个单词的第一个字符格式化为大写,并且单词之间不包含空格。
Camel 大小写 :将字符串中每个单词的第一个字符(第一个单词除外)格式化为大写,并且单词之间不包含空格。
Snake 大小写 :将字符串中的所有字符格式化为小写,并在单词之间使用下划线而不是空格。
Kebab 大小写 :将字符串中的所有字符格式化为小写,并在单词之间使用短划线而不是空格。
修剪 :删除字符串中的所有前导和尾随空格。
子字符串 :使用指定的开始和结束位置返回字符串的子字符串。
这种转换提供了一种便捷的方式来标准化和定制字符串数据的表示方式,以实现更好的可视化和分析。
注意
此转换目前为公共预览版。Grafana Labs 提供的支持有限,在该功能正式发布之前可能会发生重大更改。
格式化时间
使用此转换来自定义时间字段的输出。可以使用格式
字符串对输出进行Moment.js 格式
应用 “YYYY-MM-DD HH:mm:ss” 后:
Timestamp 2021-11-12 14:25:40 2021-11-12 14:24:40 2021-11-12 14:23:40通过此转换,您可以定制可视化中的时间表示形式,从而在显示时态数据时提供灵活性和精度。
注意
此转换作为 alpha 功能在与 Grafana v10 兼容的工作区中可用。
此转换按指定的字段(列)值对数据进行分组,并处理每个组的计算。选择以查看计算选项的列表。
以下是原始数据的示例:
Server ID CPU 温度 服务器状态7/7/2020 上午 11:34:20
server 1
7/7/2020 上午 11:34:20
server 3
7/7/2020 上午 10:32:20
server 2
7/7/2020 上午 10:31:22
server 3
7/7/2020 上午 9:30:57
server 3
Rebooting
7/7/2020 上午 9:30:05
server 2
7/7/2020 上午 9:28:06
server 1
7/7/2020 上午 9:25:05
server 2
7/7/2020 上午 9:23:07
server 1
该转换分两个步骤。首先,指定一个或多个字段作为数据分组依据。这会将这些字段的所有相同值分组到一起,就像对它们进行排序一样。例如,如果我们按服务器 ID 字段分组,则其将按以下方式对数据分组:
Server ID CPU 温度 服务器状态7/7/2020 上午 11:34:20
server 1
7/7/2020 上午 9:28:06
server 1
7/7/2020 上午 9:23:07
server 1
7/7/2020 上午 10:32:20
server 2
7/7/2020 上午 9:30:05
server 2
7/7/2020 上午 9:25:05
server 2
7/7/2020 上午 11:34:20
server 3
7/7/2020 上午 10:31:22
server 3
7/7/2020 上午 9:30:57
server 3
Rebooting
包含相同服务器 ID 值的所有行将分组在一起。
选择作为数据分组依据的字段后,可以在其他字段上添加各种计算,计算将应用于每组行。例如,您可能想要计算每台服务器的平均 CPU 温度。因此,我们可以将应用于 CPU 温度字段的 平均值 计算相加,得到以下结果:
Server ID CPU 温度(平均值)server 1
server 2
server 3
我们可以添加多个计算。例如:
我们可以使用
Server Status
的值作为列名、
Server ID
值作为行名、
CPU Temperature
作为每个单元格的内容来生成一个矩阵。每个单元格的内容将显示在现有列(
Server Status
)和行组合(
Server ID
)中。对于其余单元格,您可以选择在
Null
、
True
、
False
或
Empty
之间显示哪个值。
使用此转换通过指定查询结果中的字段来构造矩阵。矩阵输出反映了这些字段中唯一值之间的关系。这有助于您以清晰、结构化的矩阵格式呈现复杂的关系。
分组到嵌套表
使用此转换按指定的字段(列)值对数据分组,并处理每个组的计算。生成的记录共享相同的分组字段值,并显示在嵌套表中。
要计算字段的统计数据,请选择字段旁边的框,然后选择 计算 选项。这将添加另一个选择框,其中包含要选择的统计数据。
下表显示了示例数据。
Server ID CPU 温度 服务器状态7/7/2020 上午 11:34:20
server 1
7/7/2020 上午 11:34:20
server 3
7/7/2020 上午 10:32:20
server 2
7/7/2020 上午 10:31:22
server 3
7/7/2020 上午 9:30:57
server 3
Rebooting
7/7/2020 上午 9:30:05
server 2
7/7/2020 上午 9:28:06
server 1
7/7/2020 上午 9:25:05
server 2
7/7/2020 上午 9:23:07
server 1
此转换分两个步骤。首先,指定一个或多个字段,作为数据分组依据。这会将这些字段的所有相同值分组在一起,就像对其进行排序一样。例如,如果您按
Server ID
字段分组,Grafana 会按以下方式对数据分组:
server 1
CPU 温度 服务器状态7/7/2020 上午 11:34:20
7/7/2020 上午 9:28:06
7/7/2020 上午 9:23:07
在 X 桶设置为
Size: 15m
,Y 桶设置为
Linear
的情况下,直方图在 X 轴上以 15 分钟为时间间隔整理值,在 Y 轴上以线性方式整理值。
在 X 桶设置为
Count: 2
,Y 桶设置为
Logarithmic (base 10)
的情况下,直方图在 x 轴上将值分成两组,在 y 轴上使用对数刻度。
使用此转换可根据输入数据生成直方图,从而可视化值的分布。
这对于将多个时间序列结果转换为具有共享时间字段的单个宽表特别有用。
内连接合并多个表中的数据,其中所有表共享选定字段中的相同值。这种类型的连接会排除每个结果中值不匹配的数据。
使用此转换将多个查询结果(通过连接字段或首次列组合)合并为一个结果,并删除无法成功连接的行。
在以下示例中,两个查询返回表数据。在应用内连接转换之前,将其可视化为两个独立的表。
查询 A:
正常运行时间7/7/2020 上午 11:34:20
25260122
7/7/2020 上午 11:24:20
postgre
123001233
7/7/2020 上午 11:14:20
postgre
345001233
查询 B:
7/7/2020 上午 11:34:20
server 1
7/7/2020 上午 11:24:20
server 2
7/7/2020 上午 11:04:20
server 3
应用内连接转换后的结果如下所示:
正常运行时间7/7/2020 上午 11:34:20
25260122
server 1
7/7/2020 上午 11:24:20
postgre
123001233
server 2
外连接包括来自内连接的所有数据,以及在每个输入中值不匹配的行。内连接在时间字段上连接查询 A 和查询 B,而外连接包括所有在时间字段上不匹配的行。
在以下示例中,两个查询返回表数据。在应用外连接转换之前,将其可视化为两个表。
查询 A:
正常运行时间7/7/2020 上午 11:34:20
25260122
7/7/2020 上午 11:24:20
postgre
123001233
7/7/2020 上午 11:14:20
postgre
345001233
查询 B:
7/7/2020 上午 11:34:20
server 1
7/7/2020 上午 11:24:20
server 2
7/7/2020 上午 11:04:20
server 3
应用外连接转换后的结果如下所示:
正常运行时间7/7/2020 上午 11:04:20
server 3
7/7/2020 上午 11:14:20
postgre
345001233
标签到字段转换器在内部是两个独立的转换。第一个作用于单个序列,并将标签提取到字段。第二个是合并转换,将所有结果合并到一个表。合并转换会尝试连接所有匹配字段。此合并步骤是必需的,无法关闭。
为了说明这一点,这里有一个示例,其中有两个查询返回没有重叠标签的时间序列。
使用此转换将多个查询的结果合并为一个结果,这在使用表面板可视化时特别有用。如果共享字段包含相同的数据,转换会将值合并到同一行中。
以下示例说明了 Merge series/tables 转换对两个返回表数据的查询的影响:
查询 A:
正常运行时间7/7/2020 上午 11:34:20
25260122
7/7/2020 上午 11:24:20
postgre
123001233
查询 B:
7/7/2020 上午 11:34:20
7/7/2020 上午 11:24:20
postgre
以下是应用合并转换后的结果:
正常运行时间7/7/2020 上午 11:34:20
25260122
7/7/2020 上午 11:24:20
postgre
123001233
这种转换将查询 A 和查询 B 中的值合并到一个统一的表中,从而增强了显示效果,以获得更好的见解。
按名称整理字段
使用此转换可重命名、重新排序或隐藏面板中单个查询返回的字段。此转换仅适用于具有单个查询的面板。如果您的面板有多个查询,则必须应用 外连接 转换或删除多余的查询。
Grafana 会显示查询返回的字段列表。你可以:
使用此转换可以简化绘制多个序列的过程,而无需使用不同的
WHERE
子句进行多次查询。
注意
此功能可用于兼容 Grafana 9 及更高版本的工作区。
这在使用指标 SQL 表时特别有用,如以下示例所示:
Region10/20/2022 下午 12:00:00
10/20/2022 下午 12:00:00
10/20/2022 凌晨 1:00:00
10/20/2022 凌晨 1:00:00
通过
按值分区
转换器,您可以发出单个查询,并根据您选择的一个或多个列(字段)中的唯一值来拆分结果。下面的示例使用了
Region
。
RegionSELECT Time, Region, Value FROM metrics WHERE Time > '2022-10-20'
10/20/2022 下午 12:00:00
10/20/2022 凌晨 1:00:00
使用此转换,可以使用正则表达式和替换模式来重命名部分查询结果。
您可以指定一个正则表达式,该正则表达式只应用于匹配,同时指定一个支持反向引用的替换模式。例如,假设您在可视化每台主机的 CPU 使用情况,并希望删除域名。您可以将正则表达式设置为
([^\.]+)\..+
,并将替换模式设置为
$1
,
web-01.example.com
将变为
web-01
。
通过这种转换,您可以定制数据以满足可视化需求,从而使您的控制面板信息更丰富且用户友好。
使用此转换将行转换为单独的字段。这非常有用,因为可以单独设置字段的样式和配置。还可以使用附加字段作为动态字段配置的来源,或将其映射到字段标签。然后,可以使用其他标签为生成的字段定义更好的显示名称。
此转换包括一个字段表,该表列出了配置查询返回的数据中的所有字段。通过此表,您可以控制应将哪些字段映射到每个配置属性( 用作 选项)。如果返回的数据中有多行,您还可以选择要选择的值。
这种转换需要:
如您所见,来源数据中的每一行都变成一个单独的字段。现在,每个字段还设置了最大配置选项。 最小值 、 最大值 、 单位 和 阈值 等选项都是字段配置的一部分,如果这样设置,可视化将使用这些选项,而不是在面板编辑器选项窗格中手动配置的任何选项。
这种转换允许将行转换为单个字段,便于动态字段配置,并将其他字段映射到标签。
使用此转换可将多个时间序列数据查询的结果合并为一个结果。这在使用表面板可视化时很有用。
此转换的结果将包含三列:时间、指标和值。添加指标列是为了方便您查看该指标来自哪个查询。通过在来源查询上定义标签来自定义此值。
在下面的示例中,有两个查询返回时间序列数据。在应用转换之前,将其可视化为两个独立的表。
查询 A:
2020-07-07 11:34:20
2020-07-07 10:31:22
2020-07-07 09:30:05
查询 B:
2020-07-07 11:34:20
2020-07-07 10:32:20
2020-07-07 09:30:57
以下是将序列应用于行转换后的结果。
2020-07-07 11:34:20
2020-07-07 11:34:20
2020-07-07 10:32:20
2020-07-07 10:31:22
2020-07-07 09:30:57
2020-07-07 09:30:05
这种转换有助于合并来自多个时间序列查询的结果,提供了一个简化的统一数据集,以便以表格形式进行高效的分析和可视化。
使用此转换可根据指定字段对查询结果中的每个帧进行排序,从而使您的数据更易于理解和分析。通过配置所需的排序字段,您可以控制数据在表或可视化中的显示顺序。
使用 反向 开关对指定字段内的值进行反向排序。当您想要在升序和降序之间快速切换以满足分析需求时,此功能特别有用。
例如,在从数据来源检索时间序列数据的场景中,可以应用 排序依据 转换,以根据时间戳按升序或降序排列数据帧,具体取决于分析要求。此功能可确保您轻松导航和解释时间序列数据,从有序且视觉连贯的演示中获得有价值的见解。
使用此转换将空间运算应用于查询结果。
操作 :选择一个操作:
时间序列到表的转换
使用此转换将时间序列结果转换为表,将时间序列数据帧转换为 趋势 字段。然后可以使用 迷你图单元格类型 呈现 趋势 字段,为每个表格行生成内联迷你图。如果有多个时间序列查询,则每个查询都将生成一个单独的表数据帧。可使用连接或合并转换来连接这些数据,以生成一个每行包含多个迷你图的表。
对于每个生成的 趋势 字段值,可以选择计算函数。默认为 最后一个非 null 值 。此值显示在迷你图旁边,用于对表行进行排序。
使用此转换创建一个新的数据帧,其中包含统计模型预测值。这对于在混乱数据中发现趋势非常有用。其工作原理是使用线性或多项式回归将数学函数拟合到数据。然后,在可视化中使用数据帧来显示趋势线。
有两种不同的模式: