操作

用法

view: view_name {
  dimension: field_name {
    action:  {
      label: "Label to Appear in Action Menu"
      url: "https://example.com/posts"
      icon_url: "https://looker.com/favicon.ico"
      form_url: "https://example.com/ping/{{ value }}/form.json"
      param: {
        name: "name string"
        value: "value string"
      }
      form_param: {
        name:  "name string"
        type: textarea | string | select
        label:  "possibly-localized-string"
        option: {
          name:  "name string"
          label:  "possibly-localized-string"
        }
        required:  yes | no
        description:  "possibly-localized-string"
        default:  "string"
      }
      user_attribute_param: {
        user_attribute: user_attribute_name
        name: "name_for_json_payload"
      }
    }
  }
}
层次结构
action
可能的字段类型
维度、衡量

默认值

接受
各种形参

特殊规则
  • form_url 的网址必须可供 Looker 服务器访问,并且使用 HTTPS 且具有有效证书
  • icon_url 的网址必须可供用户的浏览器访问

定义

action 参数用于创建一项数据操作,支持用户直接在 Looker 中,借助其他工具完成字段级任务。例如,该操作可触发邮件发送、在其他应用中设定值,或执行为接收服务器配置好的任何其他操作。接收服务器必须能够接收 JSON 格式的 POST 请求。

您可以为维度指标定义 action。您可以在“探索”页面、Look 或信息中心内选择相应字段,以访问该操作。

定义 action 时,您可以使用以下参数指定所选行为:

参数 说明
label 一个字符串,用于指定操作名称,该名称将显示在用户端的“操作”菜单中。
url 一个字符串,用于指定处理操作的网址。如果指定了针对数据操作的网址许可名单,您必须将此 url 值添加到许可名单中。只有符合许可名单格式的网址才能用于任何数据操作。如果没有现有条目,则允许所有网址执行数据操作。
icon_url 一个字符串,用于指定包含图片文件的网址,以便用户一眼就能轻松了解此链接会将他们定向到何处。icon_url 值必须可供用户的浏览器访问。
form_url 一个字符串,用于指定将返回要向用户显示的表单的网址;表单必须以 JSON 格式呈现,如本页上的使用 form_urlform_param 指定表单行为部分中所述。form_url 必须可供 Looker 服务器访问,并且使用具有有效证书的 HTTPS。
param 将值传递给接收服务器。
form_param 添加将为此操作显示的表单输入。
user_attribute_param 用户属性传递给接收服务器。如果您为数据操作使用 user_attribute_param,则必须将数据操作的 url 值添加到数据操作的网址许可名单中。

与数据操作类似,您还可以使用 Looker Action Hub 中提供的字段级操作,从特定单元格发送数据。如需详细了解此选项,请参阅本页面的考虑使用 Looker Action Hub 部分。

使用 user_attribute_param 将用户属性传递给接收服务器

您可以使用 user_attribute_param 参数将用户属性发送到接收服务器。在每个 user_attribute_param 中,您将指定以下子参数:

参数 类型 说明
user_attribute Looker ID Looker 中用户属性的名称
name 字符串 您希望属性在 JSON 载荷中显示的名称

使用 param 将值传递给接收服务器

您可以使用 param 参数在 JSON 载荷中发送任意数据。在每个 param 中,您将指定以下子参数:

参数 类型 说明
name 字符串 要传递给接收服务器的参数的名称
value 字符串 要传递给接收服务器的参数的值

请勿在 param 参数中传递敏感数据或私密信息(例如用户凭据)。请改为在管理设置中将用户凭据配置为用户属性,并在 user_attribute_param 参数中传递此信息。

使用 form_urlform_param 指定表单行为

您可以创建一个供 Looker 用户互动的表单,然后在 JSON 载荷中提交表单输入内容。如果您显示表单,它将以叠加层的形式显示在触发操作的页面(探索、查看或信息中心)上。您可以使用 form_urlform_param 参数来执行此操作。

如果您希望操作中心服务器定义表单布局,请使用 form_url 参数。form_url 应包含一个网址,该网址会返回表单的 JSON 表示形式,如本页稍后所述。

如果您想直接在 LookML 中定义表单布局,请使用 form_param 参数。

表单选项

在这两种情况下,您都可以使用以下选项来定义表单:

选项 类型 说明
name 字符串 值在 JSON 载荷中的显示名称
type 输入类型 将向用户显示的表单字段的类型:

  • select - 显示下拉列表
  • string - 显示单行输入字段
  • textarea - 显示多行文本输入框
label 字符串 输入内容的标签(将向用户显示)
description 字符串 将向用户显示的字段说明
required 布尔值 指定用户是否必须先提供表单选项,然后才能提交表单
default 字符串 表单字段的起始值(如有)
option 字符串 如果您选择 selecttype,请在此处定义选择选项

如果您将 type 设置为 select,则可以使用 option 指定下拉列表中的项。每个 option 都包含以下详细信息:

选项 类型 说明
name 字符串 表单值的名称,将显示在 JSON 载荷中
label 字符串 选项的标签(将向用户显示)(可选)

使用不含表单的数据操作

如果您未在 action 定义中添加 form_urlform_param 参数,则数据操作不会包含表单。在这种情况下,当用户从操作菜单中选择相应操作时,该操作会发送请求。

选择不含表单的操作后,“操作”菜单会在操作左侧显示图标,以指示其状态:

  • 系统会显示一个加载图标,表明相应操作正在执行。

  • 系统会显示一个对勾标记,表明相应操作已执行。

  • 系统会显示一个带圈的 i,表示操作失败。

如果某项操作的左侧未显示任何图标,则表示该操作未触发。

服务器响应

成功的 HTTP 响应将被视为成功操作。

服务器还可以向 Looker 传回一些与操作成功与否相关的选项。如果 Webhook 请求以 JSON 格式响应,Looker 会在响应中查找特殊的 looker 键。其他所有内容都会被忽略。例如,在以下情况下:

{
  "my_apps_business_logic": "something",
  "looker": {
    "success": true,
    "refresh_query": true
  }
}

此处 success 默认为 true,将 success 设置为 false 将在 Looker 中指示请求失败。此外,refresh_query 默认为 false,将其设置为 true 将重新运行当前 Looker 查询,跳过缓存。

您还可以针对传递的任何表单参数返回验证错误:

{
  "looker": {
    "success": false,
    "validation_errors": {
      "body": "Body must be more than 10 characters long."
    }
  }
}

此处 validation_errors 默认为 {}。这应是一个 JSON 对象,其中键是表单参数的名称,值是表示相应参数的错误消息的字符串。

示例

如果您使用 form_url 参数(在此示例中使用 Liquid 语法),则必须以 JSON 对象的形式返回所有选项。例如:

dimension: foo {
  action: {
    label: "Send a Thing"
    url: "https://example.com/ping/\{{ value \}}"
    form_url: "https://example.com/ping/\{{ value \}}/form.json"
  }
}

服务器应返回与 LookML 匹配的表单的 JSON 表示形式:

[
  {
    "name": "title",
    "type": "select",
    "label": "desired label name",
    "description": "description text",
    "required": true,
    "default": "value string",
    "options": [
      {
        "name": "name string"
        "label": "desired label name"
      },
      {
        "name": "name string"
        "label": "desired label name"
      }
    ]
  },
  {
    "name": "title",
    "type": "textarea",
    "label": "desired label name",
    "description": "description text",
    "required": true,
    "default": "value string",
  }
]

如果您使用 form_param 参数,则这些选项会用作 LookML 参数。例如:

form_param: {
  name: "title"
  type: select
  label: "desired label name"
  option: {
    name: "name string"
    label: "desired label name"
  }
  required: yes
  description: "description text"
  default: "value string"
}

考虑使用 Looker Action Hub

如果您尚未设置用于接收操作请求的服务器,或者您想实现可重用性有限的使用情形,那么 action 参数是不错的选择。不过,作为替代方案,您不妨考虑使用 Looker Action Hub 提供的字段级操作。(请确保您的实例满足这些 Looker Action Hub 要求。)

除了现有的 Looker Action Hub 集成之外,您还可以按照 Action Hub 文档页面上的说明创建自己的自定义操作。