고급 확장 사용 사례 문제 해결

이 페이지에서는 고급 주제를 다루고 있으며 독자가 LookML에 대해 잘 알고 있다고 가정합니다.

확장은 DRY(직접 반복하지 않음) LookML 코드를 유지할 수 있는 중요한 LookML 기능입니다. Looker에서 Explore, , 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]
}

이 예시에서는 transactions Explore 정의 내에서 extends 매개변수를 사용하여 orders 탐색을 확장합니다.

이 페이지에서는 기본 객체로 확장되는 객체를 참조하며, 확장을 수행하는 객체를 확장 객체라고 합니다.

LookML 객체를 확장하는 것은 매우 간단한 프로세스입니다. 자세한 내용은 확장을 통해 코드 재사용 문서 페이지를 참조하세요. 그러나 LookML 참조 오류와 원치 않는 객체 중복을 유발할 수 있는 몇 가지 고급 사용 사례가 있습니다. 이 페이지에서는 다른 뷰를 확장하는 뷰를 기반으로 Explore를 확장하면 LookML 참조 오류가 발생할 수 있는 방법과 이러한 문제를 해결하는 데 도움이 되는 팁을 제공합니다.

사용 사례: 확장 뷰에 따라 Explore 확장

events Explore를 확장하려고 하고 확장 Explore의 기반이 되는 뷰가 기본 events 뷰를 확장하는 뷰의 필드를 사용하려고 한다고 가정해 보겠습니다. 이 예시에서 events_extended Explore는 다음 LookML 예시와 같이 extends Explore를 확장합니다.

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 Explore에 조인되고 orders 뷰는 Explore 탐색 events_extended에 조인됩니다. 하지만 기본 events Explore에 정의된 조인은 기본 events 뷰의 필드인 events.user_id를 참조합니다. 한편 확장 events_extended Explore에 정의된 조인은 events_extended.test_id 필드를 참조합니다. 여기서 events_extendedevents 뷰를 기반으로 하는 확장 뷰의 이름입니다. events_extended Explore에 정의된 조인에서 참조되는 test_id 필드는 다음과 같이 확장 events_extended 뷰에 정의됩니다.

include: "events.view.lkml"
view: events_extended {
  extends: [events]

  dimension: test_id {}

events_extended Explore에 정의된 조인이 확장 뷰의 이름 events_extended를 참조하기 때문에 LookML 검사기inaccessible view 오류가 표시됩니다.

이 문제를 해결하려면 확장 Explore의 LookML에 from 매개변수를 추가하고 해당 값을 확장 뷰의 이름 events_extended로 설정하면 됩니다. from 매개변수는 생성된 SQL에서 원래 테이블 이름의 별칭을 FROM schema.name AS alias로 지정합니다.

Explore 수준에서 from 매개변수를 적용할 때 유일하게 권장되는 사용 사례입니다.

기본 Explore(events)에서 조인 참조를 중단하지 않고 확장 뷰(events_extended)에서 가져오려면 확장 뷰에 매핑되는 from 매개변수를 추가하면 됩니다.

explore: events_extended {
  extends: [events]
  from: events_extended
  join: orders {
    relationship: many_to_one
    sql_on: ${events.test_id} = ${orders.id} ;;
  }
}

이 예시에서 확장 Explore의 LookML에 LookML from: events_extended를 적용하면 확장 Explore에서 기본 뷰(events)를 계속 참조하면서 해당 뷰의 확장 버전(events_extended)에서 가져올 수 있도록 해당 참조를 리디렉션할 수 있습니다.

from 매개변수를 사용하면 조인 프리픽스에서 기본 뷰 이름 events를 계속 참조할 수 있지만, 이러한 참조는 events의 모든 필드와 새로운 test_id 필드가 포함된 확장 뷰 events_extended에서 가져옵니다.