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入門①】SQLを書くときに最初に覚えたい {{}} と [[ ]]

0
Last updated at Posted at 2026-06-30

MetabaseでSQLを書くときに最初に覚えたい2つの構文 {{}} と [[ ]]

普通のSQLは書けるけど、Metabase独自の構文がよく分からない…。

私自身、業務でMetabaseを使い始めた頃は、{{}} や [[ ]] の意味が分からず何度もハマりました。

本記事では、MetabaseでSQLを書くならまず覚えておきたい2つの構文について紹介します。


Metabaseとは

Metabaseは、データベースの情報を可視化・分析するためのBIツールです。

主な機能として、

  • SQLを書いてデータを取得できる
  • SQLを書かなくてもGUIで集計できる
  • ダッシュボードの作成
  • Slackやメールへの定期通知

などがあります。

今回は、その中でもSQLを書く際に覚えておきたい構文を紹介します。


MetabaseのSQLは普通のSQLと少し違う

Metabaseでは通常のSQLに加えて、ユーザーが画面から条件を指定できるようにするための独自構文があります。

例えば次のSQLです。

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

普通のMySQLではこのSQLは実行できません。

{{ }} や [[ ]] は、MetabaseがSQLを実行する前に置き換えるための構文です。


{{ }} は変数

最もよく使う構文です。

例えば

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

と書くと、画面上には入力欄が表示されます。

値を入力すると、

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

のようなSQLへ変換されて実行されます。


変数には型がある

変数には型を設定できます。

例えば

  • テキスト
  • 数値
  • 日付
  • フィールドフィルター

などがあります。

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

用途によって適切な型を選択します。


[[ ]] は Optional Clause

次に覚えたいのが Optional Clause です。

例えば

SELECT
    *
FROM
    ORDERS
WHERE
    1 = 1
    [[AND USER_ID = {{user_id}}]]

値を入力しなかった場合は

WHERE
    1 = 1

だけになります。

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

一方、値を入力すると

WHERE
    1 = 1
    AND USER_ID = '1'

へ変換されます。

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

Metabaseでは、クエリプレビューを見ることで、実際にどのSQLが実行されるか確認できます。

これを知っているだけでも、デバッグがかなり楽になります。


WHERE 1 = 1 がよく使われる理由

WHERE 1 = 1 は常に真になる条件です。

Optional Clauseでは条件が追加されたり削除されたりするため、

WHERE
    1 = 1
    [[AND {{platform}}]]
    [[AND {{lang_code}}]]
    [[AND {{start_date}}]]

のように書くことで、WHERE の有無を気にせず条件を追加できます。

Metabaseのネイティブクエリでは、Optional Clauseを扱いやすくするために、この書き方がよく利用されます。

この書き方は、MetabaseのネイティブクエリでOptional Clauseを扱いやすくするためのテクニックです。一般的なアプリケーション開発では、SQLを文字列連結で組み立てるのではなく、プレースホルダーやプリペアドステートメントを利用してSQLを組み立てるのが基本です。


まとめ

今回は、MetabaseでSQLを書くなら最初に覚えておきたい2つの構文を紹介しました。

  • {{ }}:変数
  • [[ ]]:Optional Clause

この2つを理解するだけで、MetabaseのSQLはかなり書きやすくなります。


次回予告

次回は、Metabaseで最も便利だと感じた Field Filter を紹介します。

  • Text変数との違い
  • Field Filterの設定方法
  • ドロップダウンや検索ボックス
  • 実際に生成されるSQL
  • 実務での使いどころ

今回よりも実践的な内容になる予定です。

0
1
2

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?