用量
constant: constant_name { value: "string" export: none | override_required | override_optional }
|
階層
constant |
預設值
無
接受
|
定義
constant 參數會定義 LookML 常數,讓您指定可在整個專案中重複使用的值。您可以在模型中接受字串的任何位置,以及使用 LookML 資訊主頁元素的 model 和 explore 參數參照常數,藉此減少 LookML 程式碼中的重複內容。
常數必須在專案資訊清單檔案中定義。然後,您就可以在整個專案中使用 @{constant_name} 語法。
您可以透過 constant 的 export 子參數,指定開發人員在將參照常數的檔案匯入其他專案時,是否應覆寫常數的值。
export
您可以透過 constant 的 export 子參數,決定在匯入其他專案時,如何使用參照該常數的檔案。
根據預設,如果匯入的檔案參照常數,匯入專案會使用匯入專案資訊清單檔案中指定的值。export 參數會指定開發人員是否應覆寫常數的值,方法是為該常數提供新值,以便在匯入專案時使用。export 參數的可能值如下:
none:export的預設值。匯入專案時無法覆寫常數的值。匯入專案會使用匯入專案資訊清單檔案中指定的常數值。override_optional:您可以在匯入專案中選擇覆寫常數值。如果匯入專案的資訊清單檔案未提供值,系統會使用匯入專案的原始值。override_required:匯入專案必須覆寫匯入專案資訊清單檔案中原本指定的常數值。如果匯入專案中未提供新的常數值,Looker 會顯示錯誤。
常數只能用於原始定義常數的專案檔案。因此,在您匯入檔案的專案中定義的常數,只能由匯入的檔案使用,無法由匯入專案中定義的檔案使用。
如要在匯入專案的檔案中使用常數,請在匯入專案的資訊清單檔案中定義新的常數。以這種方式定義的常數,只適用於匯入專案中定義的檔案。
將參照常數的檔案匯入其他專案時,您可以在匯入專案的資訊清單檔案中使用 local_dependency 或 remote_dependency 的 override_constant 子參數,為 export 設為 override_optional 或 override_required 的常數提供新值。
如需更多資訊和覆寫匯入專案中常數的範例,請參閱「從其他專案匯入檔案」說明文件頁面。
範例
以下舉例說明如何使用 constant 參數定義可在整個專案中使用的值。
使用 constant 參數標記探索
假設您想在使用者介面中建立兩個探索,分別標示為「舊金山使用者」和「舊金山訂單」。如要這麼做,請在專案的 manifest.lkml 檔案中,定義值為 "San Francisco" 的常數 city:
constant: city {
value: "San Francisco"
}
然後,您可以使用 @{city} 語法,在專案中接受字串的任何部分參照這個常數。在本範例中,您可以定義 users 和 orders 探索,並為 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_name 和 explore_name:
constant: model_name {
value: "thelook"
}
constant: explore_name {
value: "orders"
}
在資訊主頁檔案中,您可以將 model 的值設為 "@{model_name}",並將 explore 的值設為 "@{explore_name}",讓任何資訊主頁元素以模型 thelook 和「探索」orders 為依據。
舉例來說,假設您要編輯直條圖元素的 LookML,在資訊主頁檔案中,您可以指定 model 和 explore 參數的值,如下所示:
- 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
}