使用 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 会在“探索”菜单和“探索”标题中显示“旧金山用户数”和“旧金山订单数”,而不是默认的“用户数”和“订单数”标签。

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

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

constant: place_name {
  value: "Bay Area"
}

由于您定义了 place_name 常量,因此无需在多个位置手动将“旧金山”更改为“湾区”。使用 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总金额衡量标准,并将 @{negative_format} 指定为 html 参数的值:


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

在表格中,总金额测量的负值将采用 negative_format 常量定义中指定的格式,采用红色字体并用圆括号括起来。

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