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