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

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

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

所需要素

前提条件

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

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

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

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 常量对“旧金山”的引用将替换为“湾区”,因此 Looker 将在“探索”菜单和“探索”的标题中显示“湾区用户”和“湾区订单”。

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

假设您希望负数据值在报告中的任何位置显示为红色并用括号括起来。

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

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


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

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

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


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

在表格中,总金额衡量的负值会采用 negative_format 常量定义中指定的格式,以红色字体显示并用括号括起来。

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