常數

用量

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 探索,並為 label 參數指定 "@{city} Users""@{city} Orders" 做為值,如下列範例所示:


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 測量值,並將 @{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

注意事項

在常數定義中參照常數

定義常數時,您可以參照專案資訊清單檔案中定義的其他常數。假設您已宣告常數 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 常數並輸出其值。

如果方括號未關閉,系統就不會評估常數參照,因此不必逸出常數語法。因此,在下列範例中,@{id 不會評估為常數。


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