自定义操作

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

Custom action

创建自定义操作

您必须属于具有原生查询编辑访问权限的组才能创建操作。

创建自定义操作有两种方式

从命令面板

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

从模型

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

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

操作变量的字段类型

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

每个变量字段类型都提供不同的选项。点击齿轮图标即可更改选项。

如果您不需要某个变量,您可以选择为Metabase指定一个默认值,以用于用户未填写字段的情况。在SQL代码中,请记住将所有可选变量和逗号括在方括号中,例如[[, column = {{ optional_variable }}]]

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

文本

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

数字

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

日期

  • 日期
  • 日期 + 时间

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

Dropdown select

外观

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

Appearance gives a preview of the form element

操作设置

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

公开

创建一个可公开分享的操作表单链接。任何拥有该链接的人都可以填写表单并运行操作。这对于创建调查很有用。

Public action form

设置成功消息

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

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

自定义操作示例

UPDATE 操作示例

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


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

上述代码将创建一个表单,提示用户输入给定记录(由 ID 指定)的(必填)plan 字段的更新值以及可选的 payment 字段的更新值。

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

Example action form

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

© . All rights reserved.