

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Redshift データソースの使用
<a name="Redshift-using-the-data-source"></a>

## IAM ポリシー
<a name="Redshift-policies"></a>

 Grafana が Redshift のメトリクスを読み取るには、IAM を使用して権限が付与されている必要があります。これらの権限を 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 には、より複雑な時系列クエリの記述に役立つマクロがいくつか含まれています。

マクロ


|  Macro  |  説明  |  出力例  | 
| --- | --- | --- | 
|  \$1\$1\$1timeEpoch(column)  |  \$1\$1\$1timeEpoch は UNIX タイムスタンプに変換して列の名前を時刻に変更する式に置き換えられます。 |  UNIX\$1TIMESTAMP(dateColumn) as "time"  | 
|  \$1\$1\$1timeFilter(column)  |  \$1\$1\$1timeFilter はパネルの時間範囲を基準に (column を使用して) データのフィルタ条件を作成します。 |  time BETWEEN '2017-07-18T11:15:52Z' AND '2017-07-18T11:15:52Z'  | 
|  \$1\$1\$1timeFrom()  |  \$1\$1\$1timeFrom はパネルの範囲の現在の開始時刻を引用符付きで出力します。 | '2017-07-18T11:15:52Z' | 
|  \$1\$1\$1timeTo()  |  \$1\$1\$1timeTo はパネルの範囲の現在の終了時刻を引用符付きで出力します。 | '2017-07-18T11:15:52Z' | 
|  \$1\$1\$1timeGroup(column, '1m')  |  \$1\$1\$1timeGroup はタイムスタンプをグループ化して、グラフ上の期間ごとに 1 つのポイントになるようにします。 | floor(extract(epoch from time)/60)\$160 AS "time" | 
|  \$1\$1\$1schema  |  \$1\$1\$1schema  は選択したスキーマを使用します  | public | 
|  \$1\$1\$1table  |   \$1\$1\$1table は特定の \$1\$1\$1schema からテーブルを出力します (デフォルトではパブリックスキーマを使用します)  | sales | 
|  \$1\$1\$1column  |  \$1\$1\$1column は現在の \$1\$1\$1table から列を出力します  | date  | 
|  \$1\$1\$1unixEpochFilter(column)  |  \$1\$1\$1unixEpochFilter は指定された列名と Unix タイムスタンプとして表される時刻を使用して、時間範囲フィルターで置き換えられます。 |   column >= 1624406400 AND column <= 1624410000  | 
|  \$1\$1\$1unixEpochGroup(column)  |  \$1\$1\$1unixEpochGroup は \$1\$1\$1timeGroup と同じですが、Unix タイムスタンプとして保存されている時間用です  | floor(time/60)\$160 AS "time" | 

**視覚的表現**

Redshift でのほとんどのクエリは、テーブル形式での表示が最も適しています。すべてのクエリではテーブルにデータを表示します。クエリができれば、テーブルに入れることができます。

以下の例は、テーブル形式での視覚的表現に対応した結果を返します。

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

**時系列とグラフの視覚化**

時系列とグラフの視覚化には、以下のようないくつかの要件があります。
+ `date` または `datetime` タイプの列を選択する必要があります。
+ `date` 列は昇順である必要があります (`ORDER BY column ASC` を使用)。
+ 数値列を選択する必要があります。

より妥当なグラフを作成するには、必ず `$__timeFilter` および `$__timeGroup` マクロを使用してください。

**時系列クエリの例:**

```
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 テーブルからクエリされた値は変数として使用できます。値が多すぎるとパフォーマンスの問題が発生する場合があるため、選択しすぎないようにしてください。

変数を作成したら、 [変数構文](templates-and-variables.md#variable-syntax) を使用して Redshift クエリで使用できます。変数の詳細については、「[テンプレートおよび変数](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 日付/時刻データ型またはエポック値を持つ列にすることができます。 | 
|  Timeend  |  終了日時フィールドのオプション名。ネイティブ SQL 日付/時刻データ型またはエポック値を持つ列にすることができます。 | 
|  Text  |  イベントの説明フィールド。 | 
|  Tags  |  カンマ区切り文字列としてイベントタグに使用するオプションのフィールド名。 | 