自定义操作
编写 SQL 以更新数据库中的记录。
创建自定义操作
您必须在具有原生查询编辑权限的组中才能创建操作
有两种方法可以创建自定义操作
- 点击+ 新建 > 操作。当您保存操作时,系统会提示您将该操作与模型关联。(注意:只有当您首先在 Metabase 中创建了模型或有权访问该模型时,操作选项才会显示在+ 新建菜单中。)
- 通过模型详情页:从模型中,点击右上角的 信息 按钮。在侧边栏的右上角,点击模型详情 > 操作 > 新建操作。
在操作编辑器中,您可以编写自己的代码来创建操作,例如编写一个仅更新表中列子集的操作。请参阅操作示例。
操作变量的字段类型
对于在操作中设置的每个 {{ 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 语句非常简单
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 版本的文档。