

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

# [データを変換する]
<a name="v9-panels-xform"></a>

****  
このドキュメントのトピックは、**Grafana バージョン 9.x** をサポートする Grafana ワークスペース向けです。  
Grafana バージョン 10.x をサポートする Grafana ワークスペースについては、「[Grafana バージョン 10 での作業](using-grafana-v10.md)」を参照してください。  
Grafana バージョン 8.x をサポートする Grafana ワークスペースについては、「[Grafana バージョン 8 での作業](using-grafana-v8.md)」を参照してください。

変換は、システムが視覚化を適用する前に、クエリによって返されるデータを操作できる強力な方法です。変換を使用すると、次のことができます。
+ フィールド名の変更
+ 時系列データの結合
+ クエリ間で数学演算の実行
+ ある変換の出力を別の変換への入力として使用

同じデータセットの複数のビューに依存するユーザーにとって、変換は多数のダッシュボードを作成および維持する効率的な方法を提供します。

また、ある変換の出力を別の変換への入力として使用して、パフォーマンスを向上させることもできます。

**注記**  
システムが変換されたデータをグラフ化できない場合があります。その場合は、視覚化の上にある **[テーブルビュー]** のトグルをクリックして、データのテーブルビューに切り替えます。これは、変換の最終結果を理解するのに役立ちます。

## 変換タイプ
<a name="v9-panels-xform-types"></a>

Grafana には、データを変換するさまざまな方法があります。変換関数の完全なリストを以下に示します。

## 変換の順序
<a name="v9-panels-xform-order"></a>

複数の変換がある場合、Grafana はリスト順で変換を適用します。各変換では、処理中のパイプラインにある次の変換に渡される新しい結果セットが作成されます。

Grafana が変換を適用する順序は、結果に直接影響します。例えば、縮小変換を使用して 1 つの列のすべての結果を 1 つの値に集約する場合、変換はその 1 つの値にのみ適用できます。

## 変換関数をデータに追加する
<a name="v9-panels-xform-add"></a>

次の手順は、データに変換を追加する方法を示しています。

**パネルに変換を追加するには**

1. 1 つ以上の変換を追加するパネルに移動します。

1. パネルタイトルを選択し、**[編集]** をクリックします。

1. **[変換]** タブを選択します。

1. 変換を選択します。変換オプションを設定する変換行が表示されます。

1. **[変換ルールの追加]** を選択すると、別の変換ルールを追加できます。この変換は、前の変換が返した結果セットに作用します。

## 変換をデバッグする
<a name="v9-panels-xform-debug"></a>

変換の入力および出力結果のセットを表示するには、変換行の右側にあるバグアイコンを選択します。

入出力の結果セットにより、変換のデバッグが可能になります。

## 変換を削除する
<a name="v9-panels-xform-delete"></a>

不要な変換を削除することをお勧めします。変換を削除すると、視覚化からデータが削除されます。

前提条件:

変換に依存するすべてのダッシュボードを特定し、影響を受けるダッシュボードのユーザーに通知します。

**変換を削除するには**

1. パネルを開いて編集します。

1. **[変換]** タブを選択します。

1. 削除する変換の横にあるごみ箱アイコンを選択します。

## 変換関数
<a name="v9-panels-xform-functions"></a>

データに関する次の変換を実行できます。

**計算からのフィールドの追加**

この変換を使用して、他の 2 つのフィールドから計算した新しいフィールドを追加します。各変換では 1 つの新しいフィールドを追加できます。
+ **[モード]** – 以下のモードを選択します。
  + **[行を減らす]** – 選択したフィールドの各行に、選択済みの計算を個別に適用します。
  + **[二項演算]** – 選択した 2 つのフィールドから 1 行の値に基本的な二項演算 (合計や乗算など) を適用します。
+ **[Field name]** – 新しいフィールドの計算に使用する、フィールドの名前を選択します。
+ **[計算]** – **[掃き出し法]** を選択すると、**[計算]** フィールドが表示されます。フィールドをクリックして、新しいフィールドの作成に使用できる計算選択肢のリストを表示します。使用可能な計算の詳細については、「[計算タイプ](v9-panels-calculation-types.md)」を参照してください。
+ **[演算]** – **[二項演算]** モードを選択すると、**[演算]** フィールドが表示されます。これらのフィールドを使用すると、2 つの選択したフィールドから 1 行の値に対して基本的な数学演算を実行できます。二項演算に数値を使用することもできます。
+ **[エイリアス]** – (オプション) 新しいフィールドの名前を入力します。このフィールドを空白のままにすると、計算に一致するようにフィールドの名前が付けられます。
+ **[すべてのフィールドを置き換え]** – (オプション) 他のすべてのフィールドを非表示にし、計算したフィールドのみを視覚化に表示する場合は、このオプションを選択します。

**[連結フィールド]**

この変換は、全フレームの全フィールドを 1 つの結果に結合します。この 2 つのクエリを検討します。

クエリ A


| 温度 | アップタイム | 
| --- | --- | 
|  15.4  |  1230233  | 

クエリ B


| AQI | エラー | 
| --- | --- | 
|  3.2  |  5  | 

フィールドを連結すると、データフレームは次のようになります。


| 温度 | アップタイム | AQI | エラー | 
| --- | --- | --- | --- | 
|  15.4  |  1230233  |  3.2  |  5  | 

**[クエリ結果から設定]**

この変換を使用して、1 つのクエリを選択し、そこから **[最小]** 、**[最大]** 、**[単位]**、**[しきい値]** などの標準オプションを抽出し、他のクエリ結果に適用できます。これにより、動的なクエリ駆動型の視覚化設定が可能になります。

設定クエリ結果の各行に対して一意の設定を抽出する場合は、行からフィールドへの変換を試行します。

**オプション**
+ **[Config query]** (設定クエリ) – 設定として使用するデータを返すクエリを選択します。
+ **[適用先]** – 設定を適用するフィールドまたは系列を選択します。
+ **[オプションに適用]** – 通常は、**[適用先]** で選択したオプションに応じて、フィールドタイプまたはフィールド名の正規表現を使用します。

**[フィールドタイプの変換]**

この変換により、指定されたフィールドのフィールドタイプが変更されます。
+ **[Field]** – 使用可能なフィールドから選択
+ **[as]** – 変換するフィールドタイプを選択
  + **[Numeric]** – 値の数値の作成を試行
  + **[String]** – 値の文字列を作成
  + **[時間]** – 値を時間として解析
    + yyyy-mm-dd や DD MM YYYY hh:mm:ss などの文字列の入力として DateFormat を指定するオプションを表示
  + **[Boolean]** – 値はブール値となる

例えば、次のクエリでは、時間フィールドを Time として、日付形式を YYYY として選択することで変更できます。


| Time | Mark | 値 | 
| --- | --- | --- | 
|  7/1/2017  |  above  |  25  | 
|  8/2/2018  |  below  |  22  | 
|  9/2/2019  |  below  |  29  | 
|  10/4/2020  |  above  |  22  | 

結果


| Time | Mark | 値 | 
| --- | --- | --- | 
|  1/1/2017  |  above  |  25  | 
|  1/1/2018  |  below  |  22  | 
|  1/1/2019  |  below  |  29  | 
|  1/1/2020  |  above  |  22  | 

**[名前によるデータのフィルタリング]**

この変換を使用してクエリ結果の一部を削除します。

Grafana は **[Identifier]** (識別子) フィールドを表示し、続いてクエリによって返されるフィールドを表示します。

フィルターは次の 2 つのいずれかの方法で適用できます。
+ 正規表現を入力します。
+ フィールドを選択してフィールドのフィルタリングを切り替えます。フィルタリングされたフィールドにはダークグレーテキストが表示され、フィルタリングされていないフィールドには白いテキストが表示されます。

**[クエリによるデータのフィルタリング]**

1 つ以上のクエリを非表示にするには、複数のクエリがあるパネルでこの変換を使用します。

Grafana では、クエリ識別文字がダークグレーテキストで表示されます。フィルタリングを切り替えるには、クエリ識別子をクリックします。クエリ文字が白い場合、結果が表示されます。クエリ文字が暗い場合、結果は非表示です。

**注記**  
この変換は Graphite では使用できません。このデータソースは、返されたデータとクエリの相関関係をサポートしていないためです。

**[値によるデータのフィルタリング]**

この変換により、Grafana でデータを直接フィルタリングして、クエリ結果から一部のデータポイントを削除できます。1 つ以上の定義済み条件と一致するデータを含めるか除外するかを選択できます。その条件は選択したフィールドに適用されます。

この変換はデータソースが値によりネイティブにフィルタリングしない場合に役立ちます。共有クエリを使用している場合、これを使用して値を絞り込んで表示することもできます。

すべてのフィールドで使用できる条件は次のとおりです。
+ **[Regex]** – 正規表現を照合
+ **[Is Null]** – 値が null の場合に照合
+ **[Is Not Null]** – 値が null でない場合に照合します。
+ **Equal** – 値が指定値と等しい場合に照合
+ **Different** – 値が指定された値と異なる場合に照合

数値フィールドで使用可能な条件は以下のとおりです。
+ **Greater** – 値が指定値より大きい場合に照合
+ **Lower** – 値が指定値よりも小さい場合に照合
+ **Greater or equal** – 値が指定値以上の場合に照合
+ **Lower or equal** – 値が指定値以下の場合に照合
+ **Range** – 指定された最小値と最大値 (最小値と最大値を含む) 間の範囲を照合します。

以下のデータセットを考慮します。


| Time | 温度 | 高度 | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 23 秒  |  32  |  101  | 
|  7/7/2020 午前 11 時 34 分 22 秒  |  28  |  125  | 
|  7/7/2020 午前 11 時 34 分 21 秒  |  26  |  110  | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  23  |  98  | 
|  7/7/2020 午前 10 時 32 分 24 秒  |  31  |  95  | 
|  7/7/2020 午前 10 時 31 分 22 秒  |  20  |  85  | 
|  7/7/2020 午前 9 時 30 分 57 秒  |  19  |  101  | 

温度が 30°C 未満のデータポイントを **[含める]** にすると、設定は次のようになります。
+ **フィルタータイプ** – `Include`
+ **[条件]** – `Temperature` が `Lower Than 30` と一致する行

30°C 未満の温度のみが含まれる場合、次の結果が得られます。


| Time | 温度 | 高度 | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 22 秒  |  28  |  125  | 
|  7/7/2020 午前 11 時 34 分 21 秒  |  26  |  110  | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  23  |  98  | 
|  7/7/2020 午前 10 時 31 分 22 秒  |  20  |  85  | 
|  7/7/2020 午前 9 時 30 分 57 秒  |  19  |  101  | 

複数の条件をフィルターに追加できます。例えば、高度が 100 を超える場合にのみデータを含めることができます。これを行うには、次の設定にその条件を追加します。
+ フィルタータイプ – `Match All` 条件を満たす `Include` 行
+ Condition 1 – `Temperature` が `30` より `Lower` に一致する行
+ Condition 2 – `Altitude` が `Greater` より `100` に一致する行

複数の条件がある場合、条件に**すべて一致**、または追加した条件の**いずれかに一致**する行にアクション (包含/除外) を適用するかを選択できます。

上記の例では、温度が 30°C 未満かつ高度が 100 を超える行を含めるため、**[すべて一致]** を選択しました。温度が 30°C 未満または高度が 100 を超える行を含める場合は、**[任意の一致]** を選択します。これには、元のデータの最初の行が含まれます。元のデータの温度は 32°C (最初の条件と一致しない) ですが、高度は 101 (2 番目の条件と一致する) であるため、含まれます。

無効または不完全な設定条件は無視されます。

**[グループ化の条件]**

この変換では、指定されたフィールド (列) 値でデータをグループ化し、各グループの計算を処理します。計算選択肢のリストの表示をクリックします。

オリジナルデータの例を次に示します。


| Time | サーバー ID | CPU 温度 | サーバーステータス | 
| --- | --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー 1  |  80  |  シャットダウン  | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー 3  |  62  |  OK  | 
|  7/7/2020 午前 10 時 32 分 20 秒  |  サーバー 2  |  90  |  オーバーロード  | 
|  7/7/2020 午前 10 時 31 分 22 秒  |  サーバー 3  |  55  |  OK  | 
|  7/7/2020 午前 9 時 30 分 57 秒  |  サーバー 3  |  62  |  再起動  | 
|  7/7/2020 午前 9 時 30 分 5 秒  |  サーバー 2  |  88  |  OK  | 
|  7/7/2020 午前 9 時 28 分 6 秒  |  サーバー 1  |  80  |  OK  | 
|  7/7/2020 午前 9 時 25 分 5 秒  |  サーバー 2  |  88  |  OK  | 
|  7/7/2020 午前 9:23:07  |  サーバー 1  |  86  |  OK  | 

この変換では 2 つのステップを実行します。まず、データをグループ化させる 1 つ以上のフィールドを指定します。これにより、これらのフィールドの同じ値すべてが、ソートされたかのようにグループ化されます。例えば、サーバー ID フィールドでグループ化すると、次のようにデータがグループ化されます。


| Time | サーバー ID | CPU 温度 | サーバーステータス | 
| --- | --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー 1  |  80  |  シャットダウン  | 
|  7/7/2020 午前 9 時 28 分 6 秒  |  サーバー 1  |  80  |  OK  | 
|  7/7/2020 午前 9:23:07  |  サーバー 1  |  86  |  OK  | 
|  7/7/2020 午前 10 時 32 分 20 秒  |  サーバー 2  |  90  |  オーバーロード  | 
|  7/7/2020 午前 9 時 30 分 5 秒  |  サーバー 2  |  88  |  OK  | 
|  7/7/2020 午前 9 時 25 分 5 秒  |  サーバー 2  |  88  |  OK  | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー 3  |  62  |  OK  | 
|  7/7/2020 午前 10 時 31 分 22 秒  |  サーバー 3  |  55  |  OK  | 
|  7/7/2020 午前 9 時 30 分 57 秒  |  サーバー 3  |  62  |  再起動  | 

同じ値のサーバー ID を持つすべての行がグループ化されます。

データをグループ化するフィールドを選択すると、他のフィールドにさまざまな計算を追加でき、その計算を行の各グループに適用できます。例えば、これらの各サーバーの平均 CPU 温度を計算できます。そのため、CPU 温度フィールドに適用される*[平均]*計算を追加して、以下を取得できます。


| サーバー ID | CPU 温度 (平均) | 
| --- | --- | 
|  サーバー 1  |  82  | 
|  サーバー 2  |  88.6  | 
|  サーバー 3  |  59.6  | 

また、複数の計算を追加できます。例:
+ 時間のフィールドでは、*[最後]*の値を計算して、各サーバーで最後のデータポイントがいつ受信されたかを把握できます。
+ サーバーステータスフィールドでは、*[最後]*の値を計算して、サーバーごとに最後の状態値を確認できます。
+ また、温度フィールドでは、*最後*の値を計算して、サーバーごとに最新の測定温度を知ることもできます。

その後、以下を取得します。


| サーバー ID | CPU 温度 (平均) | CPU 温度 (最新) | 時間 (最後) | サーバーステータス (最後) | 
| --- | --- | --- | --- | --- | 
|  サーバー 1  |  82  |  80  |  7/7/2020 午前 11 時 34 分 20 秒  |  シャットダウン  | 
|  サーバー 2  |  88.6  |  90  |  7/7/2020 午前 10 時 32 分 20 秒  |  オーバーロード  | 
|  サーバー 3  |  59.6  |  62  |  7/7/2020 午前 11 時 34 分 20 秒  |  OK  | 

この変換により、時系列からキー情報を抽出して便利な方法で表示できます。

**Join by field** (フィールドで結合)

この変換を使用して、複数の結果を 1 つのテーブルに結合します。これは、複数の時系列の結果を共有時間フィールドを持つ単一のワイドテーブルに変換する場合に特に便利です。

*Inner join* (内部結合)

内部結合は、選択したフィールドからすべてのテーブルが同じ値を共有する複数のテーブルからのデータをマージします。このタイプの結合では、すべての結果で値が一致しないデータを除外します。

この変換を使用して、複数のクエリの結果 (渡された結合フィールドまたは最初の列の組み合わせ) を 1 つの結果に結合し、正常な結合を実行できない行を削除します。

次の例では、2 つのクエリがテーブルデータを返します。内部結合変換を適用する前に、2 つの個別のテーブルとして視覚化されます。

クエリ A


| Time | ジョブ | アップタイム | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  ノード  |  25260122  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  postgre  |  123001233  | 
|  7/7/2020 午前 11 時 14 分 20 秒  |  postgre  |  345001233  | 

クエリ B


| Time | サーバー | エラー | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー 1  |  15  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  サーバー 2  |  5  | 
|  7/7/2020 午前 11 時 4 分 20 秒  |  サーバー 3  |  10  | 

内部結合変換を適用した後の結果は次のようになります。


| Time | ジョブ | アップタイム | サーバー | エラー | 
| --- | --- | --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  ノード  |  25260122  |  サーバー 1  |  15  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  postgre  |  123001233  |  サーバー 2  |  5  | 

*Outer join* (外部結合)

外部結合には、すべての入力で値が一致しない内部結合と行のすべてのデータが含まれます。内部結合が時間フィールドでクエリ A とクエリ B を結合している間、外部結合には時間フィールドで一致しないすべての行が含まれます。

次の例では、2 つのクエリがテーブルデータを返します。外部結合変換を適用する前に、2 つのテーブルとして視覚化されます。

クエリ A


| Time | ジョブ | アップタイム | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  ノード  |  25260122  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  postgre  |  123001233  | 
|  7/7/2020 午前 11 時 14 分 20 秒  |  postgre  |  345001233  | 

クエリ B


| Time | サーバー | エラー | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー 1  |  15  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  サーバー 2  |  5  | 
|  7/7/2020 午前 11 時 4 分 20 秒  |  サーバー 3  |  10  | 

外部結合変換を適用した後の結果は次のようになります。


| Time | ジョブ | アップタイム | サーバー | エラー | 
| --- | --- | --- | --- | --- | 
|  7/7/2020 午前 11 時 4 分 20 秒  |    |    |  サーバー 3  |  10  | 
|  7/7/2020 午前 11 時 14 分 20 秒  |  postgre  |  345001233  |    |    | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  ノード  |  25260122  |  サーバー 1  |  15  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  postgre  |  123001233  |  サーバー 2  |  5  | 

**[フィールドへのラベル付け]**

この変換により、ラベルまたはタグを含む時系列の結果がテーブルに変更され、各ラベルキーと値がテーブルの結果に含まれます。ラベルは、列または行の値として表示できます。

2 つの時系列のクエリ結果を示します。
+ 系列 1 – ラベル サーバー = サーバー A、データセンター = EU
+ 系列 2 – ラベル サーバー = サーバー B、データセンター = EU

**[列]** モードでは、結果は次のように表示されます。


| Time | サーバー | データセンター | 値 | 
| --- | --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー A  |  EU  |  1  | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー B  |  EU  |  2  | 

[Rows] (行) モードでは、結果には各系列のテーブルがあり、次のような各ラベル値が表示されます。


| ラベル | 値 | 
| --- | --- | 
|  サーバー  |  サーバー A  | 
|  データセンター  |  EU  | 


| ラベル | 値 | 
| --- | --- | 
|  サーバー  |  サーバー B  | 
|  データセンター  |  EU  | 

*値フィールド名*

**値フィールド名**としてサーバーを選択した場合、サーバーラベルの値ごとに 1 つのフィールドを取得します。


| Time | データセンター | サーバー A | サーバー B | 
| --- | --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  EU  |  1  |  2  | 

*マージ動作*

フィールドトランスフォーマーへのラベルは、内蔵されている 2 つの異なる変換です。1 つ目は、1 つの系列で動作し、ラベルをフィールドに抽出します。2 つ目は、すべての結果を 1 つのテーブルに結合するマージ変換です。マージ変換は、一致するすべてのフィールドで結合を試みます。このマージステップは必須であり、オフにすることはできません。

**注記**  
*[マージ]*変換は単独で使用でき、以下で詳細に説明します。

これを説明するために、重複ラベルのない時系列を返すクエリが 2 つある例を次に示します。
+ 系列 1 – ラベル サーバー = サーバー A
+ 系列 2 – ラベル データセンター = EU

これにより、まず次の 2 つのテーブルが作成されます。


| Time | サーバー | 値 | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー A  |  10  | 


| Time | データセンター | 値 | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  EU  |  20  | 

マージ後


| Time | サーバー | 値 | データセンター | 
| --- | --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  サーバー A  |  10  |    | 
|  7/7/2020 午前 11 時 34 分 20 秒  |    |  20  |  EU  | 

**Merge** (マージ)

この変換を使用して、複数クエリの結果を 1 つの結果にまとめます。これはテーブルパネルの視覚化を使用する場合に役立ちます。マージできる値は同じ行に結合されます。共有フィールドに同じデータが含まれている場合は値をマージできます。

次の例では、テーブルデータを返すクエリが 2 つあります。変換を適用する前に、2 つの個別のテーブルとして視覚化されます。

クエリ A


| Time | ジョブ | アップタイム | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  ノード  |  25260122  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  postgre  |  123001233  | 

クエリ B


| Time | ジョブ | エラー | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  ノード  |  15  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  postgre  |  5  | 

マージ変換を適用した後の結果は次のとおりです。


| Time | ジョブ | エラー | アップタイム | 
| --- | --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  ノード  |  15  |  25260122  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  postgre  |  5  |  123001233  | 

**[フィールドの整理]**

この変換を使用して、クエリが返すフィールドの名前を変更、並べ替え、非表示にします。

**注記**  
この変換は単一クエリを持つパネルでのみ機能します。パネルに複数のクエリがある場合は、外部結合変換を適用するか、追加のクエリを削除する必要があります。

Grafana では、クエリが返すフィールドのリストが表示されます。以下の操作を実行できます。
+ フィールドの上にカーソルを置いて、フィールドの順序を変更します。カーソルが手の形になると、フィールドを新しい場所にドラッグできます。
+ フィールド名の隣の目アイコンをクリックして、フィールドを非表示または表示します。
+ 名前変更ボックスに新しい名前を入力して、フィールドの名前を変更します。

**[値による分割]**

この変換により、複数の系列をグラフ化する際に、異なる `WHERE` 句を持つ同じデータソースへの複数のクエリが不要になります。次のデータを含むメトリクス SQL テーブルを検討します。


| Time | リージョン | 値 | 
| --- | --- | --- | 
|  10/20/2022 12:00:00 PM  |  米国  |  1520  | 
|  10/20/2022 12:00:00 PM  |  EU  |  2936  | 
|  10/20/2022 午前 1 時 00 分  |  米国  |  1327  | 
|  10/20/2022 午前 1 時 00 分  |  EU  |  912  | 

v9.3 より前では、US の赤いトレンドラインと EU の青いトレンドラインを同じ時系列パネルにプロットする場合は、これを 2 つのクエリに分割する必要があります。

```
SELECT Time, Value FROM metrics WHERE Time > '2022-10-20' AND Region='US'
SELECT Time, Value FROM metrics WHERE Time > '2022-10-20' AND Region='EU'
```

また、メトリクステーブルに実際に存在するリージョンを事前に知る必要があります。

*[値による分割]*トランスフォーマーを使用すると、単一のクエリを発行し、選択した 1 つ以上の列 (`fields`) に対して一意の値で結果を分割できるようになりました。次の例では `Region` を使用しています。

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


| Time | リージョン | 値 | 
| --- | --- | --- | 
|  10/20/2022 12:00:00 PM  |  米国  |  1520  | 
|  10/20/2022 午前 1 時 00 分  |  米国  |  1327  | 


| Time | リージョン | 値 | 
| --- | --- | --- | 
|  10/20/2022 12:00:00 PM  |  EU  |  2936  | 
|  10/20/2022 午前 1 時 00 分  |  EU  |  912  | 

**[削減]**

*[削減]* 変換は、フレーム内の各フィールドに計算を適用し、単一の値を返します。この変換を適用すると、時間フィールドは削除されます。

以下の入力を検討します。

クエリ A


| Time | Temp | アップタイム | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  12.3  |  256122  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  15.4  |  1230233  | 

クエリ B


| Time | AQI | エラー | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  6.5  |  15  | 
|  7/7/2020 午前 11 時 24 分 20 秒  |  3.2  |  5  | 

縮小のトランスフォーマーには 2 つのモードがあります。
+ **[シリーズから行]** – 各フィールドの行と各計算の列を作成します。
+ **[縮小フィールド]** – 既存のフレーム構造を維持しますが、各フィールドを 1 つの値に折りたたみます。

例えば、系列で **[最初]** と **[最後]** の計算を使用して **[シリーズから行]** 変換を行った場合、結果は次のようになります。


| フィールド | First | Last | 
| --- | --- | --- | 
|  Temp  |  12.3  |  15.4  | 
|  アップタイム  |  256122  |  1230233  | 
|  AQI  |  6.5  |  3.2  | 
|  エラー  |  15  |  5  | 

最後の計算における縮小フィールドは、それぞれ 1 行、2 つのフレームになります。

クエリ A


| 温度 | アップタイム | 
| --- | --- | 
|  15.4  |  1230233  | 

クエリ B


| AQI | エラー | 
| --- | --- | 
|  3.2  |  5  | 

**[正規表現で名前を変更]**

この変換を使用して、正規表現と置換パターンを使用してクエリ結果の一部の名前を変更します。

正規表現を指定できます。正規表現は、バックリファレンスをサポートする置換パターンとともに、一致にのみ適用されます。例えば、ホストあたりの CPU 使用率を視覚化し、ドメイン名を削除するとします。正規表現を `([^\.]+)\..+` に設定し、置換パターンを `$1` に設定することで、`web-01.example.com` は `web-01` になります。

**Rows to fields** (行からフィールドへ)

行からフィールドへの変換は、行を別々のフィールドに変換します。これは、フィールドを個別にスタイル変更および設定できるため便利です。また、動的フィールド設定のソースとして追加のフィールドを使用したり、フィールドラベルにマッピングしたりすることもできます。その後、追加のラベルを使用して、結果フィールドにより適切な表示名を定義できます。

この変換には、設定クエリによって返されるデータ内のすべてのフィールドを一覧表示するフィールドテーブルが含まれます。このテーブルでは、各設定プロパティにマッピングするフィールドを制御できます ([Use as] (用途) オプション)。返されるデータに複数の行がある場合、選択する値を選ぶこともできます。

この変換には以下が必要です。
+ フィールド名のソースとして使用する 1 つのフィールド。

  デフォルトでは、変換は最初の文字列フィールドをソースとして使用します。このデフォルト設定は、代わりに使用するフィールドの **[用途]** 列で **[フィールド名]** を選択してオーバーライドできます。
+ 値のソースとして使用する 1 つのフィールド。

  デフォルトでは、変換は最初の数値フィールドをソースとして使用します。ただし、このデフォルト設定は、代わりに使用するフィールドの **[用途]** 列で **[フィールド値]** を選択してオーバーライドできます。

以下にデータを視覚化する場合に役立ちます。
+ ゲージ
+ 統計
+ 円グラフ

*追加フィールドをラベルにマッピング*

フィールドが設定プロパティにマッピングされない場合、Grafana は出力フィールドのラベルのソースとして自動的に使用します。

例:


| 名前 | データセンター | 値 | 
| --- | --- | --- | 
|  サーバー A  |  米国  |  100  | 
|  サーバー B  |  EU  |  200  | 

出力:


| サーバー A (ラベル: データセンター: US) | サーバー B (ラベル: データセンター: EU) | 
| --- | --- | 
|  10  |  20  | 

フィールド表示名で追加のラベルを使用して、より完全なフィールド名を提供できるようになりました。

あるクエリから設定を抽出して別のクエリに適用する場合は、[クエリ結果から設定] 変換を使用する必要があります。

*例*

入力


| 名前 | 値 | 最大 | 
| --- | --- | --- | 
|  サーバー A  |  10  |  100  | 
|  サーバー B  |  20  |  200  | 
|  サーバー C  |  30  |  300  | 

出力


| サーバー A (設定: 最大=100) | サーバー B (設定: 最大=200) | サーバー C (設定: 最大=300) | 
| --- | --- | --- | 
|  10  |  20  |  30  | 

ソースデータ内の各行が個別のフィールドになります。各フィールドには、最大設定オプションも設定されるようになりました。最小値、最大値、単位、しきい値などのオプションはすべてフィールド設定の一部であり、このような設定を行うと、パネルエディタのオプションペインで手動設定されるオプションではなく、視覚化によって使用されます。

**[時系列の準備]**

時系列の準備変換は、データソースが、使用するパネルでサポートされていない形式で時系列データを返す場合に役立ちます。

この変換は、時系列データをワイド形式からロング形式、またはその逆に変換することで、この問題を解決するのに役立ちます。

**[マルチフレーム時系列]** オプションを選択して、時系列データフレームをワイド形式からロング形式に変換します。

**[ワイド時系列]** オプションを選択して、時系列データフレームをロング形式からワイド形式に変換します。

**[シリーズから行]**

この変換を使用して、複数の時系列データクエリの結果を 1 つの結果にまとめます。これはテーブルパネルの視覚化を使用する場合に役立ちます。

この変換の結果には、時間、メトリクス、値の 3 つの列が含まれます。メトリクス列が追加されると、メトリクスのソースとなるクエリを簡単に確認できます。ソースクエリのラベルを定義して、この値をカスタマイズします。

次の例では、時系列データを返すクエリが 2 つあります。変換を適用する前に、2 つの個別のテーブルとして視覚化されます。

クエリ A


| Time | 温度 | 
| --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  25  | 
|  7/7/2020 午前 10 時 31 分 22 秒  |  22  | 
|  7/7/2020 午前 9 時 30 分 5 秒  |  19  | 

クエリ B


| Time | 湿度 | 
| --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  24  | 
|  7/7/2020 午前 10 時 32 分 20 秒  |  29  | 
|  7/7/2020 午前 9 時 30 分 57 秒  |  33  | 

シリーズから行 変換を適用した後の結果は次のとおりです。


| Time | メトリクス | 値 | 
| --- | --- | --- | 
|  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 分 5 秒  |  温度  |  19  | 

**[並べ替え]**

この変換では、設定されたフィールドで各フレームがソートされます。`reverse` にチェックがついている場合、値は逆の順序で返されます。

**[制限]**

この変換を使用して、表示される行数を制限します。

次の例では、データソースから次のレスポンスがあります。


| Time | メトリクス | 値 | 
| --- | --- | --- | 
|  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 分 5 秒  |  温度  |  19  | 

以下は、値が「3」の制限変換を追加した後の結果です。


| Time | メトリクス | 値 | 
| --- | --- | --- | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  温度  |  25  | 
|  7/7/2020 午前 11 時 34 分 20 秒  |  湿度  |  22  | 
|  7/7/2020 午前 10 時 32 分 20 秒  |  湿度  |  29  | 