自定义操作

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

Custom action

创建自定义操作

您必须属于具有本机查询编辑权限的用户组才能创建操作。

有两种方法可以创建自定义操作

从命令面板

  1. 按 command-K (Mac) 或 ctrl-K (Windows) 打开命令面板。
  2. 搜索新建操作

从模型

  1. 首先,创建一个模型
  2. 访问该模型并点击信息按钮。
  3. 点击操作选项卡。

在操作编辑器中,您可以编写自己的代码来创建操作,例如编写一个只更新表中部分列的操作。请参阅示例操作

操作变量的字段类型

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

这些变量字段类型中的每一种都提供了不同的选项。点击齿轮图标以更改选项。

如果您不需要某个变量,您可以选择性地指定一个默认值,以便在人们未填写该字段时,Metabase 可以使用此值。在 SQL 代码中,请记住将任何可选变量和逗号用方括号括起来,例如 [[, column = {{ optional_variable }}]]

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

文本

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

数字

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

日期

  • 日期
  • 日期 + 时间

对于下拉菜单内联选择,您可以指定一个选项列表呈现在表单上,每个选项占一行。

Dropdown select

外观

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

Appearance gives a preview of the form element

操作设置

在模型详情页面,点击操作旁边的三点菜单(...)。进入操作编辑器后,点击齿轮图标,弹出操作设置。

设为公开

创建一个可公开共享的操作表单链接。任何有权访问该链接的人都可以填写表单并运行该操作。这对于创建调查非常有用。

Public action form

设置成功消息

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

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

自定义操作示例

示例 UPDATE 操作

您可以编写一个操作来更新示例数据库中 invoices 表中某条记录的 plan 列。


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

以上代码将创建一个表单,提示人们为由 ID 指定的特定记录输入(必填的)plan 字段和(可选的)payment 字段的更新值。

方括号 [[ ]] 中的代码使该语句成为可选的:只有当有人在支付字段中插入值时,方括号内的语句才会运行。请注意,分隔语句的逗号位于方括号内部

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

这有帮助吗?

感谢您的反馈!
想要改进这些文档?提出更改建议。
© . This site is unofficial and not affiliated with Metabase, Inc.