0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Metabase入門②】Field Filterとは?設定方法・変数との違い

0
Posted at

Field Filterとは?設定方法・変数との違いを解説

「Field Filterって普通の変数と何が違うのか?」

Metabaseを使い始めたとき、私が一番分からなかったのが Field Filter でした。

{{}} は分かるけど、Field Filterだけ設定項目が多い…。
「テーブル?カラム?Widget?」と最初は戸惑った記憶があります。

この記事では、Field Filterの仕組みから設定方法、実務での使いどころまで初心者向けに解説します。


前回のおさらい

前回の記事では、Metabase独自のSQL構文である

  • {{}}
  • [[ ]]
  • Optional Clause

について紹介しました。

まだ読んでいない方はこちらからどうぞ。

【Metabase入門①】SQLを書くときに最初に覚えたい {{}} と [[ ]]

今回は、その中でも実務で最も利用することが多い Field Filter を詳しく見ていきます。


Field Filterとは?

まずは普通の変数との違いを見てみます。

普通の変数なら、このように書きます。

SELECT *
FROM ORDERS
WHERE USER_ID = {{user_id}}

この場合、{{user_id}} には入力した値がそのまま入ります。

一方、Field Filterは書き方が少し異なります。

SELECT *
FROM ORDERS
WHERE {{created_at}}

「created_at = が無いの?」と思った方もいるかもしれません。

実はこれがField Filterの特徴です。

Field Filterでは、比較演算子(= や BETWEEN など)をMetabaseが自動で組み立ててくれるため、WHERE {{created_at}} のように条件式を書くだけで利用できます。

クエリプレビューを見ると、実際にどのようなSQLへ変換されるか確認できます。

スクリーンショット (808).png


普通の変数との違い

Field Filterと通常の変数の違いをまとめると次のようになります。

項目 Text / Number / Date Field Filter
入力値をそのままSQLへ渡す ○ ×
カラムとの紐付け × ○
ドロップダウン表示 × ○
日付範囲検索 △ ○
Dashboardフィルター連携 △ ◎
MetabaseがSQLを自動生成 × ○

Field Filterは「値」を渡すというよりも、

"どのカラムをどの条件で検索するか" をMetabaseに任せる仕組み

と言った方がイメージしやすいかもしれません。


Field Filterの設定方法

Field Filterを利用するには、変数の種類を Field Filter に変更します。

スクリーンショット (809).png

すると、通常の変数には無い設定項目が表示されます。

これらを設定することで、Metabaseがどのカラムを検索対象にするか判断できるようになります。


テーブル・カラムを紐付ける

ここが一番重要な設定です。

Field Filterでは

  • 対象テーブル
  • 対象カラム

を指定する必要があります。

例えば

Table:Orders
Field:Created At

のように設定します。

この設定が無いと、Metabaseはどのカラムを検索すればよいか分からないため、Field Filterは正しく動作しません。

(809).png


Widgetとは?

Widgetは、画面上でどのように入力させるかを決める設定です。

例えば日付なら

  • Single Date
    • 検索したい日付を指定できる
  • Date Range
    • 開始日と終了日を指定する

スクリーンショット (826).png

文字列なら

  • Search Box
    • 値を自由に入力する
  • Dropdown
    • 候補一覧から選択する

スクリーンショット (825).png

などを選択できます。


クエリプレビューを見てみる

Field FilterはSQLを書き換えて実行しています。

例えば自分が書いたSQLは

SELECT *
FROM ORDERS
WHERE {{created_at}}

だけですが、

実際にはMetabaseが

SELECT *
FROM ORDERS
WHERE CAST("PUBLIC"."ORDERS"."CREATED_AT" AS date) 
BETWEEN date '2025-12-01'
    AND date '2026-04-01'

のようなSQLへ変換して実行しています。

この動作は クエリプレビュー から確認できます。

Field Filterの挙動が分からなくなったときは、まずクエリプレビューを見るのがおすすめです。

スクリーンショット (828).png


実務ではこんな場面で使う

私の業務では、ユーザー分析用のダッシュボードで

  • ユーザーID
  • Platform
  • 言語
  • 国
  • 作成日
  • 更新日

などをField Filterにすることが多いです。

特にダッシュボードで利用する場合は、Field Filterを使うことがほとんどです。

ユーザー側もSQLを意識せずに条件を変更できるため、レポートとして非常に扱いやすくなります。


よくあるハマりポイント

テーブル・カラムを設定していない

Field Filterで一番多いミスです。

変数を作っただけでは動かず、対象のカラムまで設定する必要があります。


クエリプレビューを確認していない

「SQLがおかしい」と思ったら、まずクエリプレビューを確認しましょう。

MetabaseがどのSQLを生成したのか確認できるため、原因を見つけやすくなります。


大量データでドロップダウンが重い

Field Filterは便利ですが、データ量が多いテーブルではドロップダウン表示が重くなることがあります。
私も原因調査中に何度も再実行してしまい、想像以上にDBへ負荷を掛けてしまったことがあります。


まとめ

Field Filterは最初は少し分かりづらいですが、一度仕組みを理解するとSQLを書く量を大きく減らせます。

特に

  • Dashboardとの連携
  • 日付範囲検索
  • ドロップダウン検索

など、Metabaseらしい便利な機能を使うためには欠かせない機能です。

困ったときは クエリプレビュー を確認すると、多くの場合原因を見つけられます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?