

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon Redshift 資料來源
<a name="Redshift-using-the-data-source"></a>

## IAM 政策
<a name="Redshift-policies"></a>

 Grafana 需要使用 IAM 授予的許可，才能讀取 Redshift 指標。您可以將這些許可連接到 IAM 角色，並利用 Grafana 的內建支援來擔任角色。內建 Amazon Grafana Redshift 存取政策在 [AWS 受管政策：AmazonGrafanaRedshiftAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonGrafanaRedshiftAccess)區段中定義。

## 查詢 Amazon Redshift 資料
<a name="Redshift-query"></a>

 Amazon Redshift 資料來源提供標準 SQL 查詢編輯器。Amazon Managed Grafana 包含一些巨集，可協助撰寫更複雜的時間序列查詢。

巨集


|  巨集  |  Description  |  輸出範例  | 
| --- | --- | --- | 
|  $\_\_timeEpoch(column)  |  $\_\_timeEpoch 將由表達式取代，以轉換為 UNIX 時間戳記，並將資料欄重新命名為時間  |  UNIX\_TIMESTAMP(dateColumn) as "time"  | 
|  $\_\_timeFilter(column)  |  $\_\_timeFilter會根據面板的時間範圍，建立篩選資料的條件式 （使用 column)  |  time BETWEEN '2017-07-18T11:15:52Z' AND '2017-07-18T11:15:52Z'  | 
|  $\_\_timeFrom()  |  $\_\_timeFrom 會使用引號輸出面板範圍的目前開始時間  | '2017-07-18T11:15:52Z' | 
|  $\_\_timeTo()  |  $\_\_timeTo 會使用引號輸出面板範圍的目前結束時間  | '2017-07-18T11:15:52Z' | 
|  $\_\_timeGroup(column, '1m')  |  $\_\_timeGroup 群組時間戳記，因此圖形上的每個期間只有 1 點  | floor(extract(epoch from time)/60)\*60 AS "time" | 
|  $\_\_schema  |  $\_\_schema  使用選取的結構描述  | public | 
|  $\_\_table  |   $\_\_table 從指定的 輸出資料表 $\_\_schema（預設使用公有結構描述）  | sales | 
|  $\_\_column  |  $\_\_column 從目前的 輸出資料欄 $\_\_table  | date  | 
|  $\_\_unixEpochFilter(column)  |  $\_\_unixEpochFilter 使用指定的資料欄名稱取代為時間範圍篩選條件，時間以 Unix 時間戳記表示  |   column >= 1624406400 AND column <= 1624410000  | 
|  $\_\_unixEpochGroup(column)  |  $\_\_unixEpochGroup 與 相同，$\_\_timeGroup但時間存放為 Unix 時間戳記  | floor(time/60)\*60 AS "time" | 

**視覺化**

Redshift 中的大多數查詢最好以資料表視覺化呈現。任何查詢都會在資料表中顯示資料。如果可以查詢，則可以放在資料表中。

此範例會傳回資料表視覺化的結果：

```
SELECT {column_1}, {column_2} FROM {table};
```

**時間序列和圖形視覺化 **

對於時間序列和圖形視覺化，有幾個需求：
+ 必須選取具有 `date`或 `datetime`類型的資料欄。
+ 資料`date`欄必須以遞增順序排列 （使用 `ORDER BY column ASC`)。
+ 您必須選取數值欄。

若要建立更合理的圖形，請務必使用 `$__timeFilter`和 `$__timeGroup`巨集。

**範例 timeeries 查詢：**

```
SELECT
  avg(execution_time) AS average_execution_time,
  $__timeGroup(start_time, 'hour'),
  query_type
FROM
  account_usage.query_history
WHERE
  $__timeFilter(start_time)
group by
  query_type,start_time
order by
  start_time,query_type ASC;
```

**填充模式**

Grafana 也會自動完成影格，而沒有某些預設值的值。若要設定此值，請在查詢編輯器中變更**填滿值**。

**檢查查詢**

由於 Grafana 支援 Redshift 不支援的巨集，因此可以直接複製並貼入 Redshift 的完整轉譯查詢會顯示在查詢檢查器中。若要檢視完整的插補查詢，請選擇**查詢檢查器**功能表，而完整的查詢會顯示在**查詢**索引標籤上。

## 範本和變數
<a name="using-redshift-templates-variables"></a>

如需如何新增 Redshift 查詢變異的詳細資訊，請參閱 [新增查詢變數](variables-types.md#add-a-query-variable)。使用 Redshift 資料來源做為可用查詢的資料來源。

從 Amazon Redshift 資料表查詢的任何值都可以用作變數。請務必避免選取太多值，因為這可能會導致效能問題。

建立變數之後，您可以使用 在 Redshift 查詢中使用它[變數語法](templates-and-variables.md#variable-syntax)。如需變數的詳細資訊，請參閱 [範本和變數](templates-and-variables.md)。

## 註釋
<a name="using-redshift-annotations"></a>

[註釋](dashboard-annotations.md) 可讓您在圖形上方疊加豐富的事件資訊。您可以透過選取面板或使用從儀表板****功能表開啟的註釋檢視新增註釋查詢來新增**註釋**。

自動新增註釋的查詢範例：

```
SELECT
  time as time,
  environment as tags,
  humidity as text
FROM
  $__table
WHERE
  $__timeFilter(time) and humidity > 95
```

下表代表考量到轉譯註釋的資料欄值：


|  名稱  |  描述  | 
| --- | --- | 
|  Time  |  日期或時間欄位的名稱。可以是具有原生 SQL 日期或時間資料類型或 epoch 值的資料欄。 | 
|  Timeend  |  結束日期或時間欄位的選用名稱。可以是具有原生 SQL 日期或時間資料類型或 epoch 值的資料欄。 | 
|  Text  |  事件描述欄位。 | 
|  Tags  |  用於事件標籤的選用欄位名稱，做為逗號分隔字串。 | 