Metabase

اکشن‌های سفارشی

SQL بنویسید تا رکوردها را در پایگاه‌داده‌هایتان به‌روزرسانی کنید.

اکشن سفارشی

ایجاد یک اکشن سفارشی

باید در گروهی با دسترسی ویرایش کوئری Native باشید تا یک اکشن ایجاد کنید.

  1. ابتدا، یک مدل ایجاد کنید.
  2. به مدل بروید و روی دکمهٔ info کلیک کنید.
  3. روی تب Actions کلیک کنید.

در ویرایشگر اکشن، می‌توانید کد خودتان را برای ایجاد یک اکشن بنویسید، مثل نوشتن یک اکشن که فقط یک زیرمجموعه از ستون‌ها در یک جدول را به‌روزرسانی می‌کند. به مثال اکشن‌ها مراجعه کنید.

انواع فیلد برای متغیرهای اکشن

برای هر {% raw %}{{ variable }}{% endraw %} که در یک اکشن تنظیم می‌کنید، باید نوع فیلد را تنظیم کنید.

هر یک از این انواع فیلد متغیر گزینه‌های مختلفی ارائه می‌دهند. روی آیکون gear کلیک کنید تا گزینه‌ها را تغییر دهید.

اگر متغیری را الزامی نمی‌کنید، می‌توانید به‌صورت اختیاری یک مقدار پیش‌فرض برای متابیس مشخص کنید تا در مواردی که افراد فیلد را پر نمی‌کنند استفاده کند. در کد SQL، به خاطر داشته باشید که هر متغیر اختیاری و کاما را در براکت‌ها قرار دهید، مثل {% raw %}[[, column = {{ optional_variable }}]] {% endraw %}.

می‌توانید متن placeholder برای همهٔ فیلدها در فرم اکشن قرار دهید.

Text

  • Text
  • Long text
  • Dropdown
  • Inline select

Number

  • Number
  • Dropdown
  • Inline select

Date

  • Date
  • Date + Time

برای هر دو Dropdown و Inline select، می‌توانید لیستی از گزینه‌ها برای نمایش در فرم مشخص کنید، با هر گزینه در خط خودش.

انتخاب Dropdown

ظاهر

تب appearance در مودال ویرایشگر اکشن یک پیش‌نمایش از عنصر فرم متغیر را نمایش می‌دهد. در تصویر زیر، روی gear متغیر کلیک کرده‌ایم و متغیر را برای استفاده از text > dropdown list تنظیم کرده‌ایم. بخش appearance یک پیش‌نمایش از آنچه عنصر فرم به نظر می‌رسد ارائه می‌دهد:

ظاهر یک پیش‌نمایش از عنصر فرم ارائه می‌دهد

تنظیمات اکشن

از صفحهٔ جزئیات مدل، روی منوی سه نقطه (...) کنار اکشن کلیک کنید. وقتی در ویرایشگر اکشن هستید، روی آیکون gear کلیک کنید تا تنظیمات اکشن باز شود.

عمومی کردن

یک لینک قابل‌اشتراک‌گذاری عمومی به فرم اکشن ایجاد می‌کند. هر کسی که به آن لینک دسترسی دارد می‌تواند فرم را پر کند و اکشن را اجرا کند. برای ایجاد نظرسنجی‌ها مفید است.

فرم اکشن عمومی

تنظیم یک پیام موفقیت

اینجا می‌توانید پیام موفقیت را ویرایش کنید، که پیامی است که متابیس در toast که بعد از اینکه متابیس از پایگاه داده شنید که همه چیز به خوبی پیش رفت نمایش می‌دهد.

اگر مشکلی پیش بیاید، متابیس پیام خطایی که از پایگاه داده دریافت کرد را نمایش می‌دهد.

مثال اکشن‌های سفارشی

مثال اکشن UPDATE

می‌توانید یک اکشن بنویسید که ستون plan را برای یک رکورد در جدول invoices در Sample Database به‌روزرسانی می‌کند:

{% raw %}
UPDATE invoices
SET plan = {{ plan }}
   [[, payment = {{ payment }}]]
WHERE
   id = {{ id }}
{% endraw %}

کد بالا یک فرم ایجاد می‌کند که از افراد می‌خواهد مقادیر به‌روزرسانی‌شده برای فیلد (الزامی) plan و به‌صورت اختیاری فیلد payment برای یک رکورد مشخص‌شده توسط ID وارد کنند.

کد در براکت‌ها [[ ]] عبارت را اختیاری می‌کند: عبارت محصورشده در براکت فقط در صورتی اجرا می‌شود که کسی یک مقدار در فیلد payment وارد کند. توجه داشته باشید که کامایی که عبارات را جدا می‌کند داخل براکت‌ها است.

فرم اکشن مثال

مثال اکشن INSERT

عبارت‌های Insert نسبتاً ساده هستند:

{% raw %}
INSERT INTO invoices (
  account_id
  ,payment
  ,expected_invoice
  ,plan
  ,date_received
)
VALUES (
  {{ account_id }}
  ,{{ payment }}
  ,CAST ({{expected_invoice}} AS boolean)
  ,{{plan}}
  ,({{date_received}}
);
{% endraw %}

Cast کردن مقادیر فیلد در اکشن‌ها

اگر هنگام ارسال یک فرم خطای نوع دریافت کردید، ممکن است نیاز داشته باشید نوع داده را در کوئری CAST کنید تا با نوع دادهٔ فیلد هدف در پایگاه داده مطابقت داشته باشد. اینجا یک مقدار را به boolean cast می‌کنیم:

{% raw %}
UPDATE invoices
SET expected_invoice = CAST({{expected_invoice}} AS boolean)
WHERE id = {{id}};
{% endraw %}

ارجاع به سؤال‌های ذخیره‌شده در اکشن‌ها

همچنین می‌توانید به سؤال‌های ذخیره‌شده در اکشن‌ها ارجاع دهید. اینجا نتایج یک عبارت SELECT روی یک سؤال ذخیره‌شده ("Potential customers") را می‌گیریم و نتایج را در جدول people_to_write درج می‌کنیم.

{% raw %}
WITH prospects AS {{#6-potential-customers}}

INSERT INTO
  people_to_write (
  first_name
  ,last_name
  ,email
  )
SELECT
  first_name
  ,last_name
  ,email
FROM prospects;
{% endraw %}

مطالعهٔ بیشتر