1. はじめに
Databricks でダッシュボードを作成する中で、異なるデータセットに対して、1つのフィルターで絞り込みを行う方法として「パラメータ」を使う場面がありました。
調べながら実装した内容が備忘録として役立ちそうだったため、この記事にまとめています。
2. パラメータとは
Databricks のパラメータは、以下のような特徴を持つ便利な仕組みです。
- ダッシュボード利用者が値を入力できる変数
- SQLクエリ内で利用可能
- 同じクエリを複数ビジュアルで共有できるため、複数データセットの連動フィルタリングに使える
3.今回のゴール
今回は「糖質制限時の毎食メニュー」をテーマに、パラメータを利用した動的フィルターを実装します。
ゴールは次の2点です。
-
カテゴリ(大)の選択内容に応じて、カテゴリ(小)の候補を動的に絞り込むフィルターを作る
- カテゴリ大 =【食事カテゴリ】(例:主食、野菜、魚料理など)
- カテゴリ小 =【メニュー】(例:ライス、パン、キャベツなど)
→例えば、ユーザが「主食」を選択したら「パン」「ライス」など該当メニューのみを候補に表示する
-
フィルターで選択した値に応じて、異なるデータセットを参照する複数ビジュアルを同時に絞り込む
4. 前提条件
可視化に使用するデータテーブルはすでに作成ずみとして説明からは省略させていただきます。
今回は次のようなテーブルを利用しています。

5. 作成手順
今回は下記の手順で作成します。
- 食品カテゴリ(カテゴリ大)のフィルター
- メニュー(カテゴリ小)のフィルター
- 異なるデータセットを使うビジュアル側の設定
- パラメータとフィルターの紐付け
5-1. 食品カテゴリフィルターの作成
-
フィルターの配置
ダッシュボード画面の「フィルタ(フィールド・パラメータ)の追加」からフィルタービジュアルを追加し、フィールドには先ほど作成した「食品カテゴリ」のデータセットのcategoryを指定します。

5-2. メニューフィルターの作成
-
パラメータを利用したデータセットの作成
メニューは、ユーザが選択した食品カテゴリに応じて動的に変わる必要があるため、SQL内でパラメータを利用します。
「パラメータを追加」を押し、歯車アイコンで下記を設定します。- 任意のパラメータの名称
- 型(String、Date、Date and Time、Numeric がサポートされています。)
今回はすべてstring型を指定します
歯車アイコンを閉じ、パラメータ名の下にあるテキストフィールドに下記の規定値を入力します。
- デフォルト値:
すべて(食品カテゴリが未選択の場合はフィルターをかけないため)
- フィルターの配置
先ほどと同様にフィルタービジュアルを追加し、フィールドに「メニュー」データセットのitemを指定します。
メニューフィルターでは、複数選択ができるようにするため、フィルタの設定は「複数の値」にセットします。

カテゴリフィルターで選択された値を、このメニューフィルターへ反映するために、パラメータを紐づけます。
→先ほど作成した「食事カテゴリ」のフィルターにパラメータを設定します。

結果例:食事カテゴリを「主食」にした場合、メニューは「ライス」と「低糖質パン」のみに絞り込まれるようになりました。

現状は、食事カテゴリーで選択した値がメニューフィルターに適用されるのみで、他のビジュアルのデータは絞り込まれていない状態です。
各ビジュアルに使用するデータセットでのパラメータの設定とフィルターの紐付けを同様に行なっていきます。
5-3. 異なるデータセットのデータビジュアルを作成
(a)日付ごとの糖質合計量のデータセット(①テーブル)
食品カテゴリ・メニューの両方で絞り込みたいため、今回はcategoryとitemの2種類のパラメータを設定します。
- categoryのパラメータはメニューフィルターで作成したものと同様に記述します。
- メニューは複数選択ができるようにするため、itemのパラメータ設定時に歯車アイコンにある「複数選択可能です」にチェックを入れます。
クエリ内では、ARRAY_CONTAINS関数を含める必要があります。
array_contains(:item, 'すべて')とすることで、メニューフィルターでメニューの選択をしていないときは「すべて」という選択を行なっている状態にしてデータをフィルターしない設定になります。

(b)日々の食事のデータセット(②ドーナツグラフ・③棒グラフ)
(a) と同様、category と item のパラメータを設定したデータセットを用意します。

(c)ダッシュボード上にビジュアルを作成
作成したデータセットを利用して、必要なビジュアルを配置します。

5-4. フィルターとパラメータの紐付け
-
食事カテゴリフィルター → 各ビジュアルの
categoryパラメータへ紐づけ
結果例:食事カテゴリで「野菜」を選択すると「野菜」関連のデータにビジュアルが絞り込まれる

-
メニューフィルター → 各ビジュアルの
itemパラメータへ紐づけ
結果例:メニューで「キャベツ・トマト・ハッシュドポテト」を選択するとさらにビジュアルが絞り込まれる

これで、実装完了です!
6. まとめ
Databricksのダッシュボードは機能がシンプルで、前段のSQlで柔軟にデータ加工ができる点が非常に使いやすいと感じました。
パラメータを使えば、異なるデータセットに対して1つのフィルターで連動した絞り込みができ、実用的なダッシュボードが構築できます。
同じような実装を検討されている方の参考になれば幸いです。



