使用 Liquid 和 HTML 创建动态信息中心图片

您可以通过在 Markdown 文本图块中对图片网址进行硬编码,将图片添加到 Looker 信息中心。不过,文本图块中的图片是静态的,不会根据结果更新。如果您希望信息中心图片根据用户选择的过滤条件值动态变化,该怎么办?

本最佳实践页面演示了如何使用 Liquidhtml 参数实现动态信息中心图片。

解决方案

以下解决方案基于一个电子商务数据集,其中包含一个名为 users.state 的字段,表示一个假设的电子商务数据集中的州:

dimension: state {
  type: string
  sql: ${TABLE}.state ;;
}

假设您想在信息中心显示州旗帜的图片,该信息中心会根据用户选择用来过滤信息中心结果的状态进行更新。

您需要完成以下三个步骤,才能创建动态信息中心图片:

  1. 在 LookML 中创建图片尺寸。
  2. 创建动态图片信息中心图块。
  3. 添加信息中心过滤条件和最后的修改。

第 1 步:在 LookML 中创建图片尺寸

如需在 LookML 中创建图片尺寸,请执行以下操作:

  1. 首先,前往项目并查看您要添加图片的维度所在的文件。然后,根据该字段创建新尺寸,专门用于展示图片。
  2. 添加一个 html 参数,使用 value 变量为您要显示图片的每个值定义一个 Liquid {% dynamic if %} 条件语句

    例如,下面的 state_flag_image 维度会创建一个条件,以便在 state 的值为 "California""New York""Colorado""Illinois" 时显示指定图片(包含 html <img> 标记)。对于所有其他状态,您可以显示“没有图片”图标:

          dimension: state_flag_image {
              type: string
              sql: ${state} ;;
              html:
                  {% dynamic if state._value == "California" %}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_California.svg" height="170" width="255">
                  {% elsif state._value == "New York" %}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Flag_of_New_York.svg/1200px-Flag_of_New_York.svg.png" height="170" width="255">
                  {% elsif state._value == "Colorado" %}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Flag_of_Colorado.svg/255px-Flag_of_Colorado.svg.png" height="170" width="255">
                  {% elsif state._value == "Illinois"%}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Illinois.svg/1200px-Flag_of_Illinois.svg.png" height="170" width="255">
                  {% dynamic else %}
                  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/No_image_available.svg/1024px-No_image_available.svg.png" height="170" width="170">
                  {% dynamic endif %} ;;
          }
    
  3. 为要显示图片的每个值创建一个值条件。或者,您也可以使用 value Liquid 变量创建动态图片字段,如如何向可视化图表添加图片社区帖子中所述。

接下来,您可以为图片维度创建信息中心图块。

第 2 步:创建动态图片信息中心图块

现在,图片维度 (state_flag_image) 已创建完毕,您可以构建将用作动态图片信息中心图块的“探索”。

使用以下条件构建您的探索:

  • 为原始维度(在本例中为 state)添加过滤条件。为任意值设置过滤条件(在本例中,状态标记将显示“无图片”图片,因为未选择任何特定的过滤条件值)。此过滤条件值会根据用户为信息中心过滤条件选择的内容更新。 
  • 选择图片尺寸(在本例中为 state_flag_image)以及执行确定图片的查询所需的任何其他维度(例如,如果您想将日期考虑在内,则可以添加日期等)。
  • 行数上限更改为一行。
  • 将可视化图表类型更改为单值可视化图表,并隐藏除图片维度 (state_flag_image) 以外的任何其他列。

“探索”功能将在可视化图表面板中呈现的单值可视化图表中显示第一张图片。显示图片会根据用户在最终信息中心内选择的过滤条件值而变化:

将“探索”功能以功能块的形式保存到信息中心。

第 3 步:添加信息中心过滤条件和最后的修改

现在,您需要向信息中心添加信息中心过滤条件。信息中心内的过滤器会更新“探索”中的过滤器,以根据用户选择更改显示的图片。

在信息中心的修改模式下,创建过滤器

  • 打开“添加过滤条件”窗口
  • 选择要作为过滤条件的字段。过滤器字段应为图片尺寸所依据的维度。在此示例中,过滤器的字段将为 state
  • 要更新的图块标签页上,选择第 2 步中的图片图块。
  • 在内嵌的state下拉菜单中选择原始维度(在本例中为state)。
  • 根据需要选择要更新的其他功能块。
  • 根据需要自定义过滤器。如果您选择高级 控制选项,请务必取消选择允许多个过滤条件值选项,该选项会自动为高级控制选项启用。

现在,图片图块会根据用户选择的滤镜进行更新。

如果用户选择按“加利福尼亚州”进行过滤,信息中心就会显示加利福尼亚州的旗帜和数据:

当用户选择按“科罗拉多州”过滤时,信息中心会显示科罗拉多州的州旗和数据: