はじめに
複数のダッシュボードを連携させ、詳細データへドリルダウンするために欠かせないのが「Data Links」機能です。しかし、いざ実装しようとすると「条件によってリンクを消したい」「値がない時の挙動を制御したい」といった壁にぶつかります。
本記事では、Data Linksの仕様上の制約と、それを現場でどう回避するかという実践的なテクニックを紹介します。
1. Data Linksの基本仕様と「条件分岐」の壁
Data Linksは非常に強力ですが、以下の重要な制約があります。
- ロジックの埋め込み不可: リンクのURLに変数(Variables)を仕込むことはできますが、「値がAの時だけリンクを表示する」といったif-else的な出し分けは現在できません。
- 強制リンク化: フィールドにData Linkを設定すると、そのカラムのすべての値がハイパーリンクとして扱われます。
2. Value Mappingとの使い分け
「値に応じて表示を変える」機能として Value Mapping がありますが、ここでも注意点があります。
- 変数の非対応: Value Mapping内ではダッシュボード変数を利用できません。
-
使い分けの指針:
- 表示内容(テキストや色)を変えるなら → Value Mapping
- 変数(IDや期間)を引き継いで画面遷移させるなら → Data Links
3. 現場で役立つ「リンク切れ・無効値」への対策テクニック
データが null や空の場合でもData Linkは有効になってしまいます。その際、クリックしても「正しく遷移できない」あるいは「不自然な画面に飛ぶ」のを防ぐための回避策を紹介します。
パターンA:ダッシュボード自身を遷移先に設定する(推奨)
値がない場合に「どこにも飛ばさない(現在の画面を維持する)」ための最もスマートな方法です。
- 設定内容: Data LinkのURLに、現在開いているダッシュボードのURLを設定します。
-
変数の付与: そのURLの末尾に
&var-myvar=${__value.raw}のように変数を付加します。 -
メリット:
- データがある時は期待通り変数を更新して遷移(またはリロード)します。
- データが
nullの時でも、新しいタブで開いた際に「Home」に飛ばされることなく、同じダッシュボードを維持できます。 - データソースが正常に動作している時も挙動が安定します。
パターンB:null を # に置換する
-
挙動: URLを
#(ページ内アンカー)に設定する方法です。 - 欠点: 同一タブ内では「何もしない」動きになりますが、ユーザーが「新しいタブで開く」を選択した場合、Grafanaのホーム画面に飛ばされてしまうため、あまり推奨されません。
4. 変数の引き継ぎ:${__value.raw} の活用
リンク先で正しくフィルタリングを効かせるためには、変数の渡し方が重要です。
-
${__value.raw}: 表示用に加工されたテキストではなく、生の値(IDなど)を渡す際に使用します。 -
URL構成例:
/d/xxxx/my-dashboard?var-id=${__value.raw}&from=${__from}&to=${__to}-
fromやtoも引き継ぐことで、時間軸を維持したシームレスな分析が可能になります。
-
まとめ
- Data Linksにロジックは書けないため、設計でカバーする。
- null対策は「自ダッシュボードへのリンク+変数付与」が、ユーザー体験(UX)として最も安定する。
- Value Mappingと役割を明確に分担させる。
Data Linksをマスターすることで、点在するダッシュボードが「一つのアプリケーション」のように繋がり、運用効率が劇的に向上します。