使用 DRY LookML 最大限度地提高代码可重用性:只需定义一次字符串,即可在整个 LookML 项目中使用

您可以在项目的清单文件中使用 LookML constant 参数来定义可在整个项目中使用的字符串。当您需要定义特定字符串(例如数字、名称或字段值的 HTML 格式)并在整个项目中重复使用该值时,LookML 常量会非常有用。

本页包含以下示例,展示了如何使用 LookML 常量在一个位置定义和维护可重复使用的字符串值:

所需材料

前提条件

示例:在多个探索的标签中使用相同的字符串

假设您想在界面中创建两个探索,分别标记为旧金山用户旧金山订单,但不想手动输入每个标签的文本。

为此,您可以在项目的项目清单文件中定义一个值为 "San Francisco" 的常量 place_name

constant: place_name {
  value: "San Francisco"
}

然后,您可以使用 @{place_name} 语法在项目中接受字符串的任何部分引用此常量。在此示例中,您可以定义 usersorders 探索,并指定 "@{place_name} Users""@{place_name} Orders" 作为 label 参数的值,如以下示例所示:


explore: users {
  label: "@{place_name} Users"
}

explore: orders {
  label: "@{place_name} Orders"
}

在此示例中,Looker 会在“探索”菜单和探索的标题中显示旧金山用户旧金山订单,而不是默认的用户订单标签。

假设您想将所有对旧金山的引用更新为湾区

您只需对项目清单文件中的 place_name 常量进行一次更新,而无需手动更新每个引用:

constant: place_name {
  value: "Bay Area"
}

由于您定义了 place_name 常量,因此无需在多个位置手动将 San Francisco 更改为 Bay Area。系统会将引用 place_name 常量的 San Francisco 替换为 Bay Area,因此 Looker 会在“探索”菜单和探索的标题中显示 Bay Area UsersBay Area Orders

示例:为多个字段中的负值应用相同的格式

假设您希望在图表或查询中显示负数据值时,这些值以红色显示并用英文圆括号括起来。

通过将此格式设置为 LookML 常量的值,您可以使用 Liquid 变量HTML 只指定一次格式。然后,您可以在想要将该格式应用于字段时引用该常量。

例如,您可以创建一个名为 negative_format 的常量,用于将此格式应用于字段:


constant: negative_format {
  value: "{% if value < 0 %}
            <p style='color:red;'>({{rendered_value}})</p>
          {% else %}
            {{rendered_value}}
          {% endif %}"
}

此代码创建了常量 negative_format,用于指定负数据值应采用红色字体并用英文圆括号括起来。然后,您可以使用 html 参数将此格式应用于数据集中的维度和度量。

例如,您可以创建 type: sum总金额度量,并将 html 参数的值指定为 @{negative_format}


measure: total_amount {
  type: sum
  value_format_name: usd
  sql: ${amount} ;;
  html: @{negative_format} ;;
}

在您的表格中,总金额指标的负值将按照 negative_format 常量定义中的指定格式设置,即采用红色字体并用英文圆括号括起来。

如果您想对其他字段的负值应用相同的格式,可以在这些字段的 html 参数中引用 negative_format 常量。