link

用法

view: view_name {
  dimension: field_name {
    link: {
      label: "desired label name"
      url: "desired_url"
      icon_url: "url_of_an_image_file"
    }
    # Possibly more links
  }
}
层次结构
link
可能的字段类型
维度、衡量

接受
各种形参

定义

借助 link 参数,您可以为维度和衡量添加网页链接,方便用户直接在 Looker 中跳转至相关内容。link 形参的形式为:

dimension: field_name {
  link: {
    label: "desired label name"
    url: "desired_url"
    icon_url: "url_of_an_image_file"
  }
  # Possibly more links
}

link 参数有多个子参数:

  • label 是您希望向用户显示的链接的名称。
  • url 是您希望链接指向的网址。您可以使用 Liquid 变量使链接动态化,如本页面的将 Liquid 变量与 link 搭配使用部分中所述。
  • icon_url 是用户浏览器可访问的网址,其中包含图片文件。这样一来,用户就能一目了然地了解点击链接后会前往何处。如果不需要图标,则无需提供 icon_url 参数。如果需要公司徽标,可以尝试使用 http://www.google.com/s2/favicons?domain=[company website of interest] 模式运行 Google 搜索,以查找 .ico 格式的图片。

示例

某电子商务公司希望员工能够直接从 Looker 内容(例如显示上个月待处理订单的 Look)联系仓库支持人员。Look 中包含订单 ID 以及与每个订单关联的客户的用户 ID。

您可以向订单 ID 维度添加链接,以便查看 Look 的用户可以执行此操作:


dimension: id {
  primary_key: yes
  type: number
  sql: ${TABLE}.id ;;
  link: {
    label: "Contact Warehouse Support"
    url: "mailto:warehouse@altostrat.com"
  }
}

在 Look 中,用户会在链接菜单的选项中看到与仓库支持团队联系链接,该链接可通过点击订单 ID 字段的任意值对应的三点状菜单来访问。

点击链接名称后,用户会前往链接的内容,在本例中,系统会打开一个新标签页,其中包含一封空白电子邮件草稿,收件人地址为指定的电子邮件地址。

当用户点击链接时,Looker 会在新浏览器标签页或同一标签页(对于嵌入式查询,则为 iframe)中打开该链接:

  • 绝对链接(例如 https://example.looker.com)将在新的浏览器标签页中打开。
  • 相对链接(例如 /dashboards/456)将在同一浏览器标签页或 iframe 中打开。打开链接后,用户可以点击浏览器中的返回,返回到原始查询。

用户必须拥有 exploresee_drill_overlay 权限才能访问链接。

link 参数支持 Liquid 变量,可让内容更具互动性,甚至可以细化到行和值级别。LookML 支持两种 Liquid 用法标记:值输入 {{ }} 标记和条件逻辑 {% %} 标记。

在上述两种方法中,{{ }}value_filters['view_name.field_name'] Liquid 变量结合使用,是最常与 link 搭配使用的方法。这是因为 {{ }} 代码会将输入值直接放置在相应位置,例如网址内。

如需查看如何将 Liquid {{ }} 标记与 value_filters['view_name.field_name'] 变量搭配使用以使内容与 link 互动,请参阅本页中的示例。

链接到外部内容

例如,假设您有一个 artist_name 维度,并且希望用户能够直接在 Looker 中选择对该艺术家执行 Google 搜索。您可以使用 value Liquid 变量将该选项添加到维度,如下所示:

dimension: artist_name {
  link: {
    label: "Google"
    url: "http://www.google.com/search?q={{ value }}"
    icon_url: "http://google.com/favicon.ico"
  }
}

当用户点击艺术家名称字段值对应的三点状菜单时,Looker 会显示链接菜单,其中包含在示例 LookML 中创建的链接。该链接会在新的浏览器标签页中打开,并显示所选艺术家的 Google 搜索结果。所选艺术家的名称会插入到网址中 {{ value }} 所在的位置。

此模式可复制到用户浏览器有权访问的其他外部网站(例如工单管理系统、客户管理系统和其他业务相关工具),以便在 Web 应用之间轻松导航。

链接到 Looker 中的内容

除了外部网站,您还可以使用 link 参数将用户引导至其他相关的 Looker 探索、Look 或信息中心,以实现自定义的下钻体验。您还可以将这些示例应用于 LookML html 参数中的字段链接。

首先,您需要获取要关联的现有“探索”“Look”或信息中心的网址。然后,您可以使用包含 value_filters['view_name.field_name'] 变量的 {{ }} 标记替换网址的特定元素,例如过滤条件值和名称。变量会将用户选择的值输入到它们所替换的网址元素中。内容网址的基本结构如下:

  • 探索/explore/YOUR_MODEL_NAME/YOUR_EXPLORE_NAME?fields=view_name.field_name1,view_name.field_name2...
    • 您可以选择展开网址齿轮图标选项,获取现有探索的探索网址。
    • 探索过滤条件在网址中会显示为 f[view_name.field_name]。如需查看示例,请参阅关联到相关探索部分。
  • 外观/looks/YOUR_LOOK_NUMBER
  • 用户定义的信息中心/dashboards/YOUR_DASHBOARD_NUMBER?FILTER_NAME_1=VALUE&FILTER_NAME_2=VALUE

    • 您可以从信息中心页面复制浏览器网址,以获取现有信息中心的网址。
  • LookML 信息中心/dashboards/YOUR_MODEL::YOUR_DASHBOARD

    • 您可以从 LookML 信息中心页面复制浏览器网址,从而获取现有 LookML 信息中心的网址。

用户定义的信息中心和 LookML 信息中心的过滤条件都会以 filter_name 的形式显示在网址中,其中 filter_name 是放置在信息中心内的过滤条件的名称。如需查看相关示例,请参阅将现有过滤条件值传递给关联的内容部分。

网址元素(例如过滤条件值和名称)会使用特殊字符(例如 ? 表示查询字符串的开头、& 分隔元素和 %20 表示空格)进行 网址编码。如需查看示例,请参阅其他比较运算符的网址编码部分。

获得要链接到的内容的网址后,您可以使用 Liquid 通过 value_filters['view_name.field_name'] 变量和 {{ }} 标记将字段的值插入到网址的任何元素中。如需详细了解查询网址的各个部分,请参阅 Looker 社区帖子使用网址和查询参数

我们有一个名为“城市”的维度。我们希望用户能够访问另一个现有的“探索”,其中包含城市指标和城市过滤条件。我们希望关联的探索按用户选择的城市进行过滤。

如需实现此目的,请执行以下操作:

  1. 获取要下钻到的现有探索的 网址
  2. 城市维度添加 link 参数:
  dimension: city {
  type: string
  sql: ${TABLE}.city ;;
  link: {
    label: "City Metrics Explore"
    url: "/explore/ecommerce_model/order_items_explore?fields=users.city,orders.count,users.count&f[users.city]=&sorts=orders.count+desc&limit=500"
  }
  }

在此示例中,网址已缩短为 limit=500,这会限制探索结果为 500 行,以便清晰显示。您可以根据需要添加网址的其余部分,其中通常包含可视化设置的网址编码。

  1. 在您想要将值插入网址的位置插入 Liquid {{ value }} 标记和变量。在这种情况下,我们需要将值放在过滤条件元素 f[users.city]= 位于网址字符串中的位置,以便用户选择的城市过滤探索:
dimension: city {
  type: string
  sql: ${TABLE}.city ;;
  link: {
    label: "City Metrics Explore"
    url: "/explore/ecommerce_model/order_items_explore?fields=users.city,orders.count,users.count&f[users.city]={{ value }}&sorts=orders.count+desc&limit=500"
  }
}

然后,城市维度会显示一个三点状链接菜单,其中包含城市指标探索选项。

当用户点击该链接时,系统会将其重定向到 City Metrics Explore,并按所选城市进行过滤。

您还可以在链接到 Looker 内容时保留现有的过滤条件值,如下例所示。

示例:将现有过滤条件值传递给关联的内容

link 参数支持的另一个 Liquid 变量是 _filters['view_name.field_name']。此变量会获取为过滤条件输入的现有值,并将其传递给关联的探索、信息中心或 Look。

在内容网址中,您可以看到过滤条件值的指定位置,并将其替换为 _filters['view_name.field_name'] 变量。如需了解查询网址的各个部分,请参阅 Looker 社区帖子使用网址和查询参数

以下是一个维度的示例,该维度在其 link 参数中使用 _filters['view_name.field_name'] 变量来传递名为 users.state 的字段的现有过滤条件值:

dimension: name {
  link: {
    label: "Business Pulse By State Dashboard"
    url: "/dashboards/694?State={{ _filters['users.state'] | url_encode }}"
  }
}

在此示例中,如果用户按 users.state 维度过滤查询,则关联的信息中心会自动按原始查询中选择的相同州进行过滤。在此示例中,添加 Liquid 过滤条件 url_encode 可将不安全的网址字符串转换为百分号编码字符串。这样可确保包含特殊字符(如空格或英文逗号)的过滤条件值能够传递到关联的仪表板。

例如,假设用户已按“加利福尼亚州”过滤查询。当用户点击 Name 字段值旁边的三点状菜单时,Links 菜单会显示指向信息中心 Business Pulse by State 的链接。当用户点击此链接时,各州的商业脉搏信息中心将已按“加利福尼亚州”进行过滤。

此方法还可用于将过滤条件值传递给关联的 Look 和探索:

dimension: name {
    link: {
      label: "Average Order Profit Look"
      url: "/looks/249?&f[users.state]={{ _filters['users.state'] | url_encode }}"
    }
    link: {
      label: "User Facts Explore Explore"
      url: "/explore/ecommerce/users?fields=users.id,users.name&f[users.state]={{ _filters['users.state'] | url_encode }}"
    }
  }

您可以在多个过滤条件之间放置 & 来传递多个过滤条件,例如在以下网址中:

dimension: name {
  link: {
    label: "Business Pulse By State Dashboard"
    url: "/dashboards/694?State={{ _filters['users.state'] | url_encode }}&Date={{ _filters['orders.date'] | url_encode }}"
  }
  link: {
    label: "Average Order Profit Look"
    url: "/looks/249?&f[users.state]={{ _filters['users.state'] | url_encode }}&f[orders.date]={{ _filters['orders.date'] | url_encode }}"
  }
}

如需了解如何创建信息中心过滤条件,请参阅构建 LookML 信息中心添加和修改用户定义的信息中心过滤条件文档页面。

如果 Looker 管理员已启用可视化下钻功能,您可以使用 link 参数和 Liquid 变量自定义在探索和 Look 的下钻叠加层中显示的可视化图表。信息中心支持使用 link 参数进行可视化下钻,而无需启用可视化下钻功能。

以下是将下钻可视化图表设置为散点图的示例:


  measure: count {
    type: count_distinct
    sql: ${id} ;;
    drill_fields: [created_date, total_sale_price]
    link: {
      label: "Drill as scatter plot"
      url: "
      {% assign vis_config = '{\\"type\\": \\"looker_scatter\\"}' %}
        \{\{ link \}\}&vis_config=\{\{ vis_config | encode_uri \}\}&toggle=dat,pik,vis&limit=5000"
    }
  }

如需查看有关自定义钻取可视化的更多示例,请参阅更强大的数据钻取功能最佳实践页面。

关联到 Looker 内容时的注意事项

在某些情况下,您可能需要使用除等于之外的过滤条件比较运算符、添加多个过滤条件,或转义指向 Looker 内容的链接中的英文逗号。以下部分详细介绍了这些用例。

对其他比较运算符进行网址编码

如果您想在关联的过滤条件中添加除等于 (=) 之外的比较运算符,可以对该运算符进行 网址 编码

例如,如果您想对关联的 Look 应用 order_id 过滤条件,以包含小于您点击的值所关联的 order_id 字段的值,则可以对运算符字符(在本例中为 %3C)进行部分编码,并将其添加到网址中:

f[orders.order_id]=%3C{{ other_orders.order_id._value }}
包含多个过滤条件

您可以使用和号 (&) 分隔每个过滤条件,从而对关联的 Look、信息中心和探索应用多个过滤条件:

dimension: name {
  link: {
    label: "Drill Look"
    url:"/looks/looknumber?&f[users.state]={{ value }}[users.region]={{ users.region._value }}&f[users.age]={{ _filters['users.age'] | url_encode }}"
  }
}
转义英文逗号

您可以使用 filterable_value 变量(而不是通常使用的 value 变量)转义关联值中的英文逗号。

以下链接会下钻到相应探索,该探索会按所选的 users.city 值过滤结果:

dimension: city {
    type: string
    sql: ${TABLE}.city ;;
    link: {
        label: "Drill by City"
        url: "/explore/model_name/explore_name?fields=users.email,users.id&f[users.city]={{ value }}"
    }
}

如果用户点击 Santa Cruz, CA 以深入查看按此城市过滤的结果,则生成的深入分析结果将返回包含 Santa CruzCA 的所有结果。

如果使用 filterable_value 而不是 value,则逗号将被转义:

dimension: city {
    type: string
    sql: ${TABLE}.city ;;
    link: {
        label: "Drill by City"
        url: "/explore/model_name/explore_name?fields=users.email,users.id&f[users.city]={{ filterable_value }}"
    }
}

生成的下钻将返回包含整个字符串值“Santa Cruz, CA”的所有结果。

如果您想在下钻网址中对包含英文逗号的过滤条件值进行硬编码,可以通过以下方式转义英文逗号:将该值用英文双引号括起来,然后使用反斜杠 (\) 转义英文双引号:

dimension: city {
    type: string
    sql: ${TABLE}.city;;
    link: {
        label: "Drill by City"
        url: "/explore/model_name/explore_name?fields=users.email,users.id&f[users.city]=\"Santa Cruz, CA\"&sorts=users.email"
    }
}

其他资源

注意事项

如果某个维度包含引用其他字段的 link 参数,则该维度所用查询的底层 SQL 中可能会添加该额外字段。如果引用的字段未显示在查询的可视化图表中,并且该可视化图表是手动重新排列列的表格图表,则某些下载格式中的列顺序可能会受到影响。