常量

用法

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

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

定义

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

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

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

export

您可以使用 exportconstant 子参数来确定在将引用常量的文件 导入到其他项目 时,如何使用常量。

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

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

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

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

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

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

示例

以下是一些示例,说明如何使用 constant 形参定义可在整个项目中使用的值。

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

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

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"
}

然后,您可以通过指定 @{schema}.view_name 作为 sql_table_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,并指定 @{negative_format} 作为 html 形参的值:


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

在信息中心智能体指令中使用常量 [预览版]

您还可以在 instructions 形参的 LookML 信息中心智能体 中使用 LookML 常量,以便在多个信息中心智能体之间共享标准业务规则或准则。

例如,在 manifest.lkml 文件中定义一个常量:

constant: FISCAL_YEAR_RULE {
  value: "Always filter all requests by the current fiscal year unless specified otherwise."
}

然后,您可以在 instructions 形参中引用该常量:agent

agent: sales_dashboard_agent {
  instructions: "Focus on revenue metrics. @{FISCAL_YEAR_RULE}"
  is_dashboard_agent: yes
}

注意事项

在常量定义中引用常量

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


constant: city {
  value: "San Francisco"
}

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


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

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

转义常量语法

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

```none

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




In this example, the [`label` parameter](/looker/docs/2614/reference/param-explore-label) displays the string **@{id}** as the label for the `id` dimension, rather than evaluating the `id` constant and outputting its value.

Constant references won't be evaluated if the brackets are not closed, in which case it is not necessary to escape constant syntax. Thus, `@{id` in the following example wouldn't be evaluated as a constant.


```none

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