Databricksダッシュボードでパラメータを使ったフィルターを作成する方法

1. はじめに

Databricks でダッシュボードを作成する中で、異なるデータセットに対して、1つのフィルターで絞り込みを行う方法として「パラメータ」を使う場面がありました。
調べながら実装した内容が備忘録として役立ちそうだったため、この記事にまとめています。

2. パラメータとは

Databricks のパラメータは、以下のような特徴を持つ便利な仕組みです。

  • ダッシュボード利用者が値を入力できる変数
  • SQLクエリ内で利用可能
  • 同じクエリを複数ビジュアルで共有できるため、複数データセットの連動フィルタリングに使える

3.今回のゴール

今回は「糖質制限時の毎食メニュー」をテーマに、パラメータを利用した動的フィルターを実装します。
ゴールは次の2点です。

  1. カテゴリ(大)の選択内容に応じて、カテゴリ(小)の候補を動的に絞り込むフィルターを作る

    • カテゴリ大 =【食事カテゴリ】(例:主食、野菜、魚料理など)
    • カテゴリ小 =【メニュー】(例:ライス、パン、キャベツなど)
      →例えば、ユーザが「主食」を選択したら「パン」「ライス」など該当メニューのみを候補に表示する
  2. フィルターで選択した値に応じて、異なるデータセットを参照する複数ビジュアルを同時に絞り込む

    • 今回の対象ビジュアル
      ①日毎の合計糖質量、②食事ごとの糖質量、③カテゴリごとの糖質量
      スクリーンショット 2025-12-11 17.29.36.png

4. 前提条件

可視化に使用するデータテーブルはすでに作成ずみとして説明からは省略させていただきます。
今回は次のようなテーブルを利用しています。
スクリーンショット 2025-12-09 16.48.10.png

5. 作成手順

今回は下記の手順で作成します。

  1. 食品カテゴリ(カテゴリ大)のフィルター
  2. メニュー(カテゴリ小)のフィルター
  3. 異なるデータセットを使うビジュアル側の設定
  4. パラメータとフィルターの紐付け

5-1. 食品カテゴリフィルターの作成

  • まずfood_menuテーブルからカテゴリ一覧を取得するクエリを作成します。
    スクリーンショット 2025-12-09 14.26.15.png

  • フィルターの配置
    ダッシュボード画面の「フィルタ(フィールド・パラメータ)の追加」からフィルタービジュアルを追加し、フィールドには先ほど作成した「食品カテゴリ」のデータセットのcategoryを指定します。
    スクリーンショット 2025-12-09 18.08.56.png

5-2. メニューフィルターの作成

  • パラメータを利用したデータセットの作成
    メニューは、ユーザが選択した食品カテゴリに応じて動的に変わる必要があるため、SQL内でパラメータを利用します。
    「パラメータを追加」を押し、歯車アイコンで下記を設定します。

    • 任意のパラメータの名称
    • 型(String、Date、Date and Time、Numeric がサポートされています。)
      今回はすべてstring型を指定します

    歯車アイコンを閉じ、パラメータ名の下にあるテキストフィールドに下記の規定値を入力します。

    • デフォルト値:すべて(食品カテゴリが未選択の場合はフィルターをかけないため)

スクリーンショット 2025-12-10 17.57.40.png

  • フィルターの配置
    先ほどと同様にフィルタービジュアルを追加し、フィールドに「メニュー」データセットのitemを指定します。
    メニューフィルターでは、複数選択ができるようにするため、フィルタの設定は「複数の値」にセットします。
    スクリーンショット 2025-12-11 9.52.07.png

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

結果例:食事カテゴリを「主食」にした場合、メニューは「ライス」と「低糖質パン」のみに絞り込まれるようになりました。
スクリーンショット 2025-12-11 9.50.43.png

現状は、食事カテゴリーで選択した値がメニューフィルターに適用されるのみで、他のビジュアルのデータは絞り込まれていない状態です。
各ビジュアルに使用するデータセットでのパラメータの設定とフィルターの紐付けを同様に行なっていきます。

5-3. 異なるデータセットのデータビジュアルを作成

(a)日付ごとの糖質合計量のデータセット(①テーブル)
食品カテゴリ・メニューの両方で絞り込みたいため、今回はcategoryitemの2種類のパラメータを設定します。

  • categoryのパラメータはメニューフィルターで作成したものと同様に記述します。
  • メニューは複数選択ができるようにするため、itemのパラメータ設定時に歯車アイコンにある「複数選択可能です」にチェックを入れます。
    クエリ内では、ARRAY_CONTAINS関数を含める必要があります。
    array_contains(:item, 'すべて')とすることで、メニューフィルターでメニューの選択をしていないときは「すべて」という選択を行なっている状態にしてデータをフィルターしない設定になります。
    スクリーンショット 2025-12-11 14.32.59.png

(b)日々の食事のデータセット(②ドーナツグラフ・③棒グラフ)
(a) と同様、category と item のパラメータを設定したデータセットを用意します。
スクリーンショット 2025-12-11 14.40.47.png

(c)ダッシュボード上にビジュアルを作成
作成したデータセットを利用して、必要なビジュアルを配置します。
スクリーンショット 2025-12-11 14.46.03.png

5-4. フィルターとパラメータの紐付け

  • 食事カテゴリフィルター → 各ビジュアルのcategoryパラメータへ紐づけ
    結果例:食事カテゴリで「野菜」を選択すると「野菜」関連のデータにビジュアルが絞り込まれる
    スクリーンショット 2025-12-11 16.15.47.png

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

これで、実装完了です!

6. まとめ

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

この記事を書いた人

aws-recipe-user