

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 转换函数
<a name="v10-panels-xform-functions"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 8](using-grafana-v8.md)。

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

## 从计算添加字段
<a name="v10-panels-xform-funcs-add"></a>

使用此转换可以添加一个根据其他两个字段计算得出的新字段。每次转换都允许您添加一个新字段。
+ **模式**：选择一种模式：
  + **减少行**：对选定字段的每一行分别应用所选计算。
  + **二元选项**：对两个选定字段的单行中的值应用基本的二元运算（求和、乘法等）。
  + **一元运算**：对选定字段的单行中的值应用基本的一元运算。可用运算包括：
    + **绝对值（abs）**：返回给定表达式的绝对值。以正数表示与零的距离。
    + **自然指数（exp）**：返回 *e* 的给定表达式的幂次。
    + **自然对数（ln）**：返回给定表达式的自然对数。
    + **下限（floor）**：返回小于或等于给定表达式的最大整数。
    + **上限（ceil）**：返回大于或等于给定表达式的最小整数。
  + **累积函数**：对当前行和前面所有行应用函数。
    + **总计**：计算不超过当前行的累积总数。
    + **平均值**：计算截至当前行（包括当前行）的平均值。
  + **窗口函数**：应用窗口函数。窗口可以*尾随*，也可以*居中*。对于尾随窗口，当前行将是窗口中的最后一行。对于居中窗口，窗口将在当前行居中。对于偶数窗口大小，窗口将在当前行和上一行之间居中。
    + **平均值**：计算移动平均数或移动平均值。
    + ****：计算移动标准差。
    + **方差**：计算移动方差。
  + **行索引**：插入带有行索引的字段。
+ **字段名称**：选择要在新字段的计算中使用的字段名称。
+ **计算**：如果您选择**减少行**模式，则会出现**计算**字段。选择字段以查看可用于创建新字段的计算选项列表。有关可用计算的信息，请参阅[计算类型](v10-panels-calculation-types.md)。
+ **运算**：如果选择**二元运算**或**一元运算**模式，则会出现**运算**字段。通过这些字段，您可以对来自两个选定字段的单行中的值进行基本数学运算。也可以使用数值进行二元运算。
+ **百分位数**：如果选择**行索引**模式，则会出现**百分位数**开关。此开关可将行索引转换为占总行数的百分比。
+ **别名**：（可选）输入新字段的名称。如果将此项保留为空，则将对该字段命名以与计算匹配。
+ **替换所有字段**：（可选）如果您想在可视化中隐藏所有其他字段并仅显示经过计算字段，请使用此选项。

**注意**  
**累积函数**和**窗口函数**当前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

## 连接字段
<a name="v10-panels-xform-funcs-concat"></a>

**连接字段**

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

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

考虑以下两个查询。

*查询 A：*


| 临时文件 | 正常运行时间 | 
| --- | --- | 
| 15.4 | 1230233 | 

*查询 B：*


| AQI | 错误 | 
| --- | --- | 
| 3.2 | 5 | 

连接字段后，数据帧为：


| 临时文件 | 正常运行时间 | AQI | 错误 | 
| --- | --- | --- | --- | 
| 15.4 | 1230233 | 3.2 | 5 | 

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

## 来自查询结果的配置
<a name="v10-panels-xform-funcs-config"></a>

**来自查询结果的配置**

通过这种转换，您可以选择一个查询，从中提取**最小值**、**最大值**、**单位**和**阈值**等标准选项，并将其应用于其他查询结果。这可以根据特定查询返回的数据实现动态可视化配置。

**Options**
+ **配置查询**：选择返回要用作配置的数据的查询。
+ **应用于**：选择要对哪些字段或序列应用配置。
+ **应用于选项**：指定字段类型或使用字段名称正则表达式，具体取决于您在**应用于**中选择的选项。

**字段映射表**

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

以下示例显示了输入查询和用作字段配置的查询。

*输入查询*


| 时间 | 值 | 
| --- | --- | 
| 1626178119127 | 10 | 
| 1626178119129 | 30 | 

*配置查询*


| 时间 | 值 | 
| --- | --- | 
| 1626178119127 | 100 | 
| 1626178119129 | 100 | 

*输出查询（与输入相同，但现在的值字段上有配置）*


| 时间 | 值（配置：Max=100） | 
| --- | --- | 
| 1626178119127 | 10 | 
| 1626178119129 | 30 | 

现在，每个字段还设置了最大配置选项。**最小值**、**最大值**、**单位**和**阈值**等选项是字段配置的一部分。如果进行设置，则可视化将使用这些选项，而不是在面板编辑器选项窗格中手动配置的任何选项。

**值映射**

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

*配置查询结果*


| 值 | 文本 | 颜色 | 
| --- | --- | --- | 
| L | 低 | blue | 
| M | 中 | green | 
| H | 高 | red | 

*在字段映射中，指定：*


| 字段 | 用作 | Select | 
| --- | --- | --- | 
| 值 | 值映射/值 | 所有值 | 
| 文本 | 值映射/文本 | 所有值 | 
| 颜色 | 值映射/颜色 | 所有值 | 

Grafana 根据您的查询结果构建值映射，并将其应用于真实的数据查询结果。您应该会看到根据配置查询结果映射和着色的值。

## 转换字段类型
<a name="v10-panels-xform-funcs-convert"></a>

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

此转换具有以下选项：
+ **字段**：从可用字段中选择。
+ **as** — 选择 FieldType 要转换为的。
  + **数字**：尝试将值变为数字。
  + **字符串**：将值设为字符串。
  + **时间**：尝试将值解析为时间。
    + 将显示一个选项，用于通过字符串将 a 指定 DateFormat 为输入，例如`yyyy-mm-dd`或`DD MM YYYY hh:mm:ss`。
  + **布尔值**：将值变为布尔值。
  + **枚举**：将值变为枚举。
    + 将显示一个表来管理枚举。
  + **其他**：尝试将值解析为 json。

例如，下面的查询可通过选择时间字段 **Time** 和日期格式 `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 | 

这种转换让您可以灵活地调整数据类型，确保可视化效果的兼容性和一致性。

## 提取字段
<a name="v10-panels-xform-funcs-extract"></a>

使用此转换选择数据来源，从中提取不同格式的内容。此转换具有以下字段：
+ **来源**：选择数据来源的字段。
+ **格式**：选择以下选项之一：
  + **JSON**：从来源解析 JSON 内容。
  + **键\$1值对**：从来源解析 `a=b` 或 `c:d` 格式的内容。
  + **自动**：自动发现字段。
+ **替换所有字段**：（可选）如果要在可视化中隐藏所有其他字段并仅显示经过计算字段，请选择此选项。
+ **保留时间**：（可选）仅当**替换所有字段**为 true 时才可用。在输出中保留时间字段。

考虑以下数据集：

**数据集示例**


| Timestamp | json\$1data | 
| --- | --- | 
| 163667874000000000000 | \$1"value": 1\$1 | 
| 163667868000000000000 | \$1"value": 5\$1 | 
| 1636678620000000000 | \$1"value": 12\$1 | 

您可以使用以下配置来准备供[时间序列面板](v10-panels-time-series.md)使用的数据：
+ 来源：json\$1data
+ 格式：JSON
  + 字段：value
  + 别名：my\$1value
+ 替换所有字段：true
+ 保留时间：true

这将生成以下输出：

**转换后的数据**


| Timestamp | my\$1value | 
| --- | --- | 
| 163667874000000000000 | 1 | 
| 163667868000000000000 | 5 | 
| 1636678620000000000 | 12 | 

通过这种转换，您可以通过各种方式提取和格式化数据。您可以根据特定的数据需求自定义提取格式。

## 从资源中查找字段
<a name="v10-panels-xform-funcs-lookup"></a>

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

此转换具有以下字段：
+ **字段**：从数据集中选择一个文本字段。
+ **查找**：从**国家**、**美国各州**和**机场**中选择。

**注意**  
此转换仅支持空间数据。

例如，如果您拥有以下数据：

**数据集示例**


| 位置 | 值 | 
| --- | --- | 
| AL | 0 | 
| AK | 10 | 
| 亚利桑那州 | 5 | 
| 阿肯色州 | 1 | 
| 某个地方 | 5 | 

使用此配置：
+ 字段：位置
+ 查找：美国各州

您将得到以下输出：

**转换后的数据**


| 位置 | ID | Name | Lng | Lat | 值 | 
| --- | --- | --- | --- | --- | --- | 
| AL | AL | Alabama | -80.891064 | 12.448457 | 0 | 
| AK | AK | 阿肯色州 | -100.891064 | 24.448457 | 10 | 
| 亚利桑那州 |  |  |  |  | 5 | 
| 阿肯色州 |  |  |  |  | 1 | 
| 某个地方 |  |  |  |  | 5 | 

这种转换允许您通过从外部来源获取更多信息来扩充数据，提供更全面的数据集进行分析和可视化。

## 按查询 refId 筛选数据
<a name="v10-panels-xform-funcs-queryrefid"></a>

使用此转换可在包含多个查询的面板中隐藏一个或多个查询。

Grafana 以深灰色文本显示查询标识字母。选择查询标识符来切换筛选。如果查询字母是白色的，则会显示结果。如果查询字母是深色的，则会隐藏结果。

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

## 按值筛选数据
<a name="v10-panels-xform-funcs-values"></a>

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

如果您的数据来源未按值进行本机筛选，则此转换非常有用。如果您使用的是共享查询，也可以使用它来缩小要显示的值的范围。

所有字段的可用条件如下：
+ **正则表达式**：匹配正则表达式。
+ **为 Null 值**：如果值为 null 值，则匹配。
+ **为非 Null 值**：如果值为非 null 值，则匹配。
+ **等于**：如果值等于指定值，则匹配。
+ **不同**：如果值与指定值不同，则匹配。

数值字段的其他可用条件如下：
+ **大于**：如果值大于指定值，则匹配。
+ **小于**：如果值小于指定值，则匹配。
+ **大于或等于**：如果值大于或等于指定值，则匹配。
+ **小于或等于**：如果值小于或等于指定值，则匹配。
+ **范围**：匹配指定的最小值和最大值之间的范围，包括最小值和最大值。

考虑以下数据集：


| 时间 | 温度 | 海拔 | 
| --- | --- | --- | 
| 2020-07-07 11:34:23 | 32 | 101 | 
| 2020-07-07 11:34:22 | 28 | 125 | 
| 2020-07-07 11:34:21 | 26 | 110 | 
| 2020-07-07 11:34:20 | 23 | 98 | 
| 2020-07-07 10:32:24 | 31 | 95 | 
| 2020-07-07 10:31:22 | 20 | 85 | 
| 2020-07-07 09:30:57 | 19 | 101 | 

如果**包括**温度低于 30°C 的数据点，配置将如下所示：
+ 筛选器类型：“包含”
+ 条件：“温度”与“低于”“30”匹配的行

您将得到以下结果，其中仅包括低于 30°C 的温度：

**转换后的数据**


| 时间 | 温度 | 海拔 | 
| --- | --- | --- | 
| 2020-07-07 11:34:22 | 28 | 125 | 
| 2020-07-07 11:34:21 | 26 | 110 | 
| 2020-07-07 11:34:20 | 23 | 98 | 
| 2020-07-07 10:31:22 | 20 | 85 | 
| 2020-07-07 09:30:57 | 19 | 101 | 

您可以向筛选器添加多个条件。例如，您可能希望仅在海拔大于 100 时才包含数据。为此，请将该条件添加到以下配置：
+ 筛选器类型：“包含”符合“全部匹配”条件的行
+ 条件 1：“温度”与“低于”“30”匹配的行
+ 条件 2：“海拔”与“高于”“100”匹配的行

当您有多个条件时，您可以选择是希望将操作（包括/排除）应用于您添加的 **Match all** 条件的行，还是 **Match any** 条件的行。

在上面的示例中，我们之所以选择 **Match all**，是因为我们希望包括温度低于 30 *且*海拔高于 100 的行。如果我们想包括温度低于 30 *或*海拔高于 100 的行，则可以选择 **Match any**。这包括原始数据中的第一行，该行的温度为 32°C（与第一个条件不匹配），但海拔高度为 101（与第二个条件匹配），因此包括在内。

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

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

## 按名称筛选字段
<a name="v10-panels-xform-funcs-name"></a>

使用此转换可删除部分查询结果。可通过三种方式筛选字段名称：
+ 输入正则表达式。
+ 手动选择包含的字段。
+ 使用控制面板变量。

*使用正则表达式*

使用正则表达式进行筛选时，会包含与正则表达式匹配的字段名称。例如，使用正则表达式 `'prod.*'` 将仅返回以 `prod` 开头的字段

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

*手动选择包含的字段*

选择或取消选择字段名称以将其从结果中删除。如果还包含正则表达式，则包含与表达式匹配的字段，即使未选中这些字段。

*使用控制面板变量*

选择**来自变量**以选择用于包含字段的控制面板变量。通过设置具有多个选项的控制面板变量，可以在多个可视化中显示相同的字段。

通过这种转换，您可以灵活地定制查询结果，以便专注于有效分析和可视化所需的特定字段。

## 格式化字符串
<a name="v10-panels-xform-funcs-string"></a>

使用此转换来自定义字符串字段的输出。此转换具有以下字段：
+ **大写**：将整个字符串格式化为大写字符。
+ **小写**：将整个字符串格式化为小写字符。
+ **句子大小写**：将字符串的第一个字符格式化为大写。
+ **标题大小写**：将字符串中每个单词的第一个字符格式化为大写。
+ **Pascal 大小写**：将字符串中每个单词的第一个字符格式化为大写，并且单词之间不包含空格。
+ **Camel 大小写**：将字符串中每个单词的第一个字符（第一个单词除外）格式化为大写，并且单词之间不包含空格。
+ **Snake 大小写**：将字符串中的所有字符格式化为小写，并在单词之间使用下划线而不是空格。
+ **Kebab 大小写**：将字符串中的所有字符格式化为小写，并在单词之间使用短划线而不是空格。
+ **修剪**：删除字符串中的所有前导和尾随空格。
+ **子字符串**：使用指定的开始和结束位置返回字符串的子字符串。

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

**注意**  
此转换目前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

## 格式化时间
<a name="v10-panels-xform-funcs-time"></a>

使用此转换来自定义时间字段的输出。可以使用 [Moment.js 格式字符串](https://momentjs.com/docs/#/displaying/)来格式化输出。例如，如果您只想显示时间字段的年份，则可以使用格式字符串“YYYY”来显示日历年份（例如，1999 年或 2012 年）。

**转换前：**


| Timestamp | 事件 | 
| --- | --- | 
| 163667874000000000000 | 系统启动 | 
| 163667868000000000000 | 用户登录 | 
| 1636678620000000000 | 数据更新 | 

**涂上 “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 兼容的工作区中可用。

## 分组依据
<a name="v10-panels-xform-funcs-group"></a>

此转换按指定的字段（列）值对数据进行分组，并处理每个组的计算。选择以查看计算选项的列表。

以下是原始数据的示例：


| 时间 | Server ID | CPU 温度 | 服务器状态 | 
| --- | --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | server 1 | 80 | 关闭 | 
| 7/7/2020 上午 11:34:20 | server 3 | 62 | OK | 
| 7/7/2020 上午 10:32:20 | server 2 | 90 | 过载 | 
| 7/7/2020 上午 10:31:22 | server 3 | 55 | 正常 | 
| 7/7/2020 上午 9:30:57 | server 3 | 62 | Rebooting | 
| 7/7/2020 上午 9:30:05 | server 2 | 88 | OK | 
| 7/7/2020 上午 9:28:06 | server 1 | 80 | OK | 
| 7/7/2020 上午 9:25:05 | server 2 | 88 | OK | 
| 7/7/2020 上午 9:23:07 | server 1 | 86 | OK | 

该转换分两个步骤。首先，指定一个或多个字段作为数据分组依据。这会将这些字段的所有相同值分组到一起，就像对它们进行排序一样。例如，如果我们按服务器 ID 字段分组，则其将按以下方式对数据分组：


| 时间 | Server ID | CPU 温度 | 服务器状态 | 
| --- | --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | server 1 | 80 | 关闭 | 
| 7/7/2020 上午 9:28:06 | server 1 | 80 | OK | 
| 7/7/2020 上午 9:23:07 | server 1 | 86 | OK | 
| 7/7/2020 上午 10:32:20 | server 2 | 90 | 过载 | 
| 7/7/2020 上午 9:30:05 | server 2 | 88 | OK | 
| 7/7/2020 上午 9:25:05 | server 2 | 88 | OK | 
| 7/7/2020 上午 11:34:20 | server 3 | 62 | OK | 
| 7/7/2020 上午 10:31:22 | server 3 | 55 | 正常 | 
| 7/7/2020 上午 9:30:57 | server 3 | 62 | Rebooting | 

包含相同服务器 ID 值的所有行将分组在一起。

选择作为数据分组依据的字段后，可以在其他字段上添加各种计算，计算将应用于每组行。例如，您可能想要计算每台服务器的平均 CPU 温度。因此，我们可以将应用于 CPU 温度字段的*平均值*计算相加，得到以下结果：


| Server ID | CPU 温度（平均值） | 
| --- | --- | 
| server 1 | 82 | 
| server 2 | 88.6 | 
| server 3 | 59.6 | 

我们可以添加多个计算。例如：
+ 对于“时间”字段，我们可以计算*上个*值，以了解每台服务器上一个数据点的接收时间
+ 对于“服务器状态”字段，我们可以计算*上个*值，以了解每台服务器上一次的状态值。
+ 对于“温度”字段，我们可以计算*上个*值，以了解每台服务器的最新监控温度。

然后我们会得到：


| Server ID | CPU 温度（平均值） | CPU 温度（上个值） | 时间（上个值） | 服务器状态（上个值） | 
| --- | --- | --- | --- | --- | 
| server 1 | 82 | 80 | 7/7/2020 上午 11:34:20 | 关闭 | 
| server 2 | 88.6 | 90 | 7/7/2020 上午 10:32:20 | 过载 | 
| server 3 | 59.6 | 62 | 7/7/2020 上午 11:34:20 | OK | 

此转换使您能够从时间序列中提取关键信息，并以便捷的方式显示这些信息。

## 分组到矩阵
<a name="v10-panels-xform-funcs-groupmatrix"></a>

使用此转换来组合三个字段（用作查询输出中的**列**、**行**和**单元格值**字段的输入）并生成矩阵。矩阵的计算方式如下：

**原始数据**


| Server ID | CPU 温度 | 服务器状态 | 
| --- | --- | --- | 
| server 1 | 82 | OK | 
| server 2 | 88.6 | OK | 
| server 3 | 59.6 | 关闭 | 

我们可以使用 `Server Status` 的值作为列名、`Server ID` 值作为行名、`CPU Temperature` 作为每个单元格的内容来生成一个矩阵。每个单元格的内容将显示在现有列（`Server Status`）和行组合（`Server ID`）中。对于其余单元格，您可以选择在 **Null**、**True**、**False** 或 **Empty** 之间显示哪个值。

**输出**


| 服务器 IDServer 状态 | OK | 关闭 | 
| --- | --- | --- | 
| server 1 | 82 |  | 
| server 2 | 88.6 |  | 
| server 3 |  | 59.6 | 

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

## 分组到嵌套表
<a name="v10-panels-xform-funcs-grouptable"></a>

使用此转换按指定的字段（列）值对数据分组，并处理每个组的计算。生成的记录共享相同的分组字段值，并显示在嵌套表中。

要计算字段的统计数据，请选择字段旁边的框，然后选择**计算**选项。这将添加另一个选择框，其中包含要选择的统计数据。

下表显示了示例数据。


| 时间 | Server ID | CPU 温度 | 服务器状态 | 
| --- | --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | server 1 | 80 | 关闭 | 
| 7/7/2020 上午 11:34:20 | server 3 | 62 | OK | 
| 7/7/2020 上午 10:32:20 | server 2 | 90 | 过载 | 
| 7/7/2020 上午 10:31:22 | server 3 | 55 | 正常 | 
| 7/7/2020 上午 9:30:57 | server 3 | 62 | Rebooting | 
| 7/7/2020 上午 9:30:05 | server 2 | 88 | OK | 
| 7/7/2020 上午 9:28:06 | server 1 | 80 | OK | 
| 7/7/2020 上午 9:25:05 | server 2 | 88 | OK | 
| 7/7/2020 上午 9:23:07 | server 1 | 86 | OK | 

此转换分两个步骤。首先，指定一个或多个字段，作为数据分组依据。这会将这些字段的所有相同值分组在一起，就像对其进行排序一样。例如，如果您按 `Server ID` 字段分组，Grafana 会按以下方式对数据分组：


| Server ID | 数据 | 
| --- | --- | 
| 时间 | CPU 温度 | 服务器状态 | 
| --- | --- | --- | 
| 时间 | CPU 温度 | 服务器状态 | 
| --- | --- | --- | 
| 时间 | CPU 温度 | 服务器状态 | 
| --- | --- | --- | 
| server 1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| server 2 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| server 3 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| 7/7/2020 上午 11:34:20 | 80 | 关闭 | 
| 7/7/2020 上午 9:28:06 | 80 | OK | 
| 7/7/2020 上午 9:23:07 | 86 | OK | 
| 7/7/2020 上午 10:32:20 | 90 | 过载 | 
| 7/7/2020 上午 9:30:05 | 88 | OK | 
| 7/7/2020 上午 9:25:05 | 88 | OK | 
| 7/7/2020 上午 11:34:20 | 62 | OK | 
| 7/7/2020 上午 10:31:22 | 55 | 正常 | 
| 7/7/2020 上午 9:30:57 | 62 | Rebooting | 

选择作为数据分组依据的字段后，可以在其他字段上添加各种计算，计算将应用于每组行。例如，您可能想要计算每台服务器的平均 CPU 温度。因此，将应用于 CPU 温度字段的平均值计算相加，得到以下结果：


| Server ID | CPU 温度（平均值） |  | 
| --- | --- | --- | 
| 时间 | 服务器状态 | 
| --- | --- | 
| 时间 | 服务器状态 | 
| --- | --- | 
| 时间 | 服务器状态 | 
| --- | --- | 
| server 1 | 82 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| server 2 | 88.6 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| server 3 | 59.6 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| 7/7/2020 上午 11:34:20 | 关闭 | 
| 7/7/2020 上午 9:28:06 | OK | 
| 7/7/2020 上午 9:23:07 | OK | 
| 7/7/2020 上午 10:32:20 | 过载 | 
| 7/7/2020 上午 9:30:05 | OK | 
| 7/7/2020 上午 9:25:05 | OK | 
| 7/7/2020 上午 11:34:20 | OK | 
| 7/7/2020 上午 10:31:22 | OK | 
| 7/7/2020 上午 9:30:57 | Rebooting | 

## 创建热图
<a name="v10-panels-xform-funcs-heatmap"></a>

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

**X 桶**

此设置决定如何将 x 轴拆分为桶。
+ **大小**：可在输入字段中指定时间间隔。例如，时间范围为 `1h` 会在 x 轴上创建 1 小时宽的单元格。
+ **计数**-对于 non-time-related系列，使用此选项定义存储桶中的元素数量。

**Y 桶**

此设置决定如何将 y 轴拆分为桶。
+ **线性的**
+ **对数**：选择以 2 为底数的对数或以 10 为底数的对数。
+ **Symlog**：使用对称的对数刻度。选择以 2 为底数的对数或以 10 为底数的对数，允许负值。

假设有以下数据集：


| Timestamp | 值 | 
| --- | --- | 
| 2023-01-01 12:00:00 | 5 | 
| 2023-01-01 12:15:00 | 10 | 
| 2023-01-01 12:30:00 | 15 | 
| 2023-01-01 12:45:00 | 8 | 
+ 在 X 桶设置为 `Size: 15m`，Y 桶设置为 `Linear` 的情况下，直方图在 X 轴上以 15 分钟为时间间隔整理值，在 Y 轴上以线性方式整理值。
+ 在 X 桶设置为 `Count: 2`，Y 桶设置为 `Logarithmic (base 10)` 的情况下，直方图在 x 轴上将值分成两组，在 y 轴上使用对数刻度。

## 直方图
<a name="v10-panels-xform-funcs-histogram"></a>

使用此转换可根据输入数据生成直方图，从而可视化值的分布。
+ **桶大小**：桶中最低和最高项目之间的范围（xMin 到 xMax）。
+ **存储桶偏移量**-存储 non-zero-based桶的偏移量。
+ **合并序列**：使用所有可用序列创建统一的直方图。

**原始数据**

序列 1：


| A | B | C | 
| --- | --- | --- | 
| 1 | 3 | 5 | 
| 2 | 4 | 6 | 
| 3 | 5 | 7 | 
| 4 | 6 | 8 | 
| 5 | 7 | 9 | 

序列 2：


| C | 
| --- | 
| 5 | 
| 6 | 
| 7 | 
| 8 | 
| 9 | 

**输出**


| xMin | xMax | A | B | C | C | 
| --- | --- | --- | --- | --- | --- | 
| 1 | 2 | 1 | 0 | 0 | 0 | 
| 2 | 3 | 1 | 0 | 0 | 0 | 
| 3 | 4 | 1 | 1 | 0 | 0 | 
| 4 | 5 | 1 | 1 | 0 | 0 | 
| 5 | 6 | 1 | 1 | 1 | 1 | 
| 6 | 7 | 0 | 1 | 1 | 1 | 
| 7 | 8 | 0 | 1 | 1 | 1 | 
| 8 | 9 | 0 | 0 | 1 | 1 | 
| 9 | 10 | 0 | 0 | 1 | 1 | 

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

## 按字段连接
<a name="v10-panels-xform-funcs-joinfield"></a>

使用此转换将多个结果合并到一个表中，从而合并来自不同查询的数据。

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

**内连接**

内连接合并多个表中的数据，其中所有表共享选定字段中的相同值。这种类型的连接会排除每个结果中值不匹配的数据。

使用此转换将多个查询结果（通过连接字段或首次列组合）合并为一个结果，并删除无法成功连接的行。

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

查询 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 | 15 | 
| 7/7/2020 上午 11:24:20 | server 2 | 5 | 
| 7/7/2020 上午 11:04:20 | server 3 | 10 | 

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


| 时间 | 任务 | 正常运行时间 | 服务器 | 错误 | 
| --- | --- | --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | 节点 | 25260122 | server 1 | 15 | 
| 7/7/2020 上午 11:24:20 | postgre | 123001233 | server 2 | 5 | 

*外连接*

外连接包括来自内连接的所有数据，以及在每个输入中值不匹配的行。内连接在时间字段上连接查询 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 | 15 | 
| 7/7/2020 上午 11:24:20 | server 2 | 5 | 
| 7/7/2020 上午 11:04:20 | server 3 | 10 | 

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


| 时间 | 任务 | 正常运行时间 | 服务器 | 错误 | 
| --- | --- | --- | --- | --- | 
| 7/7/2020 上午 11:04:20 |  |  | server 3 | 10 | 
| 7/7/2020 上午 11:14:20 | postgre | 345001233 |  |  | 
| 7/7/2020 上午 11:34:20 | 节点 | 25260122 | server 1 | 15 | 
| 7/7/2020 上午 11:24:20 | postgre | 123001233 | server 2 | 5 | 

## 按标签连接
<a name="v10-panels-xform-funcs-joinlabel"></a>

使用此转换将多个结果连接到一个表中。

这对于将多个时间序列结果转换为具有共享**标签**字段的单个宽表特别有用。
+ **连接**：选择在所有时间序列中的可用或通用标签之间进行连接的标签。
+ **值**：输出结果的名称。

**示例**

输入 1：`series1{what='Temp', cluster='A', job='J1'}`


| 时间 | 值 | 
| --- | --- | 
| 1 | 10 | 
| 2 | 200 | 

输入 2：`series2{what='Temp', cluster='B', job='J1'}`


| 时间 | 值 | 
| --- | --- | 
| 1 | 10 | 
| 2 | 200 | 

输入 3：`series3{what='Speed', cluster='B', job='J1'}`


| 时间 | 值 | 
| --- | --- | 
| 22 | 22 | 
| 28 | 77 | 

配置：

```
value: 'what'
```

输出：


| cluster | 作业 | 临时文件 | Speed | 
| --- | --- | --- | --- | 
| A | J1 | 10 |  | 
| A | J1 | 200 |  | 
| B | J1 | 10 | 22 | 
| B | J1 | 200 | 77 | 

通过这种转换，有效地组合和整理时间序列数据，以获得全面的见解。

## 标签到字段
<a name="v10-panels-xform-funcs-labelstofields"></a>

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

给定两个时间序列的查询结果：
+ 序列 1：标签 `Server=Server A`，`Datacenter=EU`
+ 序列 2：标签 `Server=Server B`，`Datacenter=EU`

在**列**模式下，结果如下所示：


| 时间 | 服务器 | Datacenter | 值 | 
| --- | --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | Server A | EU | 1 | 
| 7/7/2020 上午 11:34:20 | Server B | EU | 2 | 

在“行”模式下，结果对每个序列都创建一个表，并显示每个标签值，如下所示：


| label | 值 | 
| --- | --- | 
| 服务器 | Server A | 
| Datacenter | EU | 


| label | 值 | 
| --- | --- | 
| 服务器 | Server B | 
| Datacenter | EU | 

**值字段名称**

如果您选择 Server 作为**值字段名称**，则 Server 标签的每个值都将获得一个字段。


| 时间 | Datacenter | Server A | Server B | 
| --- | --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | EU | 1 | 2 | 

**合并行为**

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

为了说明这一点，这里有一个示例，其中有两个查询返回没有重叠标签的时间序列。
+ 序列 1：标签 `Server=ServerA`
+ 序列 2：标签 `Datacenter=EU`

首先会生成这两个表：


| 时间 | 服务器 | 值 | 
| --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | ServerA | 10 | 


| 时间 | Datacenter | 值 | 
| --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | EU | 20 | 

合并后：


| 时间 | 服务器 | 值 | Datacenter | 
| --- | --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | ServerA | 10 |  | 
| 7/7/2020 上午 11:34:20 |  | 20 | EU | 

## 限制
<a name="v10-panels-xform-funcs-limit"></a>

使用此转换来限制显示的行数，提供更集中的数据视图。这在处理大型数据集时特别有用。

以下示例说明了**限制**转换对数据来源响应的影响：


| 时间 | 指标 | 值 | 
| --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | 温度 | 25 | 
| 7/7/2020 上午 11:34:20 | 湿度 | 22 | 
| 7/7/2020 上午 10:32:20 | 湿度 | 29 | 
| 7/7/2020 上午 10:31:22 | 温度 | 22 | 
| 7/7/2020 上午 9:30:57 | 湿度 | 33 | 
| 7/7/2020 上午 9:30:05 | 温度 | 19 | 

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


| 时间 | 指标 | 值 | 
| --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | 温度 | 25 | 
| 7/7/2020 上午 11:34:20 | 湿度 | 22 | 
| 7/7/2020 上午 10:32:20 | 湿度 | 29 | 

此转换可帮助您定制数据的可视化表示形式，以专注于最相关的数据。

## 合并序列/表
<a name="v10-panels-xform-funcs-merge"></a>

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

下面是一个示例，说明了**合并序列/表**转换对返回表数据的两个查询的影响：

*查询 A：*


| 时间 | 任务 | 正常运行时间 | 
| --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | 节点 | 25260122 | 
| 7/7/2020 上午 11:24:20 | postgre | 123001233 | 

查询 B：


| 时间 | 任务 | 错误 | 
| --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | 节点 | 15 | 
| 7/7/2020 上午 11:24:20 | postgre | 5 | 

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


| 时间 | 任务 | 错误 | 正常运行时间 | 
| --- | --- | --- | --- | 
| 7/7/2020 上午 11:34:20 | 节点 | 15 | 25260122 | 
| 7/7/2020 上午 11:24:20 | postgre | 5 | 123001233 | 

这种转换将查询 A 和查询 B 中的值合并到一个统一的表中，从而增强了显示效果，以获得更好的见解。

## 按名称整理字段
<a name="v10-panels-xform-funcs-organize"></a>

使用此转换可重命名、重新排序或隐藏面板中单个查询返回的字段。此转换仅适用于具有单个查询的面板。如果您的面板有多个查询，则必须应用*外连接*转换或删除多余的查询。

**转换字段**

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 中清晰而有洞察力的方式表示数据。

## 按值分区
<a name="v10-panels-xform-funcs-partition"></a>

使用此转换可以简化绘制多个序列的过程，而无需使用不同的 `WHERE` 子句进行多次查询。

**注意**  
此功能可用于兼容 Grafana 9 及更高版本的工作区。

这在使用指标 SQL 表时特别有用，如以下示例所示：


| 时间 | Region | 值 | 
| --- | --- | --- | 
| 2022 年 10 月 20 日下午 12:00:00 | 美国 | 1520 | 
| 2022 年 10 月 20 日下午 12:00:00 | EU | 2936 | 
| 2022 年 10 月 20 日凌晨 1:00:00 | 美国 | 1327 | 
| 2022 年 10 月 20 日凌晨 1:00:00 | EU | 912 | 

通过*按值分区*转换器，您可以发出单个查询，并根据您选择的一个或多个列（字段）中的唯一值来拆分结果。下面的示例使用了 `Region`。

```
SELECT Time, Region, Value FROM metrics WHERE Time > '2022-10-20'
```


| 时间 | Region | 值 | 
| --- | --- | --- | 
| 2022 年 10 月 20 日下午 12:00:00 | 美国 | 1520 | 
| 2022 年 10 月 20 日凌晨 1:00:00 | 美国 | 1327 | 


| 时间 | Region | 值 | 
| --- | --- | --- | 
| 2022 年 10 月 20 日下午 12:00:00 | EU | 2936 | 
| 2022 年 10 月 20 日凌晨 1:00:00 | EU | 912 | 

这种转换简化了流程，提高了在同一时间序列可视化中可视化多个序列的灵活性。

## 准备时间序列
<a name="v10-panels-xform-funcs-preparetimeseries"></a>

使用此转换可以解决当数据来源返回的时间序列数据格式与所需可视化的格式不兼容的问题。这种转换允许您在宽格式和长格式之间转换时间序列数据。

**多帧时间序列**

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

*示例*

以下输入：


| Timestamp | Value1 | Value2 | 
| --- | --- | --- | 
| 2023-01-01 00:00:00 | 10 | 20 | 
| 2023-01-01 01:00:00 | 15 | 25 | 

可以转换为：


| Timestamp | 变量 | 值 | 
| --- | --- | --- | 
| 2023-01-01 00:00:00 | Value1 | 10 | 
| 2023-01-01 00:00:00 | Value2 | 20 | 
| 2023-01-01 01:00:00 | Value1 | 15 | 
| 2023-01-01 01:00:00 | Value2 | 25 | 

**宽时间序列**

使用此选项可将时间序列数据帧从长格式转换为宽格式。当您的数据来源以长格式提供时间序列数据，而您的可视化需要宽格式时，这尤其有用。

*示例*

以下输入：


| Timestamp | 变量 | 值 | 
| --- | --- | --- | 
| 2023-01-01 00:00:00 | Value1 | 10 | 
| 2023-01-01 00:00:00 | Value2 | 20 | 
| 2023-01-01 01:00:00 | Value1 | 15 | 
| 2023-01-01 01:00:00 | Value2 | 25 | 

可以转换为：


| Timestamp | Value1 | Value2 | 
| --- | --- | --- | 
| 2023-01-01 00:00:00 | 10 | 20 | 
| 2023-01-01 01:00:00 | 15 | 25 | 

## Reduce
<a name="v10-panels-xform-funcs-reduce"></a>

使用此转换将计算应用于数据帧中的每个字段，并返回单个值。这种转换对于将多个时间序列数据合并成更紧凑的汇总格式特别有用。应用此转换时，将删除时间字段。

考虑以下输入：

查询 A：


| 时间 | 临时文件 | 正常运行时间 | 
| --- | --- | --- | 
| 2020-07-07 11:34:20 | 12.3 | 256122 | 
| 2020-07-07 11:24:20 | 15.4 | 1230233 | 

查询 B：


| 时间 | AQI | 错误 | 
| --- | --- | --- | 
| 2020-07-07 11:34:20 | 6.5 | 15 | 
| 2020-07-07 11:24:20 | 3.2 | 5 | 

reduce 转换器具有两种模式：
+ **序列到行**：为每个字段创建一行，为每个计算创建一列。
+ **减少字段**：保留现有的框架结构，但将每个字段折叠为单个值。

例如，如果将**第一个**和**最后一个**计算与**序列到行**转换一起使用，则结果为：


| 字段 | 第一个 | Last | 
| --- | --- | --- | 
| 临时文件 | 12.3 | 15.4 | 
| 正常运行时间 | 256122 | 1230233 | 
| AQI | 6.5 | 3.2 | 
| 错误 | 15 | 5 | 

**最后一次**计算的 **Reduce 字段**会产生两个帧，每个帧都有一行：

查询 A：


| 临时文件 | 正常运行时间 | 
| --- | --- | 
| 15.4 | 1230233 | 

查询 B：


| AQI | 错误 | 
| --- | --- | 
| 3.2 | 5 | 

## 按正则表达式重命名
<a name="v10-panels-xform-funcs-rename"></a>

使用此转换，可以使用正则表达式和替换模式来重命名部分查询结果。

您可以指定一个正则表达式，该正则表达式只应用于匹配，同时指定一个支持反向引用的替换模式。例如，假设您在可视化每台主机的 CPU 使用情况，并希望删除域名。您可以将正则表达式设置为 `([^\.]+)\..+`，并将替换模式设置为 `$1`，`web-01.example.com` 将变为 `web-01`。

通过这种转换，您可以定制数据以满足可视化需求，从而使您的控制面板信息更丰富且用户友好。

## 行到字段
<a name="v10-panels-xform-funcs-row"></a>

使用此转换将行转换为单独的字段。这非常有用，因为可以单独设置字段的样式和配置。还可以使用附加字段作为动态字段配置的来源，或将其映射到字段标签。然后，可以使用其他标签为生成的字段定义更好的显示名称。

此转换包括一个字段表，该表列出了配置查询返回的数据中的所有字段。通过此表，您可以控制应将哪些字段映射到每个配置属性（**用作**选项）。如果返回的数据中有多行，您还可以选择要选择的值。

这种转换需要：
+ 一个字段用作字段名称的来源。

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

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

在以下位置可视化数据时非常有用：
+ 计量表
+ Stat
+ 饼图

**将多余字段映射到标签**

如果字段未映射到配置属性，Grafana 会自动将其用作输出字段上标签的来源。

示例：


| Name | DataCenter | 值 | 
| --- | --- | --- | 
| ServerA | 美国 | 100 | 
| ServerB | EU | 200 | 

输出：


| ServerA（标签： DataCenter: 美国） | ServerB（标签： DataCenter：欧盟） | 
| --- | --- | 
| 100 | 200 | 

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

如果要从一个查询中提取配置并将其应用于另一个查询，则应使用*查询结果转换*中的配置。

**示例**

输入：


| Name | 值 | 最大值 | 
| --- | --- | --- | 
| ServerA | 10 | 100 | 
| ServerB | 20 | 200 | 
| ServerC | 30 | 300 | 

输出：


| ServerA（配置：max=100） | ServerB（配置：max=200） | ServerC（配置：max=300） | 
| --- | --- | --- | 
| 10 | 20 | 30 | 

如您所见，来源数据中的每一行都变成一个单独的字段。现在，每个字段还设置了最大配置选项。**最小值**、**最大值**、**单位**和**阈值**等选项都是字段配置的一部分，如果这样设置，可视化将使用这些选项，而不是在面板编辑器选项窗格中手动配置的任何选项。

这种转换允许将行转换为单个字段，便于动态字段配置，并将其他字段映射到标签。

## 序列到行
<a name="v10-panels-xform-funcs-series"></a>

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

此转换的结果将包含三列：时间、指标和值。添加指标列是为了方便您查看该指标来自哪个查询。通过在来源查询上定义标签来自定义此值。

在下面的示例中，有两个查询返回时间序列数据。在应用转换之前，将其可视化为两个独立的表。

*查询 A：*


| 时间 | 温度 | 
| --- | --- | 
| 2020-07-07 11:34:20 | 25 | 
| 2020-07-07 10:31:22 | 22 | 
| 2020-07-07 09:30:05 | 19 | 

*查询 B：*


| 时间 | 湿度 | 
| --- | --- | 
| 2020-07-07 11:34:20 | 24 | 
| 2020-07-07 10:32:20 | 29 | 
| 2020-07-07 09:30:57 | 33 | 

以下是将序列应用于行转换后的结果。


| 时间 | 指标 | 值 | 
| --- | --- | --- | 
| 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 name="v10-panels-xform-funcs-sort"></a>

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

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

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

## 空间
<a name="v10-panels-xform-funcs-spatial"></a>

使用此转换将空间运算应用于查询结果。
+ **操作**：选择一个操作：
  + **准备空间字段**：根据其他字段的结果设置几何字段。
    + **位置模式**：选择位置模式（这些选项由**计算值**和**转换**模式共用）：
      + **自动**：根据默认字段名称自动识别位置数据。
      + **坐标**：指定纬度和经度字段。
      + **地理哈希**：指定地理哈希字段。
      + **查找**：指定地名录位置字段。
  + **计算值**-使用几何定义新字段 (heading/distance/area)。
    + **函数**：选择要应用于几何图形的数学运算：
      + **方向**：计算两点之间的方向。
      + **面积**：计算由几何图形的多边形包围的面积。
      + **距离**：计算两点之间的距离。
  + **转换**：对几何图形应用空间运算。
    + **运算**：选择要应用于几何图形的运算：
      + **作为行**：在每一行上创建一个具有顶点的单行特征。
      + **线生成器**：在两点之间创建一条线。

此转换让您可以操作和分析地理空间数据，从而支持在点之间创建线条、计算空间属性等操作。

## 时间序列到表的转换
<a name="v10-panels-xform-funcs-seriestotable"></a>

使用此转换将时间序列结果转换为表，将时间序列数据帧转换为**趋势**字段。然后可以使用[迷你图单元格类型](v10-panels-table.md#v10-panels-table-cell-type)呈现**趋势**字段，为每个表格行生成内联迷你图。如果有多个时间序列查询，则每个查询都将生成一个单独的表数据帧。可使用连接或合并转换来连接这些数据，以生成一个每行包含多个迷你图的表。

对于每个生成的**趋势**字段值，可以选择计算函数。默认为**最后一个非 null 值**。此值显示在迷你图旁边，用于对表行进行排序。

## 回归分析
<a name="v10-panels-xform-funcs-regression"></a>

使用此转换创建一个新的数据帧，其中包含统计模型预测值。这对于在混乱数据中发现趋势非常有用。其工作原理是使用线性或多项式回归将数学函数拟合到数据。然后，在可视化中使用数据帧来显示趋势线。

有两种不同的模式：
+  **线性回归**：将线性函数拟合到数据。
+  **多项式回归**：将多项式函数拟合到数据。

**注意**  
此转换目前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。