您可以將其他 LookML 專案和外部存放區的檔案匯入目前專案,以便在多個專案中使用模型檔案、檢視檔案和其他檔案。匯入的專案為唯讀,如要編輯檔案,必須從檔案所屬的 LookML 專案 (或連線至檔案 Git 存放區的其他編輯器) 進行編輯。
將檔案匯入 LookML 專案的用途有很多,以下列舉幾個例子:
以已安裝的 Looker Block 為基礎,不必直接變更。如果 Looker 變更了區塊,您可以提取變更,因為您新增至區塊的所有 LookML 都會保留在個別存放區中。
維護根據資料庫結構定義自動產生的基本專案。您可以將所有自訂維度、指標等項目放在另一個專案中,並從自動產生的專案匯入所有 LookML。您可以定期重新產生基礎專案,因應資料庫結構定義的變更,而不必覆寫所有自訂 LookML。
將共用物件封裝在單一專案中,然後匯入多個其他專案。舉例來說,如果您有多個資料庫共用同一個資料表,可以將該資料表的檢視畫面放在一個專案中,並在該處維護。然後將資料表匯入其他專案,供這些專案使用。
如要從其他專案匯入檔案,請執行下列工作:
- 建立專案資訊清單檔案。
- 指定要匯入的本機或遠端專案。
- 查看匯入專案中的檔案。
- 加入已匯入專案中的檔案。
接著,您就可以參照匯入專案檔案中的欄位,並覆寫匯入專案中定義的常數值 (如果常數允許覆寫)。
建立專案資訊清單檔案
凡是從其他專案匯入檔案的專案,都必須有專案資訊清單檔案。如果專案還沒有資訊清單檔案,您可以從 Looker IDE 的檔案瀏覽器頂端,使用 + 圖示建立一個。
如要匯入專案,請在資訊清單中指定專案。您可以指定本機或遠端專案,詳情請參閱下列章節。
匯入本機專案
只有在匯入的專案位於相同 Looker 執行個體時,才能使用本機專案匯入功能。此外,建議開發人員對匯入專案的模型具備模型權限。如果開發人員在匯入的專案中擁有模型權限,版本控管就會是動態的,也就是說,匯入專案中的變更會立即影響匯入該專案的專案。開發人員可先驗證這兩個專案的變更,再推送至正式環境。此外,如果開發人員在兩個專案中都擁有模型權限,匯入的專案檔案會反映開發人員的開發模式狀態。因此,如果開發人員處於開發模式,Looker IDE 會顯示匯入專案檔案的開發模式。如果開發人員處於正式版模式,Looker IDE 會顯示匯入專案的正式版模式。
在資訊清單檔案中,project_name
參數會指定目前專案的名稱 (為專案建立資訊清單檔案時,Looker 會自動填入這個參數)。如要將本機專案匯入目前專案,請使用一或多個 local_dependency
參數指定要匯入的專案:
# This project
project_name: "my_project"
# The project to import
local_dependency: {
project: "my_other_project"
}
在下列情況下,請使用遠端專案匯入,而非本機專案匯入:
- 開發人員在匯入專案的模型中沒有模型權限。如果是這種情況,Looker 會複製匯入專案的「正式版模式」,並在 IDE 中顯示該靜態版本的檔案。這個靜態版本永遠不會顯示檔案的開發模式版本,而且可能與目前的生產模式不同步,也不會提醒開發人員。建議使用遠端專案匯入功能,並提供
ref
,指定遠端專案中的 Git 分支版本或 Git 發行版本。這麼做之後,Looker 就會自動偵測遠端專案中的新修訂版本,開發人員會收到警示,然後就能匯入最新版本的遠端專案檔案。 - 開發人員一律需要使用匯入專案的正式版。
- 開發人員需要使用匯入專案檔案的靜態版本。
匯入遠端專案
在遠端匯入作業中,匯入的專案不一定要位於相同執行個體。而是透過遠端 Git 存放區匯入專案。
如要匯入遠端存放區,請使用 remote_dependency
參數提供遠端存放區的資訊。remote_dependency
參數會採用下列資訊和子參數:
- 匯入專案的名稱,可自訂。在以下範例中,專案名稱為
ga_360_block
。您可以在include
陳述式中使用這個名稱,在 LookML 專案中參照匯入的檔案。這個名稱也會做為 Looker IDEimported_projects
資料夾下的資料夾名稱。 url
子參數,用於指定外部 Git 存放區的位址。使用存放區的主要網址。ref
子參數,用於指定 Git 分支版本、Git 發布標記,或 Git 存放區中某次提交的 SHA。如要使用靜態版本控管,可以指定提交 SHA,這樣匯入專案的變更就不會自動反映在專案中 (這是 Looker Blocks 的理想做法)。或者,您也可以指定 Git 分支或 Git 發布標記,讓 Looker 自動偵測遠端專案中的新修訂版本。詳情請參閱本頁面的「自動偵測遠端專案的新版本」一節。override_constant
子參數,這個選用子參數可讓您覆寫匯入專案中定義的常數值。
以下是專案資訊清單檔案中的 remote_dependency
參數範例。本範例使用 HTTPS 連線:
remote_dependency: ga360_block {
url: "https://github.com/llooker/google_ga360"
ref: "master"
override_constant: connection {
value: "importing_project_connection"
}
}
您也可以使用 SSH:
remote_dependency: ga360_block {
url: "[email protected]:llooker/google_ga360.git"
ref: "master"
override_constant: connection {
value: "importing_project_connection"
}
}
新增遠端依附元件後,您可能需要設定遠端專案的匯入憑證,請參閱本頁面的「設定私有遠端存放區的驗證憑證」一節。
自動偵測遠端專案的新版本
如果您在資訊清單檔案的 remote_dependency
中指定 Git 分支版本或 Git 發布標記,Looker 就會自動偵測遠端專案中的新修訂版本。ref
子參數
舉例來說,以下是遠端依附元件,其中 master
分支是在 ref
子參數中指定:
remote_dependency: exchange_rate {
url: "https://github.com/llooker/datablocks-exchangerate.git"
ref: "master"
}
隨後,當 master
分支版本透過新提交內容更新時,Looker 會自動偵測到變更。
以下範例則指定了 v1.0
發布標記:
remote_dependency: e_faa_original {
url: "https://github.com/llooker/google_ga360"
ref: "v1.0"
}
無論您為 ref
參數指定的值類型為何 (即使是提交 SHA),只要在專案中新增 remote_dependency
參數,IDE 就會在頂端專案導覽列中顯示「更新依附元件」按鈕。
按一下「Update Dependencies」,匯入遠端專案檔案。如果這是您首次在專案中新增遠端依附元件,更新依附元件時,Looker 也會提示您建立資訊清單鎖定檔案。Looker 會使用資訊清單鎖定檔案追蹤遠端專案的版本。
如果您在 ref
子參數中指定 Git 分支或 Git 發布標記,每當 Looker IDE 重新整理時 (Looker 開發人員進入開發模式、在 IDE 中執行 Git 動作或重新整理瀏覽器時),Looker 就會檢查是否有新的修訂版本。
如有新的修訂版本,Looker 會在 IDE 的 Git 動作面板中顯示「更新依附元件」選項。
選取「Update Dependencies」選項,將最新的遠端專案檔案匯入專案。
取得最新檔案後,您可以驗證 LookML,確認專案的所有參照都適用於更新後的遠端專案檔案。接著修正所有失效的參照,並部署變更,使用者完全不會受到影響。
資訊清單鎖定檔案
Looker 會使用名為 manifest_lock.lkml
的資訊清單鎖定檔案,追蹤遠端匯入專案的版本。資訊清單鎖定檔案會列在 Looker IDE 的檔案瀏覽器面板中。
Looker 會自動管理鎖定檔案,因此 Looker 開發人員不需要建立或編輯資訊清單鎖定檔案。
資訊清單鎖定檔案會顯示每個遠端專案,以 remote_dependency
項目表示,並包含 url
和 ref
子參數:
remote_dependency
參數表示 Looker 開發人員在資訊清單檔案中指定的遠端專案名稱。url
子參數表示外部 Git 存放區的位址,Looker 開發人員已在資訊清單檔案中指定該位址。ref
子參數會顯示 Looker 在專案中使用的專案版本 (以提交 SHA 表示):- 如果遠端專案是在資訊清單檔案中,以 Git 分支版本或 Git 發布標記的
ref
定義,則ref
參數會顯示專案目前使用的檔案版本 (遠端專案修訂版本 SHA)。如果遠端專案中有新的修訂版本,Looker 會在 IDE 中顯示「更新依附元件」按鈕,方便您匯入最新的遠端專案檔案。資訊清單鎖定檔案中的ref
值隨即會更新,顯示該分支或發布標記的最新修訂版本 SHA。 - 如果遠端專案是在資訊清單檔案中定義,且
ref
為特定提交 SHA,則資訊清單鎖定檔案中的ref
參數會是相同的提交 SHA。
- 如果遠端專案是在資訊清單檔案中,以 Git 分支版本或 Git 發布標記的
設定私人遠端存放區的驗證憑證
如要設定私有遠端存放區的驗證憑證,請在 IDE 的左側導覽窗格中選取「設定」
,然後前往「匯入憑證」頁面。「匯入憑證」設定會顯示專案資訊清單檔案中定義的每個遠端存放區網址、存放區使用的驗證類型 (https
或 ssh
),以及 Looker 是否能順利連線至存放區。
新增驗證憑證
如要為存放區新增驗證憑證,請按照下列步驟操作:
在「URL」標題下方的「Import Credentials」頁面中,將指標懸停在存放區名稱上,顯示「Test」和「Configure」按鈕,然後按一下「Configure」。
Looker 會顯示「設定 Git 驗證」對話方塊,讓您設定遠端存放區的憑證。對話方塊會指出該存放區所需的憑證類型。
如果存放區需要使用者名稱和密碼 (或個人存取權杖) 進行驗證,請輸入使用者名稱和密碼或權杖,然後按一下「儲存變更」。
如果存放區需要 SSH 金鑰,例如本頁稍早使用 SSH 匯入遠端專案的範例,Looker 會顯示對話方塊,其中顯示本機 SSH 金鑰。按一下「複製金鑰」,將 SSH 金鑰複製到剪貼簿,然後新增至存放區的金鑰清單。
儲存憑證後,按一下「測試」,測試 Looker 對存放區的存取權。
通過連線測試並連線至存放區後,「匯入憑證」部分會顯示存放區名稱旁的綠色勾號。
編輯驗證憑證
如要編輯存放區的驗證憑證,請按照下列步驟操作:
如要顯示「測試」和「編輯」按鈕,請將指標懸停在已設定驗證憑證的存放區上,然後按一下「編輯」。
如果存放區需要使用者名稱和密碼 (或個人存取權杖) 進行驗證,請按一下「清除憑證」,然後在確認對話方塊中按一下「是,清除憑證」。
在「設定 Git 驗證」對話方塊中輸入新憑證,然後按一下「儲存變更」。
查看匯入專案中的檔案
Looker IDE 會在左側導覽窗格的 imported_projects
資料夾中顯示匯入的專案檔案。您可以選取匯入的專案檔案,查看檔案內容。
本機專案和遠端專案的檔案會列在 imported_projects
資料夾中。
您也可以透過物件瀏覽器,查看匯入專案檔案中的物件,這些物件會納入有效專案。從 Looker IDE 的導覽列存取物件瀏覽器。
此外,具備 develop
權限的使用者可以透過中繼資料面板查看匯入專案的物件資訊,包括導覽至定義物件的匯入檔案的連結。詳情請參閱「LookML 物件的中繼資料」說明文件頁面。
包括從匯入專案取得的檔案
模型檔案中的 include
參數會指定該模型可用的專案檔案。在資訊清單檔案中指定本機或遠端匯入的專案後,您可以在模型檔案中使用 include
參數,指定匯入專案中的檔案。只能加入專案列於資訊清單檔案中的檔案。
如要include
其他專案中的檔案,請使用檔案名稱、兩個正斜線 (//
) 和匯入的專案名稱。在匯入的專案名稱後方加上單一正斜線 (/
),然後輸入要加入的檔案完整路徑。
舉例來說,下列 include
指令會指出從 e_flights
匯入專案的 users
檢視檔案,以及從 e_commerce
匯入專案的 orders
檢視檔案:
include: "//e_flights/views/users.view.lkml"
include: "//e_commerce/public/orders.view.lkml"
如要瞭解如何指定啟用 IDE 資料夾的路徑,請參閱 include
參數頁面的「路徑語法」一節。
您可以使用萬用字元納入多個檔案。舉例來說,如要納入已匯入專案 e_flights
的 /views/
目錄中的所有檢視區塊檔案:
include: "//e_flights/views/*.view"
此外,您可以使用萬用字元,將範圍限定在特定目錄層級,或匯入專案中的遞迴目錄:
include: "//e_flights/*/*.view.lkml"
include: "//e_commerce/*/*.view.lkml"
如要瞭解如何搭配使用萬用字元和已啟用 IDE 資料夾,請參閱 include
參數頁面的「萬用字元範例」一節。
包含模型檔案
您無法加入其他專案的模型檔案。如要跨專案重複使用、調整或擴充「探索」,可以在匯入的專案中建立個別的「探索」檔案,然後將該檔案納入其他專案。詳情請參閱 include
參數說明頁面的「在模型中加入探索」一節。
包括包含其他檔案的檔案
如果檔案包含其他檔案,系統會先解析所有包含的檔案,再將檔案傳遞至下一個包含該檔案的專案。
舉例來說,如果您在目前的專案中匯入另一個專案 (proj_A
) 的檔案 (A
),而匯入的檔案包含 include
參數,其中包含專案 proj_B
的檔案 B
,則檔案 B
會先併入檔案 A
,再將檔案 A
匯入目前的專案。
匯入資料檔案
系統不會匯入專案資料部分中儲存的檔案。如要參照匯入專案中的資料檔案 (例如在 map_layer
參數中),請使用檔案的完整路徑和檔案名稱。例如:
map_layer: json_from_imported_project {
file: "//path_to_imported_project/folder/filename.topojson"
...
}
參照匯入專案中的檔案
將檢視檔案匯入專案後,您可以使用 ${view_name.field_name}
語法參照匯入檢視區塊的欄位,就像檢視檔案是該專案的一部分一樣。舉例來說,假設您已在專案資訊清單檔案中匯入 ga_360_block
專案,且模型檔案中含有下列 include
陳述式:
include: "//ga_360_block/ga_block.view"
您可以使用 ${ga_block.hits_total}
語法,參照所含 ga_block
檢視區塊的 hits_total
欄位。
在匯入專案的檔案中使用常數
LookML 常數可讓您在專案的資訊清單檔案中定義值,並在整個專案中重複使用。constant
參數的 export
子參數會指定將參照常數的檔案匯入其他專案時,是否可以覆寫常數的值。
export
參數的可能值如下:
none
:export
的預設值。您無法在匯入專案中覆寫常數的值。匯入專案會使用匯入專案資訊清單檔案中指定的常數值。override_optional
:您可以在匯入專案中選擇覆寫常數值。如果匯入專案的資訊清單檔案未提供值,系統會使用匯入專案的原始值。override_required
:匯入專案必須覆寫匯入專案資訊清單檔案中原本指定的常數值。如果匯入的專案未提供新的常數值,Looker 會顯示錯誤。
將參照常數的檔案匯入專案時,只要常數在原始專案中將 export
設為 override_optional
或 override_required
,您就可以在專案的資訊清單檔案中使用 local_dependency
或 remote_dependency
的 override_constant
子參數,為該常數提供新值。從匯入的專案覆寫常數值時,專案會使用您透過 override_constant
參數指定的值。
舉例來說,假設您在單一 Looker 執行個體上管理多個資料庫,且每個資料庫都有各自的專案。此外,假設每個資料庫的資料結構定義都相同,而您的目標是定義一次分析,然後套用至每個資料集。
在本例中,假設 proj_core
是您定義檢視區塊的基本專案,您想將這些檢視區塊匯入其他專案。此外,您想匯入的其中一個檢視區塊是 orders
檢視區塊,定義如下:
view: orders {
sql_table_name: "@{schema_name}.orders"
}
orders
檢視畫面所依據的結構定義,是使用 schema_name
常數在 sql_table_name
參數中指定,而 schema_name
常數則是在 proj_core
資訊清單檔案中定義。在下列範例中,由於 schema_name
常數設為 export: override_required
,因此匯入 schema_name
的任何專案都必須使用 override_constant
參數覆寫其值:
constant: schema_name {
value: "proj_core_schema"
export: override_required
}
舉例來說,假設您想將 orders
檢視區塊匯入名為 proj_a
的本機專案。資料庫中也有一個名為 orders
的資料表 (適用於 proj_a
),結構與基本專案 proj_core
中的 orders
資料表相同。
由於 proj_core
和 proj_a
位於相同例項,因此您可以使用 local_dependency
,將 orders
檢視區塊匯入 proj_a
。然後使用 local_dependency
的 override_constant
子參數,更新 schema_name
常數,指向 proj_a
資訊清單檔案中的結構定義 proj_a_schema
:
project_name: "proj_a"
local_dependency: {
project: "proj_core"
override_constant: schema_name {
value: "proj_a_schema"
}
}
在本範例中,由於 schema_name
常數在 project_core
中設為 export: override_required
,如果您未在 proj_a
(匯入專案) 中覆寫其值,Looker 就會顯示錯誤。
在 proj_a
中覆寫 schema_name
常數,即可在 proj_core
中使用 orders
檢視畫面中定義的欄位,不必從頭建立新的檢視畫面檔案並定義欄位。在本範例中,每個專案的 orders
檢視區塊對應不同的資料表:
- 在
proj_core
中,orders
檢視畫面是以資料庫中的proj_core_schema.orders
資料表為依據。 - 在
proj_a
中,orders
檢視畫面是以資料庫中的proj_a_schema.orders
資料表為依據。