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

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

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

原料

前提条件

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

假设您想创建两个在界面中分别标为“San Francisco Users”和 “San Francisco Orders”的探索,但不想手动输入每个标签的文本。

为此,您可以在项目的项目清单文件中定义一个值为 "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 会在“探索”菜单和“探索”标题中显示“旧金山用户数”和“旧金山订单数”,而不是默认的“用户数”和“订单数”标签。

假设您想将所有对 San Francisco 的引用都更新为 Bay Area

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

constant: place_name {
  value: "Bay Area"
}

由于您定义了 place_name 常量,因此无需在多个位置手动将“旧金山”更改为“湾区”。San Francisco(使用 place_name 常量)的引用将被替换为湾区,因此 Looker 将在“探索”菜单和“探索”的标题中显示湾区用户湾区订单

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

假设您希望负数据值在图表或查询中出现的位置都以红色和括号内显示。

通过将此格式设置为 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} ;;
}

在表格中,Total Amount 计量单位为负值将按照 negative_format 常量定义中指定的格式采用红色字体并用圆括号括起来。

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