本頁面涵蓋進階主題,並假設讀者對 LookML 有紮實的認識。
Extends 是一項實用的 LookML 功能,可讓您維持 DRY (不要重複) LookML 程式碼。在 Looker 中,探索、檢視畫面和 LookML 資訊主頁都可以透過模型檔案中的 extends
參數擴充,例如以下範例:
explore: orders { view_name: orders join: users { type: left_outer sql_on: %{orders.user_id} = ${users.id} ;; relationship: many_to_one } } explore: transactions { extends: [orders] }
在這個範例中,extends
參數會用於 transactions
探索的定義中,以延伸 orders
探索。
本頁將要擴充的物件稱為「基本」物件,而執行擴充作業的物件則稱為「擴充」物件。
擴充 LookML 物件相當簡單,詳情請參閱「使用 extends 重複使用程式碼」說明文件頁面。不過,某些進階用途可能會導致 LookML 參照錯誤和不必要的物件重複。本頁面提供範例,說明如何根據擴充其他檢視畫面的檢視畫面,擴充 Explore,進而導致 LookML 參照錯誤,以及如何消除這類問題的提示。
用途:根據擴充檢視畫面擴充探索
假設您想擴充 events
探索,並希望擴充探索的檢視畫面,可使用擴充基本 events
檢視畫面的欄位。在本例中,events_extended
Explore 會擴充 extends
Explore,如以下 LookML 範例所示:
explore: events { view_name: events join: users { type: left_outer sql_on: ${events.user_id} = ${users.id} ;; relationship: many_to_one } } explore: events_extended { extends: [events] join: orders { sql_on: ${events_extended.test_id} = ${orders.id} ;; relationship: many_to_one }
在這個範例中,users
檢視區塊會彙整至基礎 events
探索,而 orders
檢視區塊會彙整至擴充的探索 events_extended
。不過,在基礎 events
探索中定義的彙整參照 events.user_id
,是基礎 events
檢視畫面中的欄位。同時,在擴充 events_extended
探索中定義的彙整作業會參照欄位 events_extended.test_id
,其中 events_extended
是根據 events
檢視畫面擴充的檢視畫面名稱。events_extended
Explore 定義中聯結參照的 test_id
欄位,會在擴充的 events_extended
檢視畫面中定義如下:
include: "events.view.lkml" view: events_extended { extends: [events] dimension: test_id {}
由於 events_extended
探索中定義的彙整參照了擴充檢視表 events_extended
的名稱,因此 LookML 驗證工具會顯示 inaccessible view
錯誤。
如要解決這個問題,您可以將 from
參數新增至擴充的探索,並將其值設為擴充檢視畫面的名稱 events_extended
。from
參數會將產生的 SQL 中的原始資料表名稱設為別名 FROM schema.name AS alias
。
這是在「探索」層級套用 from
參數的唯一建議用途。
如要從擴充檢視畫面 (events_extended
) 提取資料,且不中斷基礎探索 (events
) 的彙整參照,您可以新增對應至擴充檢視畫面的 from
參數:
explore: events_extended { extends: [events] from: events_extended join: orders { relationship: many_to_one sql_on: ${events.test_id} = ${orders.id} ;; } }
在這個範例中,將 LookML from: events_extended
套用至延伸探索的 LookML,即可在延伸探索中繼續參照基礎檢視畫面 (events
),同時將這些參照重新導向至該檢視畫面的延伸版本 (events_extended
)。
使用 from
參數後,您可以繼續在彙整前置字串中參照基礎檢視表名稱 events
,但這些參照會從擴充檢視表 events_extended
中提取資料欄,其中包含 events
中的所有欄,以及新的 test_id
欄。