自定义操作
编写 SQL 来更新数据库中的记录。
创建自定义操作
您必须属于具有本机查询编辑权限的用户组才能创建操作。
有两种方法可以创建自定义操作
从命令面板
- 按 command-K (Mac) 或 ctrl-K (Windows) 打开命令面板。
- 搜索新建操作。
从模型
- 首先,创建一个模型。
- 访问该模型并点击信息按钮。
- 点击操作选项卡。
在操作编辑器中,您可以编写自己的代码来创建操作,例如编写一个只更新表中部分列的操作。请参阅示例操作。
操作变量的字段类型
对于您在操作中设置的每个 {{ 变量 }},您都需要设置字段类型。
这些变量字段类型中的每一种都提供了不同的选项。点击齿轮图标以更改选项。
如果您不需要某个变量,您可以选择性地指定一个默认值,以便在人们未填写该字段时,Metabase 可以使用此值。在 SQL 代码中,请记住将任何可选变量和逗号用方括号括起来,例如 [[, column = {{ optional_variable }}]]
。
您可以在操作表单中为所有字段包含占位符文本。
文本
- 文本
- 长文本
- 下拉菜单
- 内联选择
数字
- 数字
- 下拉菜单
- 内联选择
日期
- 日期
- 日期 + 时间
对于下拉菜单和内联选择,您可以指定一个选项列表呈现在表单上,每个选项占一行。
外观
操作编辑器模态框中的外观选项卡将显示变量表单元素的预览。在下图中,我们点击了变量的齿轮图标,并将变量设置为使用文本 > 下拉列表。外观部分提供了该表单元素外观的预览。
操作设置
在模型详情页面,点击操作旁边的三点菜单(...)。进入操作编辑器后,点击齿轮图标,弹出操作设置。
设为公开
创建一个可公开共享的操作表单链接。任何有权访问该链接的人都可以填写表单并运行该操作。这对于创建调查非常有用。
设置成功消息
在这里,您可以编辑成功消息,这是当 Metabase 从数据库收到一切顺利的反馈后,在弹出的提示框中显示的消息。
如果出现问题,Metabase 将显示从数据库收到的错误消息。
自定义操作示例
示例 UPDATE
操作
您可以编写一个操作来更新示例数据库中 invoices
表中某条记录的 plan
列。
UPDATE invoices
SET plan = {{ plan }}
[[, payment = {{ payment }}]]
WHERE
id = {{ id }}
以上代码将创建一个表单,提示人们为由 ID
指定的特定记录输入(必填的)plan
字段和(可选的)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 的文档。