自定义操作

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

Custom action

创建自定义操作

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

创建自定义操作有两种方式

  1. 点击+ 新建 > 操作。保存您的操作时,将提示您将操作与模型关联。 (注意:如果已创建或具有访问权限的模型,则将在+ 新建菜单中显示操作选项。)
  2. 通过模型详细信息页面:从模型中,点击右上角的信息按钮。在侧边栏右上角,点击模型详情 > 操作 > 新建操作

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

操作变量的字段类型

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

这些变量字段类型提供不同的选项。单击齿轮图标以更改选项。

如果不需要变量,可以可选地指定默认值,以便Metabase在人们未填写字段的情况下使用。在SQL代码中,请记住将任何可选变量和逗号括在括号中,如[[, column = {{ optional_variable }}]]

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

文本

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

数字

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

日期

  • 日期
  • 日期 + 时间

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

Dropdown select

外观

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

Appearance gives a preview of the form element

操作设置

从模型详情页,点击操作旁边的三个点菜单(…)。一旦进入操作编辑器,点击齿轮图标以打开操作设置。

公开

创建一个公开可分享的动作表单链接。任何可以访问该链接的人都可以填写表格并执行操作。适用于创建调查。

Public action form

设置成功消息

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

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

示例自定义操作

示例 UPDATE 操作

您可以为Sample Database中 invoices 表的记录编写一个更新 plan 列的操作


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

上面的代码将创建一个表单,提示人们输入(必需的) plan 字段的更新值以及可选的针对给定记录的 payment 字段,记录由 ID 指定。

括号 [[ ]] 中的代码使声明可选:如果有人在付款字段中插入值,则括号内的声明才会运行。注意分隔声明的逗号在括号内。

Example action form

示例 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版本 的文档。

想改进这些文档? 提出更改。