link

用量

查看:

层次结构
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 是您希望链接指向的网址。您可以使用液体变量使链接成为动态链接,如本页中的使用带有 link 的流体变量部分所述。
  • icon_url 是可供用户浏览器访问的网址,其中包含一个图片文件。这样一来,用户便可以一目了然地了解链接会将他们引导至何处。如果您不想使用图标,则无需使用 icon_url 参数。如果您需要公司徽标,请尝试使用 http://www.google.com/s2/favicons?domain=[company website of interest] 格式进行 Google 搜索,以查找.ico格式的图片。

示例

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

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


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

用户可通过点击三点状菜单访问链接菜单中的各种选项间的链接:

点击链接名称会将用户转到链接内容 - 在本示例中,新标签页位于发送到指定电子邮件地址的空白电子邮件草稿中:

上面的示例包含一个 sql 参数。如果未指定 sql,Looker 会假设底层表中有一列与该字段同名。

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

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

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

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

在这两个函数中,{{ }}value_filters['view_name.field_name'] 液体变量结合使用时最常与 link 一起使用。这是因为 {{ }} 会直接在输入位置(例如网址中)标记输入值。

请参阅本页面中的示例,了解将 Liquid {{ }} 标记与 value_filters['view_name.field_name'] 变量结合使用来使内容与 link 交互的示例。

链接到外部内容

例如,假设您有一个 artist_name 维度,并且希望用户可以直接从 Looker 中选择对该音乐人执行 Google 搜索。您可以使用 value 液体变量将该选项添加到维度中,如下所示:

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

此维度链接的用户体验将如下所示:

点击该链接后,系统会在 Google 搜索结果中打开一个新的浏览器标签页,显示所选音乐人的作品。所选音乐人名称会插入 {{ value }} 所在的网址中。

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

链接到 Looker 中的内容

除了外部网站之外,您还可以使用 link 参数将用户定向到其他相关的 Looker 探索、外观或信息中心,从而获得自定义的深入体验。您还可以对字段的 LookML html 参数中的链接应用相同的示例。

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

  • 探索https://instance_name.looker.com/explore/YOUR_MODEL_NAME/YOUR_EXPLORE_NAME?fields=view_name.field_name1,view_name.field_name2...
    • 选择展开后的网址齿轮图标选项,即可获取现有探索的探索网址。
    • “探索”过滤器会在网址中显示为 f[view_name.field_name]。如需查看示例,请参阅链接到相关探索部分。
  • Lookhttps://instance_name.looker.com/Looks/YOUR_LOOK_NUMBER
  • 用户定义的信息中心https://instance_name.looker.com/dashboards/YOUR_DASHBOARD_NUMBER?FILTER_NAME_1=VALUE&FILTER_NAME_2=VALUE
    • 您可以从信息中心页面复制浏览器网址,以获取现有信息中心的网址。
    • 如果您使用的是旧版信息中心,该网址将使用 dashboards-legacy 代替网址格式中的 dashboards
  • LookML 信息中心https://instance_name.looker.com/dashboards/YOUR_MODEL::YOUR_DASHBOARD
    • 您可以从信息中心页面复制浏览器网址,以获取现有 LookML 信息中心的网址。

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

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

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

我们有一个名为“城市”的维度。我们希望用户能够通过另一个城市指标和“城市”过滤器访问另一个现有的“探索”。我们希望按用户选择的城市来过滤关联的“探索”。

为此,请执行以下操作:

  1. 获取现有“探索”报告的网址
  2. 向“城市”维度添加 link 参数:
  dimension: city {
  type: string
  sql: ${TABLE}.city ;;
  link: {
    label: "City Metrics Explore"
    url: "https://instance_name.looker.com/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: "https://instance_name.looker.com/explore/ecommerce_model/order_items_explore?fields=users.city,orders.count,users.count&f[users.city]={{ value }}&sorts=orders.count+desc&limit=500"
  }
}

“城市”维度将显示三点状链接菜单,其中显示了城市指标探索选项:

当用户点击该链接后,系统会将他们重定向到按城市过滤的城市指标探索

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

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

link 参数支持的另一个 Liquid 变量是 _filters['view_name.field_name']。此变量会接受为过滤器输入的现有值,并将其传递到关联的“探索”、“信息中心”或“查看”部分。

如果您从信息中心传递过滤器,则 _filters['view_name.field_name'] 必须引用字段类型过滤器,如信息中心 LookML旧版信息中心界面中所设置。

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

下方维度示例通过 link 参数中的 _filters['view_name.field_name'] 变量,为名为 users.state 的字段传递现有过滤条件值:

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

在此示例中,如果用户按 users.state 维度过滤查询,关联的信息中心将按与原始查询相同的状态自动进行过滤。在此示例中添加液体过滤条件 url_encode 后,将网址不安全字符串转换为百分号编码字符串。这样可确保包含特殊字符(例如空格或逗号)的过滤条件值可以传递到关联的信息中心。

在下面的示例中,用户按州“加利福尼亚州”过滤了查询。此链接将打开一个已针对加利福尼亚州过滤的信息中心:

这也适用于将过滤条件值传递给关联的 Looks 和 Discover:

dimension: name {
    link: {
      label: "Average Order Profit Look"
      url: "https://instance_name.looker.com/looks/249?&f[users.state]={{ _filters['users.state'] | url_encode }}"
    }
    link: {
      label: "User Facts Explore Explore"
      url: "https://instance_name.looker.com/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: "https://instance_name.looker.com/dashboards/694?State={{ _filters['users.state'] | url_encode }}&Date={{ _filters['orders.date'] | url_encode }}"
  }
  link: {
    label: "Average Order Profit Look"
    url: "https://instance_name.looker.com/looks/249?&f[users.state]={{ _filters['users.state'] | url_encode }}&f[orders.date]={{ _filters['orders.date'] | url_encode }}"
  }
}

链接到信息中心和 Looks:关联的信息中心或 Look 必须采用可接受指定过滤条件值的过滤条件进行配置。在上面的示例中,关联的商家动态(按状态)信息中心配置了基于 users.state(名称为“State”)的过滤条件,以便将 _filters['users.state'] 过滤条件值传递到信息中心。如果信息中心或 Look 没有使用所传递值的过滤条件,相应链接仍然有效,但该过滤条件值不会应用于信息中心。

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

如果您的 Looker 管理员启用了可视化深入分析实验室功能,您可以使用 link 参数和 Liquid 变量来自定义“探索”“探索”和“旧版”信息中心的展开叠加层中显示的可视化图表。全新信息中心体验支持使用 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 字段(与您要点击的值相关联)的值,则应对运算符字符(在本例中为 %3E)进行部分编码,并将其添加到网址中:

f[orders.order_id]=%3E{{ other_orders.order_id._value }}
添加多个过滤条件

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

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 }}"
    }
}

如果用户点击加利福尼亚州圣克鲁斯,以深入了解按此城市过滤的结果,则生成的细目将返回包含圣克鲁斯加拿大的所有结果。

如果使用的是 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"
    }
}

其他资源