SQL ベースの可視化の作成
- クエリの実行先となる ClickHouse 接続 を選択します。
- 必要に応じて ログソース を選択します。これにより、
$__filtersマクロを介してダッシュボードレベルのフィルタをグラフに適用できるようになります。 - エディタで SQL クエリを記述し、クエリパラメータとマクロを使ってダッシュボードの時間範囲やフィルタと連携させます。
- play ボタンをクリックして結果をプレビューし、Save をクリックします。
クエリパラメータ
{paramName:Type} を使用します。
利用可能なパラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
{startDateMilliseconds:Int64} | Int64 | ダッシュボードの日付範囲の開始 (エポックからのミリ秒) |
{endDateMilliseconds:Int64} | Int64 | ダッシュボードの日付範囲の終了 (エポックからのミリ秒) |
{intervalSeconds:Int64} | Int64 | 時間バケットのサイズ (粒度に基づく、秒単位) |
{intervalMilliseconds:Int64} | Int64 | 時間バケットのサイズ (粒度に基づく、ミリ秒単位) |
| パラメータ | 型 | 説明 |
|---|---|---|
{startDateMilliseconds:Int64} | Int64 | ダッシュボードの日付範囲の開始 (エポックからのミリ秒) |
{endDateMilliseconds:Int64} | Int64 | ダッシュボードの日付範囲の終了 (エポックからのミリ秒) |
マクロ
$__ というプレフィックスが付き、クエリが ClickHouse に送信される前に置換されます。
時間境界マクロ
| Macro | Expands to | Column type |
|---|---|---|
$__fromTime | toDateTime(fromUnixTimestamp64Milli({startDateMilliseconds:Int64})) | DateTime |
$__toTime | toDateTime(fromUnixTimestamp64Milli({endDateMilliseconds:Int64})) | DateTime |
$__fromTime_ms | fromUnixTimestamp64Milli({startDateMilliseconds:Int64}) | DateTime64 |
$__toTime_ms | fromUnixTimestamp64Milli({endDateMilliseconds:Int64}) | DateTime64 |
$__interval_s | {intervalSeconds:Int64} | Int64 |
時間フィルターマクロ
WHERE 句のフラグメントを生成します。
| Macro | Description |
|---|---|
$__timeFilter(column) | DateTime カラムをダッシュボードの時間範囲で絞り込みます |
$__timeFilter_ms(column) | DateTime64 (ミリ秒) カラムをダッシュボードの時間範囲で絞り込みます |
$__dateFilter(column) | Date カラムをダッシュボードの時間範囲で絞り込みます |
$__dateTimeFilter(dateCol, timeCol) | 個別の Date カラムと DateTime カラムを使って絞り込みます |
$__dt(dateCol, timeCol) | $__dateTimeFilter のエイリアス |
$__timeFilter(TimestampTime) の展開例:
時間インターバルマクロ
SELECT 句および GROUP BY 句で使用します。利用できるのは、折れ線グラフ と Stacked-bar の可視化のみです。
| Macro | Description |
|---|---|
$__timeInterval(column) | DateTime カラムを intervalSeconds 単位のインターバルにまとめます |
$__timeInterval_ms(column) | DateTime64 カラムを intervalMilliseconds 単位のインターバルにまとめます |
$__timeInterval(TimestampTime) の展開例:
ダッシュボードフィルタ用マクロ
| Macro | Description |
|---|---|
$__filters | ダッシュボードレベルのフィルタ条件に置き換えられます (ログソースを選択している必要があります) |
$__filters は対応する SQL の WHERE 条件に展開されます。ログソースが選択されていない場合、またはフィルタが適用されていない場合は、(1=1) に展開されるため、WHERE 句に含めても常に安全です。
クエリ結果の表示方法
折れ線グラフと積み上げ棒グラフ
| 役割 | カラム型 | 説明 |
|---|---|---|
| タイムスタンプ | 最初の Date または DateTime カラム | x軸として使用されます。 |
| シリーズ値 | すべての数値カラム | 各数値カラムは個別のシリーズとしてプロットされます。通常、これらは集計値です。 |
| グループ名 | String、Map、または Array カラム | 任意です。グループ値が異なる行は、それぞれ別のシリーズとしてプロットされます。 |
円グラフ
| 役割 | カラムの型 | 説明 |
|---|---|---|
| スライスの値 | 最初の数値カラム | 各スライスの大きさを決定します。 |
| スライスのラベル | String、Map、または Array カラム | 任意です。各一意の値がスライスのラベルになります。 |
Number チャート
| ロール | カラムの種類 | 説明 |
|---|---|---|
| Number | 最初の数値カラム | 最初の数値カラムの先頭行の値が表示されます。 |
テーブルチャート
例
必要な system table へのアクセス権以下の例を play-clickstack.clickhouse.com 上で実行する場合は、
otel_v2.otel_logs または otel_v2.otel_traces を指定する必要があります。折れ線グラフ — サービス別の時間ごとのログ件数
ts(DateTime) は、x軸のタイムスタンプとして使用されます。count(数値) は、系列の値としてプロットされます。ServiceName(文字列) は、サービスごとに別々の線として表示されます。
折れ線グラフ — マクロを使う場合
積み上げ棒グラフ — 重大度別エラー数
テーブルチャート — 応答が最も遅いエンドポイント上位10件
円グラフ — サービス別リクエスト分布
request_count(数値) は各スライスの大きさを決定します。ServiceName(文字列) は各スライスのラベルを表します。
Number チャート — エラーの総数
total_errors が表示されます。
注記
- SQL ベースの可視化は
readonlyモードを有効にして実行されるため、SELECTクエリのみ実行できます。 - SQL ベースの可視化では、SQL クエリは必ず 1 つだけ指定する必要があります。複数クエリには対応していません。
- SQL エディタでは、クエリパラメータとマクロの両方でオートコンプリート候補が表示されます。
- SQL ベースの可視化にダッシュボードフィルタを適用するには、ログソースを選択する必要があります。正しくフィルタリングするには、ログソースをクエリ対象のテーブルに一致させる必要があります。