Superset ダッシュボードの構築
このページは、IoT フリート監視パイプラインチュートリアルのステップ7の詳細な補足資料です
目的
このページは、IoT フリート監視パイプライン チュートリアルのステップ7の詳細な補足資料です。このページでは、フリート監視ダッシュボードの各パネルの仮想データセットと正確なチャート構成を提供します。
Superset は Trino を通じて Lakehouse にクエリを実行します。このページのすべての SQL は Trino 方言 です。Superset をまだデプロイしていない場合は、まず Deploy Apache Superset に従ってください。
構築する完成したダッシュボード:
ts の解析について。 プロデューサは ts を ISO-8601 形式の文字列として出力します。テーブルの列が VARCHAR の場合、すべてのクエリは from_iso8601_timestamp(ts) でそれを解析します。Lakehouse Manager で列を実際の TIMESTAMP に設定した場合、解析を削除して ts を直接使用できます。いずれにせよ、解析された時系列列を Superset のデータセットの主要な時系列列としてマークしてください。そうすることで、時間フィルタと時系列チャートが正しく動作します。
解析不能な行への対策。 テストメッセージが ts が有効なタイムスタンプでないレコードを残した場合(例: device_id = 'local-test')、from_iso8601_timestamp は INVALID_FUNCTION_ARGUMENT: Invalid format をスローします。以下のクエリでは、解析を try() でラップすることで、その行は null に解決され、フィルタリングされます。クリーンな修正は、DELETE FROM iot_readings WHERE device_id = 'local-test' で一度削除することです。その後、try() ラッパーはオプションです。
セットアップ
- Trino をデータベースとして接続 します。Superset の Settings > Database Connections > + で行います。SQLAlchemy URI は
trino://<user>@<trino-host>:<port>/<catalog>の形式です。接続をテストしてから進めてください。 - 物理データセット
iot_readingsを Datasets > + で追加します。カタログ、スキーマ、テーブルを選択します。 - 以下の仮想データセット を SQL Lab で作成します(クエリを実行し、次に Save > Save dataset を選択します)。「デバイスごとの現在の状態」ロジックは複数のチャートで再利用されるため、一度
iot_current_stateとして保存します。
iot_current_state 仮想データセット
このデータセットは、各デバイスの最新行を返します。複数のパネルで利用されます。iot_current_state として保存します。
内部の try() に加え、WHERE ts_parsed IS NOT NULL は解析不能な行を削除します。これにより、悪い行が row_number() の並べ替えに勝ち、デバイスの現在の状態として扱われるのを防ぎます。
パネル1: KPI 行
ダッシュボードの上部に4つのヘッドラインの Big Number チャート。
デバイスオンライン 仮想データセットを保存します:
「オンライン」とは、過去2分間に報告されたことを意味します。これがオフラインデバイスがカウントから外れる方法です。カウントするためのOFFLINE行はなく、最近の行の欠如のみです。
パネル2: フリートヘルスドーナツ
フリート全体の現在のステータス分布、デバイスごとに1つのスライス。
- チャートタイプ: Pie / Donut
- データセット:
iot_current_state - 次元:
status。メトリクス:COUNT(DISTINCT device_id) - 推奨カラー: OKは緑、DEGRADEDはアンバー、FAULTは赤。
OFFLINEはここにはめったに表示されません。オフラインデバイスは発信を停止するため、現在の状態から外れます。パネル5を参照してください。
パネル3: バッテリーレベル
「予測できたはずの」チャート、最もリスクの高いデバイスが最初に並べ替えられます。
- チャートタイプ: Bar Chart。カスタマイズで Bar Orientation を Horizontal に設定します。
- データセット:
iot_current_state - X軸:
device_id。メトリクス:MAX(battery_pct)。次元は空のままにします。 MAX(battery_pct)で昇順に並べ替え、行の制限を15に設定します。
15%の故障トリガーの閾値線は、カテゴリ型のバーチャートでは利用できません。アノテーションレイヤーは時系列チャートのみに存在します。閾値を伝えるには、昇順の並べ替えに依存して最も低いバッテリーが明確になるようにするか、代わりにテーブルとして構築し、Customize > Conditional formatting を使用して15未満のMAX(battery_pct)を赤に着色します。
バーチャートでは、カテゴリをX軸に配置し、次元ボックスを空のままにします。次元は、各バーをサブシリーズに分割するためだけです。ここではそれを望んでいません。
パネル4: 読み取り値のトレンド
ヘッドラインのトレンド: 時間を通じた平均メトリクス、サイトまたは地域でスライス可能。
- チャートタイプ: Line Chart(時系列)
- データセット: 解析された
ts(トップの解析ノートを参照)が時系列列であるデータセット。try(from_iso8601_timestamp(ts)) AS tsを公開する仮想データセットを作成し、主要な時系列列としてマークします。 - 時間粒度: 1分(または30秒)
- X軸:
ts。メトリクス:AVG(co2),AVG(pm25),AVG(temperature)。次元:siteを1つのサイトごとに1つの行にします。 regionとdevice_typeにダッシュボードフィルタを追加します。
CO₂値(約480)は、共有軸上で温度(約21)とPM2.5(約9)を圧倒します。すべての3つが読み取れるようにするには、CO₂を別々にチャート化するか、小さなメトリクスを二次Y軸に配置します。
デバイスごとの異常値のクローズアップを表示するには、このチャートを複製し、シリーズ次元をdevice_idに設定し、スクリプト化されたデバイスのいずれかにフィルタリングします:
パネル5: ダウンタイムテーブル
真のダウンタイムを検出します: 発信を停止したため、最新の読み取り値が古いデバイス。
- チャートタイプ: Table
- データセット: 以下の仮想データセット
このデータセットを保存します。これは、各デバイスの最後の読み取りからの時間を返すため、パネルは空になりません:
次に、テーブルチャートで Customize > Conditional formatting を使用して、seconds_since_last が30を超える場合に赤に着色します。
30秒の閾値は、5秒間隔の発信を想定しています。約6サイクルが欠けているデバイスはダウンと見なされます。好みに合わせて調整してください。ダウンデバイスのみをリスト表示したい場合は、クエリに HAVING date_diff('second', max(try(from_iso8601_timestamp(ts))), current_timestamp) > 30 を追加します。このバージョンはフリートが健全な場合に空になります。これはライブデモで壊れているように見えることがあります。
パネル6: エラーコードの内訳
ウィンドウ内で発生する種類の故障。
- チャートタイプ: Bar Chart
- データセット:
iot_readings - X軸:
error_code。メトリクス:COUNT(*)。次元は空のままにします。 - フィルタ:
error_code <> 'NONE'と時間範囲を過去15分に設定します。
パネル7: サイトごとの読み取り値
フリート全体の環境読み取り値を比較します。
- チャートタイプ: Bar Chart
- データセット:
iot_current_state - X軸:
site(またはregion)。メトリクス:AVG(co2),AVG(pm25)。次元は空のままにします。
パネル4と同様に、CO₂はPM2.5を共有軸上で圧倒します。両方を読み取れるようにするには、それらを別々にチャート化するか、二次Y軸を使用します。
ダッシュボードレイアウト
7つのパネルの実用的な配置:
region、site、device_type、および時間範囲のダッシュボードフィルターを追加します。ダッシュボードの自動更新間隔を30秒に設定してください(ダッシュボードの編集の下)で、ライブ感を得られます。
スクリプトされた障害が進行するにつれて、ダッシュボードは全体のストーリーを通過します: 健全なフリート、デバイスの劣化と故障、ダウンタイムテーブルに現れ、トレンドのギャップとして現れるダウンタイムのウィンドウ、そして最後に、デバイスを通常状態に戻す修理です。
さらに進む
当社のソリューションを実装するためのトレーニングや技術支援が必要な場合は、営業担当者にお問い合わせください、またはこのリンクをクリックして、当社のプロフェッショナルサービスの専門家にプロジェクトのカスタム分析を依頼し、見積もりを受け取ってください。
Data Platformを構築するチームと直接やり取りし、質問をする、フィードバックを提供する、専用のDiscordチャネルに参加してください。
OVHcloudサービスについてサポートが必要な場合は、ヘルプセンターでリクエストを作成してください。
ユーザーコミュニティに参加してください。

