Metabase

پارامترهای SQL ساده

اگر می‌خواهید روی یک فیلد پایگاه‌داده در کوئری‌تان فیلتر بگذارید، بهتر است از متغیرهای Field filter استفاده کنید که سینتکس متفاوتی دارند.

متغیرهای متن، عدد و تاریخ به شما اجازه می‌دهند مقادیر ساده را در کد SQL خود تزریق کنید.

برای افزودن یک متغیر ساده به کوئری SQL، نام متغیر را داخل دو آکولاد قرار دهید: {% raw %}{{variable_name}}{% endraw %}.

در مثال زیر یک متغیر متنی (Text) به نام category_filter تعریف شده است (می‌توانید هر نام دلخواهی استفاده کنید):

{% raw %}
SELECT
  count(*)
FROM
  products
WHERE
  category = {{category_filter}};
{% endraw %}

این متغیرهای ساده، فقط مقدار تنظیم‌شده در ویجت را در Placeholder کد جای‌گذاری می‌کنند. سینتکس آن‌ها با Field filterها متفاوت است.

سینتکس Field filter این است:

{% raw %}
WHERE
  {{category}}
{% endraw %}

در حالی که سینتکس متغیر ساده شامل عملگر = است:

{% raw %}
WHERE
  category = {{category}};
{% endraw %}

در این‌جا ما متغیر را به فیلد پایگاه‌داده متصل نمی‌کنیم؛ فقط مقدار واردشده را در کوئری قرار می‌دهیم.

متابیس متغیر را خوانده و یک ویجت فیلتر به کوئری اضافه می‌کند؛ کاربران می‌توانند با تغییر مقدار ویجت، مقدار تزریق‌شده به متغیر category را تغییر دهند. مثلاً اگر کسی "Gizmo" را در ویجت وارد کند، کوئری‌ای که متابیس اجرا می‌کند به این صورت خواهد بود:

SELECT
  count(*)
FROM
  products
WHERE
  category = 'Gizmo';

اگر در حال نوشتن کوئری Native برای MongoDB باشید، کوئری شما بیشتر شبیه این خواهد بود؛ جایی که متغیر category داخل بخش match تعریف شده است:

{% raw %}[{ $match: { category: {{category}} } }]{% endraw %}

متغیر ساده برای انتخاب چند مقدار

Basic variable with multiple values

برای این‌که کاربران بتوانند چند مقدار را برای متغیر تنظیم کنند، باید کد را طوری بنویسید که چند مقدار در آن معنی‌دار باشد. رایج‌ترین روش استفاده از عبارت WHERE ... IN است:

{% raw %}
SELECT
  *
FROM
  products
WHERE
  category IN ({{category_vars}});
{% endraw %}

بعد از نوشتن این کد، باید تنظیم People can pick را روی «چند مقدار» قرار دهید. با این حال، در چنین سناریویی معمولاً بهتر است از یک Field filter استفاده کنید.

محدودیت‌های متغیرهای SQL ساده برای انواع فیلتر

  • Text: یک Input ساده متنی.
  • Number: یک Input ساده عددی.
  • Date: یک Date picker ساده.
  • Boolean: یک انتخاب‌گر دوحالته (True/False).

اگر به ویجت فیلتر غنی‌تری مثل Date picker پویا نیاز دارید، بهتر است از یک متغیر Field filter استفاده کنید.

اختیاری کردن متغیر

بخش متغیرهای اختیاری را ببینید.