クエリビルダー
任意のクエリは ClickHouse プラグインで実行できます。 クエリビルダーはシンプルなクエリの便利なオプションですが、複雑なクエリには SQL Editor を使用する必要があります。
クエリビルダー内のすべてのクエリには クエリタイプ があり、少なくとも1つのカラムを選択する必要があります。
利用可能なクエリタイプは次のとおりです:
- テーブル:テーブル形式でデータを表示するための最もシンプルなクエリタイプ。集約関数を含むシンプルおよび複雑なクエリのキャッチオールとしてもうまく機能します。
- ログ:ログ用にクエリを構築するために最適化されています。defaults configured に基づいて、エクスプロールビューで最適に動作します。
- 時系列:時系列クエリの構築に最適です。専用の時間カラムを選択し、集約関数を追加することができます。
- トレース:トレースの検索/表示に最適化されています。defaults configured に基づいて、エクスプロールビューで最適に動作します。
- SQL Editor:クエリを完全に制御したい場合に使用できます。このモードでは、任意の SQL クエリを実行できます。
クエリタイプ
クエリタイプ 設定は、構築中のクエリのタイプに合わせてクエリビルダーのレイアウトを変更します。 クエリタイプは、データを視覚化する際に使用されるパネルも決定します。
テーブル
最も柔軟なクエリタイプはテーブルクエリです。これは、シンプルおよび集約クエリを処理するために設計された他のクエリビルダーのキャッチオールです。
| フィールド | 説明 |
|---|---|
| ビルダーモード | シンプルなクエリは集計やグループバイを除外し、集約クエリはこれらのオプションを含みます。 |
| カラム | 選択されたカラム。関数やカラムエイリアスを使用できるように、このフィールドに生の SQL を入力できます。 |
| 集約 | 集約関数 のリスト。関数とカラムに対してカスタム値を許可します。集約モードでのみ表示されます。 |
| グループバイ | GROUP BY 式のリスト。集約モードでのみ表示されます。 |
| オーダーバイ | ORDER BY 式のリスト。 |
| リミット | クエリの最後に LIMIT ステートメントを追加します。0 に設定されている場合は除外されます。一部の視覚化では、すべてのデータを表示するためにこれを 0 に設定する必要があるかもしれません。 |
| フィルター | WHERE 句に適用されるフィルターのリスト。 |

このクエリタイプはデータをテーブルとして描画します。
ログ
ログクエリタイプは、ログデータをクエリするために焦点を当てたクエリビルダーを提供します。 データソースの ログ設定 にデフォルトを設定することで、クエリビルダーをデフォルトのデータベース/テーブルとカラムで事前読み込みすることができます。 OpenTelemetry を有効にすると、スキーマバージョンに応じてカラムを自動選択することもできます。
デフォルトで Time と Level フィルターが追加され、時間カラムのオーダーバイが設定されています。
これらのフィルターはそれぞれのフィールドに紐付いており、カラムが変更されると更新されます。
Level フィルターはデフォルトで SQL から除外されており、IS ANYTHING オプションから変更すると有効になります。
ログクエリタイプは データリンク をサポートしています。
| フィールド | 説明 |
|---|---|
| OTel を使用 | OpenTelemetry カラムを有効にします。選択されたカラムを、選択された OTel スキーマバージョンによって定義されたカラムを使用するように上書きします(カラム選択を無効にします)。 |
| カラム | ログ行に追加される追加カラム。関数やカラムエイリアスを使用できるように、このフィールドに生の SQL を入力できます。 |
| 時間 | ログの主要なタイムスタンプカラム。時間に似た型を表示しますが、カスタム値/関数を許可します。 |
| ログレベル | オプション。ログの level または severity。値は通常 INFO、error、Debug などに見えます。 |
| メッセージ | ログメッセージの内容。 |
| オーダーバイ | ORDER BY 式のリスト。 |
| リミット | クエリの最後に LIMIT ステートメントを追加します。0 に設定されている場合は除外されますが、大きなログデータセットには推奨されません。 |
| フィルター | WHERE 句に適用されるフィルターのリスト。 |
| メッセージフィルター | LIKE %value% を使用してログを便利にフィルターするためのテキスト入力。入力が空の場合は除外されます。 |

このクエリタイプは、ログパネルおよび上部のログヒストグラムパネルでデータを描画します。
クエリで選択された追加カラムは、展開されたログ行で表示できます:

時系列
時系列クエリタイプは、テーブル と似ていますが、時系列データに焦点を当てています。
2つのビューはほぼ同じですが、以下の顕著な違いがあります:
- 専用の Time フィールド。
- 集約モードでは、時間インターバルマクロが自動的に適用され、時間フィールドのグループバイも追加されます。
- 集約モードでは、"Columns" フィールドは非表示です。
- 時間範囲フィルターとオーダーバイが Time フィールドに自動的に追加されます。
場合によっては、時系列パネルが切り取られて表示されることがあります。デフォルトではリミットが 1000 になっています。
データセットが許可されている場合、LIMIT 句を 0 に設定して削除してみてください。
| フィールド | 説明 |
|---|---|
| ビルダーモード | シンプルなクエリは集計やグループバイを除外し、集約クエリはこれらのオプションを含みます。 |
| 時間 | クエリの主要な時間カラム。時間に似た型を表示しますが、カスタム値/関数を許可します。 |
| カラム | 選択されたカラム。関数やカラムエイリアスを使用できるように、このフィールドに生の SQL を入力できます。シンプルモードでのみ表示されます。 |
| 集約 | 集約関数 のリスト。関数とカラムに対してカスタム値を許可します。集約モードでのみ表示されます。 |
| グループバイ | GROUP BY 式のリスト。集約モードでのみ表示されます。 |
| オーダーバイ | ORDER BY 式のリスト。 |
| リミット | クエリの最後に LIMIT ステートメントを追加します。0 に設定されている場合は除外されます。これは、フルビジュアリゼーションを表示するために一部の時系列データセットで推奨されます。 |
| フィルター | WHERE 句に適用されるフィルターのリスト。 |

このクエリタイプは、時系列パネルでデータを描画します。
トレース
トレースクエリタイプは、トレースを簡単に検索および表示するためのクエリビルダーを提供します。 OpenTelemetry データ用に設計されていますが、異なるスキーマからトレースを描画するためにカラムを選択することができます。 データソースの トレース設定 にデフォルトを設定することで、クエリビルダーをデフォルトのデータベース/テーブルとカラムで事前読み込みすることができます。デフォルトが設定されている場合、カラム選択はデフォルトで折りたたまれます。 OpenTelemetry を有効にすると、スキーマバージョンに応じてカラムを自動選択することもできます。
デフォルトフィルターは、最上位のスパンのみを表示することを目的として追加されます。
時間および経過時間カラムのオーダーバイも含まれています。
これらのフィルターはそれぞれのフィールドに紐付いており、カラムが変更されると更新されます。
Service Name フィルターはデフォルトで SQL から除外されており、IS ANYTHING オプションから変更すると有効になります。
トレースクエリタイプは データリンク をサポートしています。
| フィールド | 説明 |
|---|---|
| トレースモード | クエリをトレース検索からトレース ID ルックアップに変更します。 |
| OTel を使用 | OpenTelemetry カラムを有効にします。選択されたカラムを、選択された OTel スキーマバージョンによって定義されたカラムを使用するように上書きします(カラム選択を無効にします)。 |
| トレース ID カラム | トレースの ID。 |
| スパン ID カラム | スパン ID。 |
| 親スパン ID カラム | 親スパン ID。通常、最上位のトレースでは空です。 |
| サービ名称カラム | サービス名。 |
| 操作名カラム | 操作名。 |
| 開始時間カラム | トレーススパンの主要な時間カラム。スパンが開始された時間。 |
| 経過時間カラム | スパンの時間。デフォルトでは、Grafana はこれをミリ秒単位の float で期待します。Duration Unit ドロップダウンを介して自動的に変換されます。 |
| 時間の単位 | 経過時間に使用される時間の単位。デフォルトではナノ秒です。選択された単位は、Grafana に必要なミリ秒の float に変換されます。 |
| タグカラム | スパンタグ。特定のマップカラムタイプを期待する OTel ベースのスキーマを使用しない場合は除外します。 |
| サービスタグカラム | サービスタグ。特定のマップカラムタイプを期待する OTel ベースのスキーマを使用しない場合は除外します。 |
| オーダーバイ | ORDER BY 式のリスト。 |
| リミット | クエリの最後に LIMIT ステートメントを追加します。0 に設定されている場合は除外されますが、大きなトレースデータセットには推奨されません。 |
| フィルター | WHERE 句に適用されるフィルターのリスト。 |
| トレース ID | フィルターのためのトレース ID。トレース ID モードでのみ使用され、トレース ID データリンク を開くときに使用されます。 |

このクエリタイプは、トレース検索モードのためのテーブルビューでデータを描画し、トレース ID モードではトレースパネルを描画します。
SQLエディター
クエリビルダーでは扱いきれないほど複雑なクエリの場合、SQLエディターを使用できます。 これにより、プレーンな ClickHouse SQL を記述して実行する完全な制御が可能になります。
SQLエディターは、クエリエディターの上部で「SQL Editor」を選択することで開くことができます。
マクロ関数もこのモードで使用できます。
クエリタイプを切り替えることで、クエリに最も適した可視化を取得できます。 この切り替えは、ダッシュボードビューでも影響を与え、特に時系列データにおいて顕著です。

データリンク
Grafana データリンク を使用して新しいクエリにリンクできます。 この機能は、トレースをログにリンクするために ClickHouse プラグイン内で有効にされています。ログとトレースの両方に OpenTelemetry が設定されている場合に最も効果的です。データソースの設定 に基づく。
テーブル内のトレースリンクの例

ログ内のトレースリンクの例

データリンクの作成方法
クエリで traceID という名前のカラムを選択することでデータリンクを作成できます。この名前はケースインセンシティブであり、「ID」の前にアンダースコアを追加することもサポートしています。例えば、traceId、TraceId、TRACE_ID、tracE_iD はすべて有効です。
ログ または トレース クエリで OpenTelemetry が有効になっている場合、トレース ID カラムが自動的に含まれます。
トレース ID カラムを含めることで、"View Trace" と "View Logs" のリンクがデータに付加されます。
リンク機能
データリンクがあることで、提供されたトレース ID を使用してトレースやログを開くことができます。
"View Trace" を選択すると、トレースのスプリットパネルが開き、"View Logs" を選択するとトレース ID でフィルタリングされたログクエリが開きます。 ダッシュボードからクリックした場合、リンクはエクスプロールビューの新しいタブで開かれます。
ログ と トレース の両方にデフォルトの設定がされていることが、クエリタイプを越えて(ログからトレース、トレースからログへの)必要です。クエリの同じタイプのリンクを開くときは、クエリが単にコピーできるため、デフォルトは必要ありません。
ログクエリ(左パネル)からトレース(右パネル)を表示する例

マクロ
マクロは、クエリにダイナミックな SQL を追加する簡単な方法です。 クエリが ClickHouse サーバーに送信される前に、プラグインはマクロを展開し、完全な式に置き換えます。
SQL エディターとクエリビルダーの両方からのクエリは、マクロを使用できます。
マクロの使用
マクロは、クエリ内のいつでも、必要に応じて複数回含めることができます。
以下は、$__timeFilter マクロを使用した例です:
入力:
最終クエリの出力:
この例では、Grafana ダッシュボードの時間範囲が log_time カラムに適用されます。
プラグインは、波括弧 {} を使用した表記法もサポートしています。この表記法は、パラメーター が必要な場合に使用します。
マクロのリスト
これは、プラグインで利用可能なすべてのマクロのリストです:
| マクロ | 説明 | 出力例 |
|---|---|---|
$__dateFilter(columnName) | 提供されたカラムの範囲フィルターに置き換えられ、Grafana パネルの時間範囲を Date として使用します。 | columnName >= toDate('2022-10-21') AND columnName <= toDate('2022-10-23') |
$__timeFilter(columnName) | 提供されたカラムの範囲フィルターに置き換えられ、Grafana パネルの時間範囲を DateTime として使用します。 | columnName >= toDateTime(1415792726) AND time <= toDateTime(1447328726) |
$__timeFilter_ms(columnName) | 提供されたカラムの範囲フィルターに置き換えられ、Grafana パネルの時間範囲を DateTime64 として使用します。 | columnName >= fromUnixTimestamp64Milli(1415792726123) AND columnName <= fromUnixTimestamp64Milli(1447328726456) |
$__dateTimeFilter(dateColumn, timeColumn) | $__dateFilter() と $__timeFilter() を短縮して組み合わせ、別々の Date と DateTime カラムを使用します。エイリアス $__dt() | $__dateFilter(dateColumn) AND $__timeFilter(timeColumn) |
$__fromTime | Grafana パネル範囲の開始時間を DateTime にキャストして置き換えます。 | toDateTime(1415792726) |
$__fromTime_ms | パネル範囲の開始時間を DateTime64 にキャストして置き換えます。 | fromUnixTimestamp64Milli(1415792726123) |
$__toTime | Grafana パネル範囲の終了時間を DateTime にキャストして置き換えます。 | toDateTime(1447328726) |
$__toTime_ms | パネル範囲の終了時間を DateTime64 にキャストして置き換えます。 | fromUnixTimestamp64Milli(1447328726456) |
$__timeInterval(columnName) | ウィンドウサイズに基づいてインターバルを計算する関数に置き換えます。 | toStartOfInterval(toDateTime(columnName), INTERVAL 20 second) |
$__timeInterval_ms(columnName) | ウィンドウサイズに基づいてミリ秒単位でインターバルを計算する関数に置き換えます。 | toStartOfInterval(toDateTime64(columnName, 3), INTERVAL 20 millisecond) |
$__interval_s | ダッシュボードインターバルを秒単位で置き換えます。 | 20 |
$__conditionalAll(condition, $templateVar) | テンプレート変数がすべての値を選択しない場合、最初のパラメーターに置き換えます。テンプレート変数がすべての値を選択している場合は、1=1 に置き換えられます。 | condition または 1=1 |