

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

# 查询
<a name="panel-queries"></a>

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

 Grafana 工作区面板使用*查询*与数据来源进行通信，以获取用于可视化的数据。查询是用数据来源使用的查询语言编写的问题。如果查询格式正确，则数据来源会做出响应。在面板数据来源选项中，您可以调整向数据来源发送查询的频率以及收集的数据点数量。

 Grafana 工作区每个面板最多支持 26 个查询。

## 查询编辑器
<a name="query-editors"></a>

 查询编辑器是帮助您编写查询的表单。根据您的数据来源，查询编辑器可能会提供自动完成功能、指标名称或变量建议。

 由于查询语言之间的差异，数据来源的查询编辑器可能看起来有所不同。

## 查询语法
<a name="query-syntax"></a>

 数据来源有不同的查询语言和语法来请求数据。以下是两个查询示例。

 **PostgreSQL** 

```
SELECT hostname FROM host WHERE region IN($region)
```

 **PromQL** 

```
query_result(max_over_time(<metric>[${__range_s}s]) != <state>)
```

 有关为数据来源编写查询的详细信息，请参阅该数据来源的文档。[连接到数据来源](AMG-data-sources.md) 中列出了数据来源。

## 查询选项卡 UI
<a name="query-tab-ui"></a>

 **查询**选项卡由以下元素组成：
+  数据来源选择器 
+  查询选项 
+  查询检查器按钮 
+  查询编辑器列表 

### 数据来源选择器
<a name="data-source-selector"></a>

 数据来源选择器是一个下拉列表。选择它可选择已添加的数据来源。创建面板时，Amazon Managed Grafana 会自动选择您的默认数据来源。有关数据来源的详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

 除了您在 Grafana 工作区中配置的数据来源外，还有三个特殊的数据来源可用。
+ **TestDataDB** — 生成随机游走数据的内置数据源。Grafana 数据来源对于测试可视化和运行实验非常有用。
+  **混合**：用于在同一面板中查询多个数据来源的数据来源。选择此数据来源后，您可以为添加的每个新查询选择一个数据来源。
  +  第一个查询将使用在您选择**混合**之前选择的数据来源。
  +  您不能将现有查询更改为使用混合数据来源。
+ **控制面板**：用于在同一控制面板中使用来自其他面板的结果集的数据来源。

### 查询选项
<a name="query-options"></a>

 要查看所选数据来源的设置，请选择数据来源选择器旁边的**查询选项**。您在此处所做的更改仅影响在此面板中进行的查询。

 Amazon Managed Grafana 设置了以深灰色文本显示的默认值。更改以白色文本显示。要将字段恢复为默认设置，请从该字段中删除白色文本。

 可以使用以下面板中的数据来源查询选项：
+  **最大数据点数**：如果数据来源支持该选项，则为返回的每个序列设置最大数据点数。如果查询返回的数据点数超过了最大数据点设置，则数据来源会合并这些数据点（通过按平均值或最大值或其他函数将它们聚合在一起来减少返回的数据点数）。

   限制点数的主要原因有两个：性能和让线变得平滑。默认值为图表的宽度（或像素数），这样可以避免数据点数超过图形面板所能显示的数量。

   对于流式处理数据，最大数据点值用于滚动缓冲区。（流式处理是一种持续的数据流，而缓冲是将数据流分成块的一种方式）。
+  **最小间隔**：为自动计算的间隔设置最小限制，通常是最小抓取间隔。如果每 15 秒保存一次数据点，则无需将间隔设置为小于该间隔。另一个用例是将其设置为比抓取间隔更高的最小值，以获得更粗粒度、运行更良好的查询。
+  **间隔**：按时间对数据点进行聚合或分组时可以使用的时间范围。

   Amazon Managed Grafana 会自动计算适当的间隔，该间隔可用作模板化查询中的变量。变量要么以秒为单位：`$__interval`；要么以毫秒为单位：`$__interval_ms`。它通常用于聚合函数，例如 `sum` 或 `average`。例如，这是一个使用间隔变量 `rate(http_requests_total[$__interval])` 的 Prometheus 查询。

   此自动间隔是根据图形的宽度计算的。如果用户缩小很多，则间隔会变大，从而获得更粗粒度的聚合。如果用户放大，则间隔会缩短，从而获得更细粒度的聚合。

   有关更多信息，请参阅 [全局变量](variables-types.md#global-variables)。
+  **相对时间**：覆盖各个面板的相对时间范围，使它们与控制面板右上角控制面板时间选择器中所选择的时间不同。这使您能够在同一个控制面板上显示不同时间段或日期的指标。
+  **时间移位**：提供另一种方法来覆盖各个面板的时间范围。此功能仅适用于相对时间范围，您可以调整时间范围。

   例如，您可以将面板的时间范围移至比控制面板时间选择器早 2 小时。有关更多信息，请参阅 [时间范围控件](dashboard-time-range-controls.md)。
+  **缓存超时**：（仅当此字段在您的数据来源中可用时，您才能看到它。） 如果您的时间序列存储具有查询缓存，则覆盖默认的缓存超时。它被指定为以秒为单位的数值。

### 查询检查器按钮
<a name="query-inspector-button"></a>

 您可以选择**查询检查器**来打开面板检查器的**查询**选项卡。在**查询**选项卡上，您可以看到面板发送的查询请求以及响应。

 选择**刷新**可查看此面板向服务器发送的请求的全文。

**注意**  
 在查询检查器返回结果之前，您需要至少添加一个查询。

 有关面板检查器的详细信息，请参阅 [检查面板](inspect-a-panel.md)。

### 查询编辑器列表
<a name="query-editor-list"></a>

 在 UI 中，查询按可折叠的查询行进行组织。每个查询行都包含一个查询编辑器，并以字母（A、B、C 等）进行标识。

## 在面板之间共享查询结果
<a name="share-query-results-between-panels"></a>

 通过 Amazon Managed Grafana，您可以将一个面板中的查询结果用于控制面板中的任何其他面板。跨面板共享查询结果可以减少对数据来源的查询次数，从而提高控制面板的性能。

 控制面板数据来源允许您在控制面板中选择一个面板，其中包含要共享结果的查询。Amazon Managed Grafana 没有为每个面板发送单独的查询，而是发送一个查询，而其他面板则使用查询结果来构造可视化。

 例如，当您有多个面板可视化相同数据时，该策略可以大大减少查询的数量。

**要与另一个面板共享数据来源查询**

1.  创建控制面板。有关更多信息，请参阅 [创建控制面板](getting-started-grafanaui.md#create-a-dashboard)。

1.  添加面板。有关更多信息，请参阅 [添加面板](add-a-panel-to-a-dashboard.md)。

1.  将标题更改为 **Source panel**。您将使用此面板作为其他面板的来源。定义要共享的一个或多个查询。如果您目前没有可用的数据来源，则可以使用 **Grafana** 数据来源，它会返回一个可用于测试的随机时间序列。

1.  添加第二个面板，然后在查询编辑器中选择**控制面板**数据来源。

1.  在**使用来自面板的结果**列表中，选择您创建的第一个面板。

 现在，在来源面板中定义的所有查询都可用于新面板。在来源面板中进行的查询可与多个面板共享。

 要转到定义查询的面板，请选择该查询。