自定义操作
编写 SQL 以更新数据库中的记录。

创建自定义操作
您必须属于拥有原生查询编辑访问权限的组才能创建操作。
- 首先,创建模型。
- 访问模型并点击 信息 按钮。
- 点击 操作 选项卡。
在操作编辑器中,您可以编写自己的代码来创建操作,例如编写一个只更新表中部分列的操作。请参阅 示例操作。
操作变量的字段类型
对于您在操作中设置的每个 {{ variable }},您都需要设置字段类型。
每个变量字段类型都提供不同的选项。点击齿轮图标更改选项。
如果您不需要某个变量,可以选择为 Metabase 指定一个默认值,供用户未填写该字段时使用。在 SQL 代码中,请记住将任何可选变量和逗号用方括号括起来,例如 [[, column = {{ optional_variable }}]] 。
您可以在操作表单中为所有字段包含占位符文本。
文本
- 文本
- 长文本
- 下拉列表
- 内联选择
数字
- 数字
- 下拉列表
- 内联选择
日期
- 日期
- 日期 + 时间
对于 下拉列表 和 内联选择,您可以指定一个选项列表,显示在表单上,每个选项占一行。

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

操作设置
从模型详情页面,点击操作旁边的 三点菜单 (...)。进入操作编辑器后,点击 齿轮 图标以调出操作设置。
公开
创建操作表单的公开分享链接。任何能够访问该链接的人都可以填写表单并运行操作。适用于创建调查。

设置成功消息
在此,您可以编辑成功消息,这是 Metabase 在数据库确认一切顺利后显示的弹出消息。
如果出现问题,Metabase 将显示从数据库收到的错误消息。
示例自定义操作
示例 UPDATE 操作
您可以编写一个操作来更新示例数据库中 invoices 表记录的 plan 列。
UPDATE invoices
SET plan = {{ plan }}
[[, payment = {{ payment }}]]
WHERE
id = {{ id }}
上述代码将创建一个表单,提示用户输入(必需的)plan 字段以及可选的 payment 字段,以更新由 ID 指定的给定记录。
方括号中的代码 [[ ]] 使语句成为可选:仅当有人在 payment 字段中输入值时,方括号内的语句才会运行。请注意,分隔语句的逗号位于方括号 *内部*。

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