常量

用法

constant: constant_name {
  value: "string"
  export: none | override_required | override_optional
}
层次结构
constant
默认值

接受
  • 一个 value 子参数,接受一个字符串,用于指定常量的值
  • 一个 export 子形参,用于指定在导入项目中使用的常量是否必须被替换

定义

constant 参数用于定义 LookML 常量,以便您指定可在整个项目中重复使用的值。常量可在模型中接受字符串的任何位置引用,也可在 LookML 信息中心元素的 modelexplore 参数中引用,从而有助于减少 LookML 代码中的重复内容。

常量必须在项目清单文件中定义。然后,您可以使用 @{constant_name} 语法在整个项目中使用常量。

您可以使用 constantexport 子形参来指定开发者在将引用常量的文件导入到其他项目时是否应替换常量的值。

export

您可以使用 constantexport 子形参来确定在将引用某个常量的文件导入到其他项目时,该常量的使用方式。

默认情况下,引用常量的导入文件在导入项目中会使用导入项目清单文件中指定的值。export 参数用于指定开发者是否应通过为常量提供新值来替换常量的值,以便在导入的项目中使用。export 参数可用的值如下:

  • noneexport 的默认值。无法在导入项目中替换常量的价值。导入项目使用导入项目的清单文件中指定的常量值。
  • override_optional:您可以在导入的项目中选择性地替换常量的值。如果导入项目的清单文件中未提供值,则使用导入项目中的原始值。
  • override_required:导入项目必须替换导入项目的清单文件中最初指定的常量值。如果导入的项目中未提供新的常量值,Looker 将显示错误。

常量仅适用于最初定义它们的项目中的文件。因此,在您导入了其文件的项目中定义的常量只能由导入的文件使用,而不能由导入项目中定义的文件使用。

如果您想在导入项目的文件中使用常量,则应在导入项目的清单文件中定义一个新常量。以这种方式定义的常量仅适用于导入项目中所定义的文件。

将引用常量的文件导入到另一个项目时,您可以在导入项目的清单文件中使用 local_dependencyremote_dependencyoverride_constant 子形参,为 export 设置为 override_optionaloverride_required 的常量提供新值。

如需了解详情和有关替换导入项目中的常量的示例,请参阅从其他项目导入文件文档页面。

示例

以下是一些示例,展示了如何使用 constant 参数来定义可在整个项目中使用的值。

使用 constant 参数为探索添加标签

假设您想在界面中创建两个探索,分别标记为旧金山用户旧金山订单。为此,您可以在项目的 manifest.lkml 文件中定义一个值为 "San Francisco" 的常量 city

constant: city {
  value: "San Francisco"
}

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


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

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

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

sql_table_name 参数与常量搭配使用

假设您想基于架构 02349_sfo 中的表创建多个视图。为避免多次指定值 02349_sfo,您可以在项目的 manifest.lkml 文件中创建一个名为 schema 的常量,如下所示:


constant: schema {
  value: "02349_sfo"
}

然后,您可以通过指定 sql_table_name 参数的值为 @{schema}.view_name,基于 02349_sfo 架构创建视图:


view: users {
  sql_table_name: @{schema}.users ;;
}

这会创建一个名为 Users 的视图,该视图基于架构 02349_sfo 中的 users 表。

将 Liquid 变量和 HTML 与常量搭配使用

假设您希望负数据值显示在圆括号内,并以红色字体显示。通过将此格式设置为 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 常量定义中的指定格式设置,即采用红色字体并用英文圆括号括起来。

在 LookML 信息中心中使用常量

为 LookML 信息中心定义信息中心元素时,您可以使用 LookML 常量来定义元素所基于的模型和探索。

举例来说,假设您已在项目的 manifest.lkml 文件中定义了常量 model_nameexplore_name


constant: model_name {
  value: "thelook"
}

constant: explore_name {
  value: "orders"
}

信息中心文件中,您可以将 model 的值设置为 "@{model_name}",并将 explore 的值设置为 "@{explore_name}",以使任何信息中心元素都基于模型 thelook 和探索 orders

例如,假设您正在修改柱状图元素的 LookML。在信息中心文件中,您可以按如下方式指定 modelexplore 参数的值:


- dashboard: dashboard_name
  title: "dashboard title"
  layout: newspaper
  elements:
  - title: Element Title
    name: element_name
    model: "@{model_name}"
    explore: "@{explore_name}"
    type: looker_column

注意事项

在常量定义中引用常量

定义常量时,您可以引用项目中清单文件中定义的其他常量。假设您已声明常量 city


constant: city {
  value: "San Francisco"
}

然后,您可以声明一个引用 city 常量的常量 state


constant: city_state {
  value: "@{city}, California"
}

常量 state 将解析为字符串“San Francisco, California”。

转义常量语法

如果您想编写一个类似于常量语法的字符串,但不希望该字符串被评估为常量,则可以在 @ 字符后使用反斜杠转义字符 \ 对常量语法进行转义。例如:


dimension: id {
  type: string
  label: "@\{id}"
  sql: ${TABLE}.id
}

在此示例中,label 参数将字符串 @{id} 显示为 id 维度的标签,而不是评估 id 常量并输出其值。

如果方括号未闭合,则不会评估常量引用,在这种情况下,无需转义常量语法。因此,以下示例中的 @{id 不会被评估为常量。


dimension: id {
  type: string
  label: "@{id"
  sql: ${TABLE}.id
}