自定义操作

编写 SQL 以更新数据库中的记录。

Custom action

创建自定义操作

您必须在具有原生查询编辑权限的组中才能创建操作

有两种方法可以创建自定义操作

  1. 点击+ 新建 > 操作。当您保存操作时,系统会提示您将该操作与模型关联。(注意:只有当您首先在 Metabase 中创建了模型或有权访问该模型时,操作选项才会显示在+ 新建菜单中。)
  2. 通过模型详情页:从模型中,点击右上角的 信息 按钮。在侧边栏的右上角,点击模型详情 > 操作 > 新建操作

在操作编辑器中,您可以编写自己的代码来创建操作,例如编写一个仅更新表中列子集的操作。请参阅操作示例

操作变量的字段类型

对于在操作中设置的每个 {{ variable }},您都需要设置字段类型。

每个变量字段类型都提供不同的选项。点击齿轮图标可更改选项。

如果您不需要变量,您可以选择为 Metabase 指定一个默认值,以便在用户未填写字段时使用。在 SQL 代码中,请记住将任何可选变量和逗号括在方括号中,例如 [[, column = {{ optional_variable }}]]

您可以在操作表单中的所有字段中包含占位符文本。

文本

  • 文本
  • 长文本
  • 下拉菜单
  • 内联选择

数字

  • 数字
  • 下拉菜单
  • 内联选择

日期

  • 日期
  • 日期 + 时间

对于下拉菜单内联选择,您可以指定要在表单上显示的选项列表,每个选项占一行。

Dropdown select

外观

操作编辑器模态框中的外观选项卡将显示变量表单元素的预览。在下图中,我们点击了变量的齿轮,并将变量设置为使用文本 > 下拉列表。外观部分提供了表单元素外观的预览

Appearance gives a preview of the form element

操作设置

在模型详情页中,点击操作旁边的三点菜单 (…)。进入操作编辑器后,点击齿轮图标以调出操作设置。

公开

创建指向操作表单的公开共享链接。任何有权访问该链接的人都可以填写表单并运行操作。用于创建调查非常有用。

Public action form

设置成功消息

您可以在这里编辑成功消息,即 Metabase 在从数据库收到一切顺利的响应后,将在弹出式提示中显示的消息。

如果出现问题,Metabase 将显示从数据库收到的错误消息。

自定义操作示例

UPDATE 操作示例

您可以编写一个操作,用于更新示例数据库中 invoices 表中记录的 plan


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

上面的代码将创建一个表单,提示用户输入(必填)plan 字段和(可选)payment 字段的更新值,记录由 ID 指定。

方括号 [[ ]] 中的代码使语句成为可选:只有当有人在 payment 字段中插入值时,才会运行括号括起来的语句。请注意,分隔语句的逗号位于括号

Example action form

INSERT 操作示例

Insert 语句非常简单


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

在操作中转换字段值

如果您在提交表单时遇到类型错误,您可能需要在查询中 CAST 数据类型,使其与数据库中目标字段的数据类型匹配。在这里,我们将值转换为 boolean


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

在操作中引用已保存的问题

您还可以在操作中引用已保存的问题。在这里,我们获取对已保存问题(“潜在客户”)的 SELECT 语句的结果,并将结果插入到 people_to_write 表中。


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

INSERT INTO
  people_to_write (
  first_name
  ,last_name
  ,email
  )
SELECT
  first_name
  ,last_name
  ,email
FROM prospects;

延伸阅读

阅读其他Metabase 版本的文档。