

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

# 変数
<a name="v10-dash-variables"></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)」を参照してください。

変数は、値のプレースホルダーです。メトリクスクエリとパネルタイトルで変数を使用できます。したがって、ダッシュボードの上部にあるドロップダウンを使用して値を変更すると、パネルのメトリッククエリが変更され、新しい値が反映されます。

変数を使用すると、よりインタラクティブで動的なダッシュボードを作成できます。メトリクスクエリでサーバー、アプリケーション、センサー名などをハードコーディングする代わりに変数を使用できます。変数は、ダッシュボードの上部にドロップダウンリストとして表示されます。これらのドロップダウンを使用すると、ダッシュボード内に表示されるデータを簡単に変更できます。

これらは、Grafana ビューワーが視覚化をすばやく調整できるようにしたいが、完全な編集権限を付与したくない管理者にとって特に便利です。Grafana ビューワーは変数を使用できます。

変数とテンプレートを使用すると、単一ソースのダッシュボードを使用することもできます。同じデータソースまたはサーバーが複数ある場合は、1 つのダッシュボードを作成し、変数を使用して表示内容を変更できます。これにより、メンテナンスと維持が大幅に簡素化されます。

**テンプレート**

テンプレートは、変数を含むすべてのクエリです。たとえば、複数のサーバーを監視するダッシュボードを管理する場合は、サーバーごとにダッシュボードを作成するか、1 つのダッシュボードを作成して、次のようなテンプレートクエリを含むパネルを使用できます。

```
wmi_system_threads{instance=~"$server"}
```

変数値は、常に var-<varname>=value という構文を使用して URL に同期されます。

**例**

変数は、画面上部のドロップダウンリストに表示されます。さまざまな変数を選択して、視覚化がどのように変化するかを確認します。

変数設定を表示するには、**[ダッシュボード設定] > [変数]** に移動します。リスト内の変数をクリックすると、その設定が表示されます。

変数は、タイトル、説明、テキストパネル、クエリで使用できます。`$` で始まるテキストを含むクエリはテンプレートです。すべてのパネルにテンプレートクエリがあるわけではありません。

**変数のベストプラクティス**
+ 変数のドロップダウンリストは、**[ダッシュボード設定]** の変数リストに一覧されている順序で表示されます。
+ 頻繁に変更する変数を一番上に置くと、ダッシュボードの左端に最初に表示されるようになります。
+ 変数は、デフォルトでドロップダウンリストの最上位値を事前に選択します。代わりに空の値を選択する場合は、次のように変数の設定を変更します。

  1. **[すべてのオプションを含める]** チェックボックスを選択します。

  1. **[すべての値のカスタム化]** フィールドに、値 `+` を入力します。

**Topics**
+ [変数の追加と管理](v10-dash-variable-add.md)
+ [変数の検査](v10-dash-variable-add-inspect.md)
+ [変数構文](v10-dash-variable-syntax.md)

# 変数の追加と管理
<a name="v10-dash-variable-add"></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)」を参照してください。

次の表に、Grafana の変数タイプ一覧を示します。


| 変数タイプ | 説明 | 
| --- | --- | 
| クエリ | メトリクス名、サーバー名、センサー ID、データセンターなど、クエリによって生成された値のリストです。 | 
| カスタム | カンマ区切りリストを使用して変数オプションを手動で定義します。 | 
| テキストボックス | オプションのデフォルト値を使用して、フリーテキスト入力フィールドを表示します。 | 
| 定数 | 非表示の定数を定義します。 | 
| データソース | ダッシュボード全体のデータソースをすばやく変更します。 | 
| 間隔 | 間隔変数は時間範囲を表します。 | 
| アドホックフィルター | データソースのすべてのメトリクスクエリに自動的に追加されるキー-値のフィルターを指します (Prometheus、Loki、InfluxDB、Elasticsearch のみ)。 | 
| グローバル変数 | クエリエディタの式で使用できる組み込み変数です。 | 
| 連鎖変数 | 変数クエリには、他の変数を含めることができます。 | 

**Topics**
+ [一般的なオプションの入力](#v10-dash-variable-options)
+ [クエリ変数の追加](#v10-dash-variable-add-query)
+ [カスタム変数の追加](#v10-dash-variable-add-custom)
+ [テキストボックス変数の追加](#v10-dash-variable-add-text)
+ [定数変数の追加](#v10-dash-variable-add-constant)
+ [データソース変数の追加](#v10-dash-variable-add-datasource)
+ [間隔変数の追加](#v10-dash-variable-add-internal)
+ [アドホックフィルターの追加](#v10-dash-variable-add-adhoc)
+ [変数選択オプションを設定する](#v10-dash-variable-add-selection)
+ [グローバル変数](#v10-dash-variable-add-global)
+ [連鎖変数](#v10-dash-variable-add-chained)
+ [変数の管理](#v10-dash-variable-add-manage)
+ [正規表現での変数のフィルタリング](#v10-dash-variable-add-filter)

## 一般的なオプションの入力
<a name="v10-dash-variable-options"></a>

作成する変数のタイプには、一般的なオプションを入力する必要があります。

**一般的なオプションを入力するには**

1. 変数を作成するダッシュボードに移動し、ページ上部の **[ダッシュボード設定]** (歯車) アイコンを選択します。

1. **[変数]** タブで、**[新しい変数]** を選択します。

1. 変数の **[名前]** を入力します。

1. **[タイプ]** 一覧で、**[クエリ]** を選択します。

1. （オプション) **[ラベル]** に、変数ドロップダウンの表示名を入力します。

   表示名を入力しない場合、ドロップダウンラベルは変数名です。

1. **[非表示]** オプションを次から選択します。
   + **[選択なし (空白)]** – 変数ドロップダウンには、変数の**名前**または**ラベル**値が表示されます。
   + **[ラベル]** – 変数ドロップダウンには、選択した変数値と下矢印のみが表示されます。
   + **[変数]** – ダッシュボードには変数ドロップダウンが表示されません。

## クエリ変数の追加
<a name="v10-dash-variable-add-query"></a>

クエリ変数を使用すると、メトリクス名、タグ値、またはキーのリストを返すデータソースクエリを記述できます。例えば、クエリ変数は、サーバー名、センサー ID、またはデータセンターのリストを返す場合があります。変数値は、データソースクエリでオプションを動的に取得するにつれて変化します。

クエリ変数は通常、文字列でのみサポートされます。クエリが数値またはその他のデータ型を返す場合は、変数として使用するために文字列に変換する必要があります。例えば、Azure データソースの場合、この目的のために [tostring](https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/tostringfunction) 関数を使用できます。

クエリ式には、他の変数への参照を含めることができ、実際にはリンクされた変数を作成できます。Grafana はこれを検出し、リンクされた変数のいずれかが変更されると変数を自動的に更新します。

**注記**  
クエリ式はデータソースごとに異なります。詳細については、ご使用の[データソース](AMG-data-sources.md)のドキュメントを参照してください。

**クエリ変数を追加するには**

1. 上記のように、一般的なオプションを入力します。

1. **[データソース]** リストで、クエリのターゲットデータソースを選択します。

1. **[更新]** リストで、変数がオプションを更新するタイミングを選択します。
   + **[ダッシュボード読み込み時]** - ダッシュボードが読み込まれるたびにデータソースにクエリを実行します。これにより、ダッシュボードの読み込みが遅くなります。ダッシュボードを初期化する前に変数クエリを完了する必要があるためです。
   + **[時間範囲の変更時]** - ダッシュボードの時間範囲が変更されたときにデータソースにクエリを実行します。このオプションは、可変オプションクエリに時間範囲フィルターが含まれているか、ダッシュボードの時間範囲に依存している場合にのみ使用します。

1. **[クエリ]** フィールドにクエリを入力します。
   + クエリフィールドはデータソースによって異なります。一部のデータソースには、カスタムクエリエディタがあります。
   + クエリは、 `__text` および `__value` という名前の値を返す必要があります。例えば、SQL では、`SELECT hostname AS __text, id AS __value from MyTable` などのクエリを使用できます。他の言語のクエリは構文によって異なります。
   + 1 つの入力フィールドクエリエディタにより多くのスペースが必要な場合は、フィールドの右下隅にある線上にカーソルを合わせ、下にドラッグして展開します。

1. (オプション) **[正規表現]** フィールドに正規表現を入力して、データソースクエリによって返される名前の特定部分をフィルタリングまたはキャプチャします。例については、「[正規表現での変数のフィルタリング](#v10-dash-variable-add-filter)」を参照してください。

1. **[ソート]** リストで、ドロップダウンリストに表示される値のソート順序を選択します。デフォルトのオプション **[無効]** では、データソースクエリによって返されるオプションの順序が使用されます。

1. (オプション) [[選択オプション]](#v10-dash-variable-add-selection) を入力します。

1. **[値のプレビュー]** には現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。

1. **[追加]** を選択してダッシュボードに変数を追加します。

## カスタム変数の追加
<a name="v10-dash-variable-add-custom"></a>

数値や文字列など、変更されない値には*カスタム*変数を使用します。

例えば、サーバー名やリージョン名が変更されない場合は、クエリ変数ではなくカスタム変数として作成できます。これらは変更されないため、他のクエリ変数ではなく、[連鎖変数](#v10-dash-variable-add-chained)で使用できます。これにより、連鎖変数が更新されたときに Grafana が送信する必要があるクエリの数が減少します。

**カスタム変数を追加するには**

1. 上記のように、一般的なオプションを入力します。

1. **[カンマで区切られた値]** リストで、この変数の値をカンマ区切りリストに入力します。スペースおよびコロンで区切られた数値、文字列、またはキーと値のペアを含めることができます。例えば、`key1 : value1,key2 : value2`。

1. (オプション) [[選択オプション]](#v10-dash-variable-add-selection) を入力します。

1. **[値のプレビュー]** には現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。

1. **[追加]** を選択してダッシュボードに変数を追加します。

## テキストボックス変数の追加
<a name="v10-dash-variable-add-text"></a>

*テキストボックス*変数は、任意のデフォルト値を使用して自由テキスト入力フィールドを表示します。これは、任意の値を入力できるため、最も柔軟な変数です。カーディナリティの高いメトリクスがある場合や、ダッシュボード内の複数のパネルを同時に更新する場合は、このタイプの変数を使用します。

**テキストボックス変数を追加するには**

1. 上記のように、一般的なオプションを入力します。

1. (オプション) **[デフォルト値]** フィールドで、変数のデフォルト値を選択します。このフィールドに何も入力しない場合、Grafana はユーザーがテキストを入力するための空のテキストボックスを表示します。

1. **[値のプレビュー]** には現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。

1. **[追加]** を選択してダッシュボードに変数を追加します。

## 定数変数の追加
<a name="v10-dash-variable-add-constant"></a>

*定数*変数を使用すると、非表示の定数を定義できます。定数変数は、共有するダッシュボードに対するメトリックパスの接頭辞に有用です。ダッシュボードをエクスポートすると、定数変数がインポートオプションに変換されます。

定数変数は複数設定*できません*。各定数変数は 1 つの値のみを保持し、変数設定を更新しない限り更新できません。

定数変数は、クエリに含める必要がある複素数値があっても、クエリすべてに再入力したくない場合に便利です。例えば、「`i-0b6a61efe2ab843gg`」というサーバーパスがある場合、それを「`$path_gg`」という変数に置き換えることができます。

**定数変数を追加するには**

1. 上記のように、一般的なオプションを入力します。

1. **[値]** フィールドに変数値を入力します。英数字と記号を入力できます。[raw 形式](v10-dash-variable-syntax.md#v10-dash-variable-syntax-raw) を使用している場合は、ワイルドカードを使用することもできます。

1. **[値のプレビュー]** には現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。

1. **[追加]** を選択してダッシュボードに変数を追加します。

## データソース変数の追加
<a name="v10-dash-variable-add-datasource"></a>

*データソース*変数を使用すると、ダッシュボード全体のデータソースをすばやく変更できます。データソースのインスタンスが複数ある場合、おそらく異なる環境にある場合に便利です。

**データソース変数を追加するには**

1. 上記のように、一般的なオプションを入力します。

1. **[タイプ]** リストで、変数のターゲットデータソースを選択します。

   **[高度なデータソースピッカーを開く]** を選択して、データソースの追加 (管理者のみ可能) など、その他のオプションを表示することもできます。詳細については、「[データソースに接続する](AMG-data-sources.md)」を参照してください。

1. (オプション) **[インスタンス名フィルター]** には、変数値のドロップダウンリストからデータソースインスタンスを選択する正規表現フィルターを入力します。このフィールドは空のままにして、すべてのインスタンスを表示します。

1. (オプション) [[選択オプション]](#v10-dash-variable-add-selection) を入力します。

1. **[値のプレビュー]** には現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。

1. **[追加]** を選択してダッシュボードに変数を追加します。

## 間隔変数の追加
<a name="v10-dash-variable-add-internal"></a>

*間隔*変数を使用して、`1m`、`1h`、`1d`などの時間範囲を表します。これらはダッシュボード全体の *group by time* コマンドと考えることができます。間隔変数は、視覚化でのデータのグループ化方法を変更します。また、[自動] オプションを使用して、時間範囲ごとに複数のデータポイントを返すこともできます。

間隔変数を時間 (InfluxDB の場合)、日付ヒストグラム間隔 (Elasticsearch の場合) でグループ化するパラメータとして、または要約関数パラメータ (Graphite の場合) として使用できます。

**間隔変数を追加するには**

1. 上記のように、一般的なオプションを入力します。

1. **[値]** フィールドに、変数ドロップダウンリストに表示する時間間隔を入力します。次の時間単位に対応しています: `s (seconds)`、`m (minutes)`、`h (hours)`、`d (days)`、`w (weeks)`、`M (months)`、`y (years)`。次のデフォルト値を使用または編集することもできます: `1m,10m,30m,1h,6h,12h,1d,7d,14d,30d`。

1. (オプション) `auto`オプションをリストに追加する場合は、**[自動オプション]** をオンにします。このオプションを使用すると、現在の時間範囲を分割して現在の `auto` 時間範囲を計算する回数を指定できます。オンにすると、さらに次の 2 つのオプションが表示されます。
   + **[ステップ数]** – **[最大データポイント数]**クエリオプションと同様に、現在の時間範囲を分類して値を計算する回数を選択します。例えば、現在の表示時間範囲が 30 分の場合、`auto` 間隔はデータを 1 分単位× 30 でグループ化します。デフォルト値は 30 ステップです。
   + **[最小間隔]** – ステップ数の間隔が時間を分類しない最小しきい値です。引き続き 30 分の例を挙げる場合、最小間隔をに設定すると、Grafana はデータを 2 分単位× 15 でグループ化します。

1. **[値のプレビュー]** には現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。

1. **[追加]** を選択してダッシュボードに変数を追加します。

**間隔変数の例**

Graphite 関数でテンプレート変数 `myinterval` を使用する例:

```
summarize($myinterval, sum, false)
```

## アドホックフィルターの追加
<a name="v10-dash-variable-add-adhoc"></a>

*アドホックフィルター*を使用して、指定されたデータソースを使用するすべてのメトリクスクエリに自動的に追加されるキー/値フィルターを追加できます。他の変数とは異なり、クエリではアドホックフィルターを使用しません。代わりに、アドホックフィルターを使用して既存のクエリのフィルターを書き込みます。

**注記**  
アドホックフィルター変数は、Prometheus、Loki、InfluxDB、および Elasticsearch データソースでのみ機能します。

1. 上記のように、一般的なオプションを入力します。

1. **[データソース]** リストで、ターゲットデータソースを選択します。

   **[高度なデータソースピッカーを開く]** を選択して、データソースの追加 (管理者のみ可能) など、その他のオプションを表示することもできます。詳細については、「[データソースに接続する](AMG-data-sources.md)」を参照してください。

1. **[追加]** を選択してダッシュボードに変数を追加します。

**アドホックフィルターの作成**

アドホックフィルターは、利用可能な最も複雑で変更可能な変数オプションの 1 つです。変数オプションの通常リストの代わりに、この変数によりダッシュボード全体のアドホッククエリを構築できます。この方法で適用するフィルターは、ダッシュボード上のすべてのパネルに適用されます。

## 変数選択オプションを設定する
<a name="v10-dash-variable-add-selection"></a>

*選択オプション*は、可変オプションの選択を管理するために使用できる機能です。すべての選択オプションは任意で使用でき、デフォルトではオフになっています。

### 複数値の変数
<a name="v10-dash-variable-add-selection-multi"></a>

複数値が選択された変数を補間するのは、変数が使用されている特定のコンテキストで有効な文字列に複数の値をフォーマットする方法が単純ではないため、難しくなります。Grafana は、各データソースプラグインがテンプレート補間エンジンに、複数値に使用する形式を通知できるようにすることで、この問題を解決しようと試みます。

**注記**  
Grafana がすべての値を 1 つの文字列にフォーマットするには、 変数の **[すべての値をカスタム化]** オプションを空白にする必要があります。空白のままにすると、Grafana はクエリ内のすべての値を連結 (一緒につなげる) します。例えば、`value1,value2,value3`。カスタム `all` 値を使用する場合は、値は代わりに `*` または `all` になります。

**Graphite データソースを使用した複数値変数**

Graphite は glob 式を使用します。この場合、複数の値を持つ変数は、現在の変数値が *host1*、*host2*、*host3* であれば、`{host1,host2,host3}` として補間されます。

**Prometheus または InfluxDB データソースを使用した複数値変数**

InfluxDB と Prometheus は正規表現を使用するため、同じ変数は `(host1|host2|host3)` として補間されます。すべての値も正規表現エスケープされます。そうでない場合、正規表現コントロール文字を持つ値は正規表現を破ります。

**Elastic データソースを使用した複数値変数**

Elasticsearch は Lucene クエリ構文を使用するため、同じ変数は `("host1" OR "host2" OR "host3")` としてフォーマットされます。この場合、すべての値がエスケープされ、値には lucene 制御語と引用符のみが含まれます。

**複数値変数のトラブルシューティング**

自動エスケープとフォーマットは問題を引き起こす可能性があり、その背後にあるロジックを理解するのは難しい場合があります。特に InfluxDB と Prometheus では、正規表現構文を使用するために、変数を正規表現演算子コンテキストで使用する必要があります。

Grafana でこの自動正規表現エスケープとフォーマットを実行したくない場合は、次のいずれかを実行する必要があります。
+ **[複数値]** をオフにするか、**[すべて含めるオプション]** オプションを使用します。
+ [raw 形式](v10-dash-variable-syntax.md#v10-dash-variable-syntax-raw) を使用します。

### すべてを含めるオプション
<a name="v10-dash-variable-add-multi-all"></a>

Grafana は、変数ドロップダウンリストに `All` オプションを追加します。ユーザーがこのオプションを選択すると、すべての変数オプションが選択されます。

### すべての値のカスタム化
<a name="v10-dash-variable-add-multi-custom"></a>

このオプションは、**[すべてを含めるオプション]** が選択されている場合にのみ表示されます。

**[すべての値のカスタム化]** フィールドに 正規表現、globs、または lucene 構文を入力して、 `All` オプションの値を定義します。

デフォルトでは、`All` 値は結合式内のすべてのオプションを含みます。これは非常に長くなり、パフォーマンスの問題が発生する可能性があります。ワイルドカード正規表現など、すべての値のカスタム化を指定する方がよい場合があります。

**[すべての値のカスタム化]** オプションにカスタム正規表現、globs、または lucene 構文を含めるには、エスケープされないため、データソースに有効な値は何かを検討する必要があります。

## グローバル変数
<a name="v10-dash-variable-add-global"></a>

Grafana には、クエリエディタの式で使用できるグローバル組み込み変数があります。このトピックでは、それらをアルファベット順に一覧表示し、定義します。これらの変数は、クエリ、ダッシュボードリンク、パネルリンク、データリンクに役立ちます。

**\$1\$1\$1dashboard**

この変数は、現在のダッシュボードの名前です。

**\$1\$1\$1from および \$1\$1\$1to**

Grafana には、「`$__from`」と「`$__to`」の 2 つの組み込み時間範囲変数があります。これらは現在、デフォルトでは常にエポックミリ秒として補間されていますが、日付の書式設定をユーザーが管理できます。


| 構文 | 結果の例 | 説明 | 
| --- | --- | --- | 
|  `${__from}`  |  1594671549254  |  Unix エポックミリ秒  | 
|  `${__from:date}`  |  2020-07-13T20:19:09.254Z  |  引数なし、デフォルトは ISO 8601/RFC 3339  | 
|  `${__from:date:iso}`  |  2020-07-13T20:19:09.254Z  |  ISO 8601/RFC 3339  | 
|  `${__from:date:seconds}`  |  1594671549  |  Unix エポック秒  | 
|  `${__from:date:YYYY-MM}`  |  2020-07  |  文字を含まないあらゆるカスタム日付形式  | 

上記の構文は、`${__to}` としても機能します。

**\$1\$1\$1interval**

`$__interval` 変数を時間 (InfluxDB 、MySQL、Postgres、MSSQL の場合)、日付ヒストグラム間隔 (Elasticsearch の場合) でグループ化するパラメータとして、または*[要約]*関数パラメータ (Graphite の場合) として使用できます。

Grafana は、クエリで時間別にグループ化するために使用できる間隔を自動的に計算します。グラフに表示されるデータポイントよりも多い場合、クエリはより長い間隔でグループ化することで、より効率的になります。例えば、3 か月分のデータのグラフを見ている場合、分レベルで詳細を表示できない場合があります。時間別または日別にグループ化すると、グラフの表示内容に影響を与えることなく、クエリの効率が向上します。`$__interval` は、時間範囲とグラフの幅 (ピクセル数) を使用して計算されます。

概算: `(to - from) / resolution`

例えば、時間範囲が 1 時間でグラフが全画面表示の場合、間隔は `2m` で計算され、ポイントは 2 分間隔でグループ化されます。時間範囲が 6 か月で、グラフが全画面表示の場合、間隔は `1d` (1 日) で、ポイントは日ごとにグループ化されます。

InfluxDB データソースでは、レガシー変数 `$interval` は同じ変数であり、`$__interval` を代わりに使用すべきです。

InfluxDB データソースと Elasticsearch データソースには、間隔をハードコード化したり、`$__interval` 変数の最小制限 (例えば `Group by time interval` など、`>` 構文を使用して) を設定したりするために使用される `>10m` フィールドがあります。

**\$1\$1\$1interval\$1ms**

この変数はミリ秒単位の `$__interval` 変数であり、時間間隔形式の文字列ではありません。例えば、`$__interval` が `20m` の場合、`$__interval_ms` は `1200000` です。

**\$1\$1\$1org**

この変数は現在の組織の ID です。 `${__org.name}` は現在の組織の名前を表します。

**\$1\$1\$1user**

`${__user.id}` は現在のユーザーの ID です。 `${__user.login}` は現在のユーザーのログインハンドルです。 `${__user.email}`は現在のユーザーの E メールです。

**\$1\$1\$1range**

これは、Prometheus および Loki データソースでのみサポートされています。この変数は、現在のダッシュボードの範囲を表します。`to - from` で計算されます。ミリ秒は `$__range_ms`、秒は `$__range_s` で表示されます。

**\$1\$1\$1rate\$1interval**

Prometheus データソースでのみサポートされています。`$__rate_interval` 変数は、レート関数で使用することを目的としています。

**\$1timeFilter または \$1\$1\$1timeFilter**

`$timeFilter` 変数は、現在選択されている時間範囲を式として返します。例えば、時間間隔「`Last 7 days`」の式は `time > now() - 7d` です。

これは、次のようないくつかの場所で使用されます。
+ InfluxDB データソースの WHERE 句。クエリエディタ では、Grafana は InfluxDB クエリに自動的に追加します。テキストエディタモードでは、`WHERE $timeFilter` を手動で追加できます。
+ Log Analytics は、Azure Monitor データソースでクエリを実行します。
+ SQL は、MySQL 、Postgres、MSSQL でクエリを実行します。
+ `$__timeFilter` 変数は MySQL データソースで使用されます。

**\$1\$1\$1timezone**

`$__timezone` 変数は、現在選択されているタイムゾーン、`utc` または IANA タイムゾーンデータベースのエントリ (例: `America/New_York`) を返します。

現在選択されているタイムゾーンが*ブラウザ時間*である場合、Grafana はブラウザのタイムゾーンを判別しようとします。

## 連鎖変数
<a name="v10-dash-variable-add-chained"></a>

*連鎖変数*は、*リンクされた変数*または*ネストされた変数*とも呼ばれ、変数クエリ内において 1 つ以上の他の変数を持つクエリ変数です。

連鎖変数クエリはデータソースごとに異なりますが、前提はすべてのデータソースで同じです。連鎖変数クエリは、それらを使用できる任意のデータソースで使用できます。

非常に複雑なリンクされたテンプレート化されたダッシュボードは、5 または 10 レベルの深さで作成できます。技術的には、どれだけ深く、複雑にできるかに制限はありませんが、リンクが多いほどクエリの負荷が大きくなります。

**ベストプラクティスとヒント**

以下のプラクティスにより、ダッシュボードと変数の使用が容易になります。

**新しいリンクされた変数の作成**
+ 連鎖変数は親/子の依存関係を作成します。ラダーまたはツリー構造として想定できます。
+ 新しい連鎖変数を作成する最も簡単な方法は、新しい変数の基盤となる変数をコピーすることです。変数リストで、変数エントリの右側にある**変数の複製**アイコンをクリックしてコピーを作成します。その後、親変数のクエリに追加できます。
+ この方法で作成した新しい変数は、リストの下部に表示されます。論理的な順序にするには、リスト内の別の位置にドラッグする必要がある場合があります。

**変数の順序**

ダッシュボード変数リストの変数の順序は、各エントリの右側にある上下の矢印をクリックして変更できます。Grafana は、このリストに従って左から右に変数のドロップダウンを一覧表示し、一番上の変数を左端に表示します。
+ 子変数の前に、親変数と依存関係のない変数のリストを作成します。
+ 各変数は、依存している変数に従う必要があります。
+ UI には、どの変数に依存関係があるのかを示すものがありません。変数を論理的な順序で一覧表示して、他のユーザー (および自分自身) に明確にします。

**複雑さに関する考慮事項**

変数の依存関係のレイヤーが多いほど、変数を変更した後にダッシュボードを更新するのに時間がかかります。

例えば、4 項目がリンクされた一連の変数 (国、地域、サーバー、メトリック) があり、ルート変数値 (国) を変更する場合、Grafana はダッシュボード内の視覚化を更新する前に、すべての従属変数に対してクエリを実行する必要があります。

## 変数の管理
<a name="v10-dash-variable-add-manage"></a>

変数ページでは、変数を追加し、既存の変数を管理できます。また、変数を[検査](v10-dash-variable-add-inspect.md)し、変数が他の変数またはダッシュボードで参照 (または使用されている) されているかどうかを識別することもできます。

**[移動]** – ドラッグアンドドロップを使用して、変数をリストの上または下に移動できます。

**[クローン]** — 変数をクローン (コピー) するには、右側の一連のアイコンからクローンアイコンをクリックします。これにより、元の変数の名前に `copy_of_` というプレフィックスが付いた変数のコピーが作成されます。

**[削除]** – 変数を削除するには、右側の一連のアイコンからごみ箱アイコンをクリックします。

## 正規表現での変数のフィルタリング
<a name="v10-dash-variable-add-filter"></a>

[正規表現クエリ] オプションを使用して、変数クエリによって返されるオプションの一覧をフィルタリングするか、返されるオプションを変更します。

このページでは、正規表現を使用して変数ドロップダウンの値をフィルタリング/変更する方法を説明します。

[正規表現クエリ] オプションを使用して、変数クエリによって返されるオプションの一覧をフィルタリングするか、返されるオプションを変更します。詳細については、[[正規表現]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)に関する Mozilla ガイドを参照してください。

次の例は、次のオプションリストのフィルタリングを示しています。

```
backend_01
backend_02
backend_03
backend_04
```

**`01` または `02` で終わるオプションのみが返されるようにフィルタリングする**

正規表現:

```
/
(
01|02 
) 
$/
```

結果:

```
backend_01
backend_02
```

**正規表現キャプチャグループを使用してテキストの一部を返すオプションのフィルタリングおよび変更**

正規表現:

```
/.* 
(
01|02 
)
/
```

結果:

```
01
02
```

**フィルタリングと変更 - Prometheus の例**

このオプションのリストでは、次の操作を行います。

```
up{instance="demo.robustperception.io:9090",job="prometheus"} 1 1521630638000
up{instance="demo.robustperception.io:9093",job="alertmanager"} 1 1521630638000
up{instance="demo.robustperception.io:9100",job="node"} 1 1521630638000
```

次の正規表現:

```
/. *instance="
(
[^"]*
)
.*/
```

これらの結果を返します:

```
demo.robustperception.io:9090
demo.robustperception.io:9093
demo.robustperception.io:9100
```

**名前付きテキストおよび値キャプチャグループを使用してフィルタリングおよび変更する**

名前付きキャプチャグループを使用すると、変数クエリによって返されるオプションから「テキスト」部分と「値」部分を別々にキャプチャできます。これにより、変数ドロップダウンリストに、選択できる各値に対するわかりやすい名前を含めることができます。

例えば、`node_hwmon_chip_names` Prometheus メトリクスをクエリする場合、 `chip_name`は `chip` 値よりもはるかにわかりやすくなります。したがって、次の変数クエリの結果は以下のとおりになります。

```
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_0",chip_name="enp216s0f0np0"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_1",chip_name="enp216s0f0np1"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_2",chip_name="enp216s0f0np2"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_3",chip_name="enp216s0f0np3"} 1
```

次の正規表現を渡す:

```
/chip_name="(?<text>[ ^ " ] + ) |chip=" (?<value >[ ^ " ] + )/g
```

次のドロップダウンリストを生成:

```
Display Name          Value
------------          -------------------------
enp216s0f0np0         0000:d7:00_0_0000:d8:00_0
enp216s0f0np1         0000:d7:00_0_0000:d8:00_1
enp216s0f0np2         0000:d7:00_0_0000:d8:00_2
enp216s0f0np3         0000:d7:00_0_0000:d8:00_3
```

`text` および `value` キャプチャグループ名のみがサポートされています。

# 変数の検査
<a name="v10-dash-variable-add-inspect"></a>

変数ページでは、変数が他の変数またはダッシュボードで参照 (または使用) されているかどうかを簡単に識別できます。

参照または使用される変数の横には緑色のチェックマークが付き、参照されていない変数の横にはオレンジ色の注意アイコンが付きます。さらに、参照されるすべての変数には、緑色のチェックマークの横にある依存関係アイコンがあります。アイコンを選択すると、依存関係マップが表示されます。依存関係マップは移動できます。マウスホイールまたは同等の機能を使用してズームインまたはズームアウトできます。

# 変数構文
<a name="v10-dash-variable-syntax"></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)」を参照してください。

パネルタイトルとメトリクスクエリは、2 つの異なる構文を使用して変数を参照できます。
+ `$varname` – この構文は参照しやすいですが、単語の途中で変数を使用することは許可されません。

  **例:** `apps.frontend.$server.requests.count`
+ `${var_name}` – 式の中央で変数を使用する場合は、この構文を使用します。
+ `${var_name:<format>}` – この形式により、Grafana が値を解釈する方法をより細かく制御できます。詳細については、このリストに続く「*高度な変数フォーマットオプション*」を参照してください。
+ `[[varname]]` – 使用しないでください。この構文は古く、廃止されました。これは、今後のリリースで削除されます。

クエリがデータソースに送信される前に、クエリは*[補間されます]*。つまり、変数は現在の値に置き換えられます。補間中、変数値は、クエリ言語の構文と使用される場所に準拠するために*エスケープ*される可能性があります。例えば、InfluxDB または Prometheus クエリの正規表現で使用される変数は、正規表現がエスケープされます。

**高度な変数フォーマットオプション**

変数補間のフォーマットはデータソースによって異なりますが、デフォルトの形式を変更する場合があります。

例えば、MySQL データソースのデフォルトは、`'server01','server02'` などのように、複数の値を引用符でカンマ区切りで結合することです。場合によっては、`server01,server02` など、引用符なしでカンマ区切りの文字列を指定することもできます。これを行うには、以下にリストされている高度な変数フォーマットオプションを使用します。

**一般的な構文**

構文: `${var_name:option}`

無効なフォーマットオプションが指定されている場合、`glob` がデフォルト/フォールバックオプションです。

**CSV**

複数の値をカンマ区切り文字列として変数をフォーマットします。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:csv}'
Interpolation result:  'test1,test2'
```

**分散 - OpenTSDB**

OpenTSDB のカスタム形式の複数の値を持つ変数をフォーマットします。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:distributed}'
Interpolation result:  'test1,servers=test2'
```

**二重引用符**

単一値変数と複数値の変数をカンマ区切り文字列にフォーマットし、`\"` によって各値の `"` をエスケープし、`"` で各値を引用符で囲みます。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:doublequote}'
Interpolation result:  '"test1","test2"'
```

**Glob - Graphite**

複数の値を持つ変数を glob にフォーマットします (Graphite クエリの場合)。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:glob}'
Interpolation result:  '{test1,test2}'
```

**JSON**

複数の値をカンマ区切り文字列として変数をフォーマットします。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:json}'
Interpolation result:  '["test1", "test2"]'
```

**Lucene - Elasticsearch**

Elasticsearch の Lucene 形式で複数の値を持つ変数をフォーマットします。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:lucene}'
Interpolation result:  '("test1" OR "test2")'
```

**Percentencode**

URL パラメータで使用する単一値変数と複数値変数をフォーマットします。

```
servers = [ 'foo()bar BAZ',  'test2' ]
String to interpolate:  '${servers:percentencode}'
Interpolation result:  'foo%28%29bar%20BAZ%2Ctest2'
```

**パイプ**

複数の値を持つ変数をパイプ区切り文字列にフォーマットします。

```
servers = [ 'test1.',  'test2' ]
String to interpolate:  '${servers:pipe}'
Interpolation result:  'test1.|test2'
```

**Raw**

SQL クエリにおける単一引用符など、データソース固有のフォーマットをオフにします。

```
servers = [ 'test.1',  'test2' ]
String to interpolate:  '${var_name:raw}'
Interpolation result:  'test.1,test2'
```

**[正規表現]**

複数の値を持つ変数を正規表現文字列にフォーマットします。

```
servers = [ 'test1.',  'test2' ]
String to interpolate:  '${servers:regex}'
Interpolation result:  '(test1\.|test2)'
```

**一重引用符**

単一値変数と複数値の変数をカンマ区切り文字列にフォーマットし、`\'` によって各値の `'` をエスケープし、`'` で各値を引用符で囲みます。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:singlequote}'
Interpolation result:  "'test1','test2'"
```

**Sqlstring**

単一値変数と複数値の変数をカンマ区切り文字列にフォーマットし、`''` によって各値の `'` をエスケープし、`'` で各値を引用符で囲みます。

```
servers = [ "test'1",  "test2" ]
String to interpolate:  '${servers:sqlstring}'
Interpolation result:  "'test''1','test2'"
```

**[テキスト]**

単一値変数と複数値変数をテキスト表現にフォーマットします。単一値の変数の場合、テキスト表現のみを返します。複数値変数の場合、テキスト表現は `+` と組み合わせて返されます。

```
servers = [ "test1",  "test2" ]
String to interpolate:  '${servers:text}'
Interpolation result:  "test1 + test2"
```

**クエリパラメータ**

単一値変数と複数値変数をクエリパラメータ表現にフォーマットします。例: `var-foo=value1&var-foo=value2`

```
servers = [ "test1",  "test2" ]
String to interpolate:  '${servers:queryparam}'
Interpolation result:  "var-servers=test1&var-servers=test2"
```