排解進階擴充用途範例的問題

本頁面涵蓋進階主題,並假設讀者對 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_extendedfrom 參數會將產生的 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 欄。