다른 프로젝트에서 파일 가져오기

다른 LookML 프로젝트 및 외부 저장소에서 현재 프로젝트로 파일을 가져올 수 있습니다. 이렇게 하면 두 개 이상의 프로젝트에서 모델 파일, 보기 파일, 기타 파일을 사용할 수 있습니다.

여기에는 여러 가지 사용 사례가 있습니다. 예시:

  • 직접 변경할 필요 없이 설치된 Looker 블록 위에 빌드합니다. Looker에서 블록을 변경하면 추가된 모든 LookML이 별도의 저장소에 유지되므로 변경사항을 가져올 수 있습니다.

  • 데이터베이스 스키마를 기반으로 자동 생성되는 기본 프로젝트를 유지관리합니다. 자동 생성된 프로젝트에서 모든 LookML을 가져오는 별도의 프로젝트에 모든 맞춤 측정기준, 측정 등을 배치할 수 있습니다. 모든 커스텀 LookML을 덮어쓰지 않고 데이터베이스 스키마가 변경될 때 기본 프로젝트를 정기적으로 다시 생성할 수 있습니다.

  • 단일 프로젝트에 공유 객체를 캡슐화한 후 여러 다른 프로젝트로 가져옵니다. 예를 들어 여러 데이터베이스에 공통적인 테이블이 있는 경우 한 프로젝트에 뷰를 배치하고 한곳에 유지할 수 있습니다. 그런 다음 테이블을 다른 프로젝트로 가져와 다른 여러 프로젝트가 이를 사용하도록 합니다.

다른 프로젝트에서 파일을 가져오려면 다음 태스크를 수행합니다.

  1. 프로젝트 매니페스트 파일을 만듭니다.
  2. 가져올 로컬 또는 원격 프로젝트를 지정합니다.
  3. 가져온 프로젝트의 파일을 확인합니다.
  4. 가져온 프로젝트의 파일을 포함합니다.

다음 작업을 할 수 있습니다.가져온 프로젝트의 파일에서 필드를 참조하고, 상수가 재정의를 허용하는 경우 가져온 프로젝트에서 정의된 상수 값을 재정의할 수 있습니다.

프로젝트 매니페스트 파일 만들기

다른 프로젝트에서 파일을 가져오는 모든 프로젝트에는 프로젝트 매니페스트 파일이 있어야 합니다. 프로젝트에 아직 매니페스트 파일이 없는 경우 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의 정적 파일 버전을 표시합니다. 정적 버전은 파일의 개발 모드 버전을 표시하지 않으며, 개발자에게 알리지 않고 현재 프로덕션 모드를 사용하는 오래된 버전일 수도 있습니다. 원격 프로젝트 가져오기를 사용하고 원격 프로젝트에서 Git 브랜치 또는 Git 출시 버전을 지정하는 ref를 제공하는 것이 좋습니다. 이렇게 하면 Looker가 원격 프로젝트에서 새 커밋을 자동으로 감지하여 개발자에게 알림을 보내면 최신 버전의 원격 프로젝트 파일을 가져올 수 있습니다.
  • 개발자는 항상 가져온 프로젝트의 프로덕션 버전으로 작업해야 합니다.
  • 개발자는 가져온 프로젝트의 파일에 대한 정적 버전을 사용해야 합니다.

원격 프로젝트 가져오기

원격 가져오기에서는 가져온 프로젝트가 동일한 인스턴스에 있을 필요가 없습니다. 대신 원격 Git 저장소를 통해 프로젝트를 가져옵니다.

원격 저장소를 가져오려면 remote_dependency 매개변수를 사용하여 원격 저장소에 대한 정보를 제공합니다. remote_dependency 매개변수는 다음 정보와 하위 매개변수를 사용합니다.

  • 가져온 프로젝트의 이름으로 원하는 이름을 지정할 수 있습니다. 다음 예시에서 프로젝트 이름은 ga_360_block입니다. include 문에서 이 이름을 사용하여 LookML 프로젝트에서 가져온 파일을 참조합니다. 이 이름은 Looker IDE의 imported_projects 폴더 아래에 있는 폴더 이름으로도 사용됩니다.
  • url 하위 매개변수에서 외부 Git 저장소의 주소를 지정합니다. 저장소의 기본 URL을 사용합니다.
  • Git 브랜치, Git 출시 태그, Git 저장소에서 커밋의 SHA를 지정하는 ref 하위 매개변수입니다. 정적 버전 관리를 원하는 경우 커밋 SHA를 지정할 수 있습니다. 그러면 가져온 프로젝트의 변경사항이 프로젝트에 자동으로 반영되지 않습니다. 이는 Looker 블록에 적합한 옵션입니다. 또는 Looker가 원격 프로젝트에서 새 커밋을 자동으로 감지하도록 하려면 Git 브랜치나 Git 출시 태그를 지정하면 됩니다. 자세한 내용은 이 페이지의 원격 프로젝트의 새 버전 자동 감지 섹션을 참조하세요.
  • 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: "git@github.com:llooker/google_ga360.git"
  ref: "master"
  override_constant: connection {
    value: "importing_project_connection"
  }
}

원격 종속 항목을 추가한 후 원격 프로젝트의 가져오기 사용자 인증 정보를 구성해야 할 수도 있습니다. 이 페이지의 비공개 원격 저장소의 사용자 인증 정보 구성하기 섹션을 참조하세요.

원격 프로젝트의 새 버전 자동 감지

매니페스트 파일에서 remote_dependencyref 하위 매개변수에 Git 브랜치 또는 Git 출시 태그를 지정하면 Looker가 원격 프로젝트의 새 커밋을 자동으로 감지하도록 할 수 있습니다.

예를 들어 다음은 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"
}

SHA를 커밋하더라도 ref 매개변수에 지정한 값 유형에 관계없이 IDE는 remote_dependency 매개변수를 프로젝트에 추가할 때 상단 프로젝트 탐색 메뉴에 종속 항목 업데이트 버튼을 표시합니다.

종속 항목 업데이트를 클릭하여 원격 프로젝트 파일을 가져옵니다. 프로젝트에 추가한 첫 번째 원격 종속 항목인 경우 종속 항목을 업데이트하면 Looker가 매니페스트 잠금 파일을 만들라는 메시지를 표시합니다. Looker는 매니페스트 잠금 파일을 사용하여 원격 프로젝트의 버전을 추적합니다.

ref 하위 매개변수에 Git 브랜치 또는 Git 출시 태그를 지정하면 Looker 개발자가 개발 모드로 전환하면서 Looker IDE가 새로고침될 때마다 새 커밋을 확인하고 IDE에서 Git 작업을 수행하거나 브라우저를 새로 고칩니다.

새 커밋이 있으면 Looker가 IDE의 Git 작업 패널에 종속 항목 업데이트 옵션을 표시합니다.

종속 항목 업데이트 옵션을 선택하여 최신 원격 프로젝트 파일을 프로젝트로 가져옵니다.

최신 파일이 있으면 LookML을 검증하여 프로젝트의 모든 참조가 업데이트된 원격 프로젝트 파일에서 작동하는지 확인할 수 있습니다. 그런 다음 손상된 참조를 수정하고 사용자에게 다운타임 없이 변경사항을 배포할 수 있습니다.

매니페스트 잠금 파일

Looker는 파일 이름이 manifest_lock.lkml인 매니페스트 잠금 파일을 사용하여 원격으로 가져온 프로젝트의 버전을 추적합니다. 매니페스트 잠금 파일은 Looker IDE의 파일 브라우저 패널에 나열됩니다.

Looker에서 잠금 파일을 자동으로 관리하므로 Looker 개발자는 매니페스트 잠금 파일을 만들거나 수정할 필요가 없습니다.

매니페스트 잠금 파일에는 urlref 하위 매개변수가 있는 remote_dependency 항목으로 표시된 각 원격 프로젝트가 표시됩니다.

  • remote_dependency 매개변수는 매니페스트 파일에서 Looker 개발자가 지정한 원격 프로젝트의 이름을 나타냅니다.
  • url 하위 매개변수는 Looker 개발자가 매니페스트 파일에 지정한 외부 Git 저장소의 주소를 나타냅니다.
  • ref 하위 매개변수는 Looker가 프로젝트에서 사용하는 프로젝트의 버전(커밋 SHA로 표시됨)을 보여줍니다.
    • 원격 프로젝트가 Git 브랜치의 ref 또는 Git 출시 태그인 매니페스트 파일에 정의된 경우, ref 매개변수는 프로젝트에서 현재 사용 중인 파일 버전(원격 프로젝트 커밋 SHA)을 표시합니다. 원격 프로젝트에 새 커밋이 있으면 최신 원격 프로젝트 파일을 가져올 수 있도록 Looker가 IDE에 종속 항목 업데이트 버튼을 표시합니다. 그런 다음 매니페스트 잠금 파일의 ref 값이 업데이트되어 해당 브랜치 또는 출시 태그에 대한 최신 커밋 SHA가 표시됩니다.
    • 원격 프로젝트가 특정 커밋 SHA의 ref를 사용하여 매니페스트 파일에 정의된 경우 매니페스트 잠금 파일의 ref 매개변수는 동일한 커밋 SHA가 됩니다.

비공개 원격 저장소의 사용자 인증 정보 구성

비공개 원격 저장소의 사용자 인증 정보를 구성하려면 IDE 내 왼쪽 탐색창에서 설정 을 선택하여 사용자 인증 정보 가져오기 페이지로 이동합니다.

사용자 인증 정보 가져오기 설정에는 프로젝트 매니페스트 파일에 정의된 각 원격 저장소의 URL 목록, 저장소에 사용되는 인증 유형(https 또는 ssh), Looker가 저장소에 성공적으로 연결할 수 있는지 여부가 표시됩니다.

사용자 인증 정보 추가하기

저장소의 사용자 인증 정보를 추가하려면 다음 안내를 따르세요.

  1. URL 제목 아래에 있는 사용자 인증 정보 가져오기 페이지에서 포인터를 저장소 이름 위에 올려놓아 테스트구성 버튼을 표시하고 구성을 클릭합니다.

  2. 원격 저장소의 사용자 인증 정보를 구성할 수 있게 해주는 Git 인증 구성 대화상자가 Looker에 표시됩니다. 대화상자에 특정 저장소에 필요한 사용자 인증 정보 유형이 표시됩니다.

    • 저장소에 인증을 위해 사용자 이름과 비밀번호(또는 개인 액세스 토큰)가 필요한 경우 사용자 이름과 비밀번호 또는 토큰을 입력하고 변경사항 저장을 클릭합니다.

    • 이 페이지의 앞부분에서 설명한 SSH를 사용하여 원격 프로젝트 가져오기 예시와 같이 저장소에 SSH 키가 필요하면 로컬 SSH 키를 보여주는 대화상자가 Looker에 표시됩니다. 키 복사를 클릭하여 SSH 키를 클립보드에 복사하고 저장소의 키 목록에 추가합니다.

  3. 사용자 인증 정보를 저장한 후 테스트를 클릭하여 저장소에 대한 Looker 액세스를 테스트합니다.

    연결 테스트를 통과하고 저장소에 연결하면 사용자 인증 정보 가져오기 섹션의 저장소 이름 옆에 녹색 체크표시가 나타납니다.

사용자 인증 정보 수정

저장소의 사용자 인증 정보를 수정하려면 다음 안내를 따르세요.

  1. 테스트수정 버튼을 표시하려면 이미 사용자 인증 정보를 구성한 저장소 위에 포인터를 올려놓고 수정을 클릭합니다.

  2. 저장소에 인증을 위한 사용자 이름과 비밀번호(또는 개인 액세스 토큰)가 필요하면 사용자 인증 정보 삭제를 클릭하고 확인 대화상자에서 예, 사용자 인증 정보를 지웁니다를 클릭합니다.

  3. 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 매개변수 페이지의 와일드 카드 예시 섹션을 참조하세요.

모델 파일 포함

다른 프로젝트의 모델 파일은 포함할 수 없습니다. 대신 프로젝트 간에 탐색을 재사용, 상세검색 또는 extend하려면 가져온 프로젝트에서 별도의 탐색 파일을 생성한 다음 다른 프로젝트의 Explore 파일을 포함합니다. 자세한 내용은 include 매개변수 문서 페이지의 모델에 Explore 포함 섹션을 참조하세요.

다른 파일을 포함하는 파일 포함

다른 파일이 포함된 파일을 포함하면 파일이 포함된 다음 프로젝트로 파일이 전달되기 전에 모든 포함이 확인됩니다.

예를 들어 현재 프로젝트에서 다른 프로젝트(proj_A)의 파일(A)을 가져오고 가져온 파일에 proj_B 프로젝트의 B 파일을 포함한 include 매개변수가 포함되어 있는 경우 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에서 오류가 표시됩니다.

상수를 참조하는 파일을 프로젝트로 가져올 때 원본 프로젝트에서 상수에 override_optional 또는 override_required로 설정된 export가 있는 한 해당 상수에 새 값을 제공하기 위해 프로젝트의 매니페스트 파일에서 local_dependency 또는 remote_dependencyoverride_constant 하위 매개변수를 사용할 수 있습니다. 가져온 프로젝트에서 상수 값을 재정의하면 프로젝트에서 override_constant 매개변수와 함께 지정한 값을 사용합니다.

예를 들어 데이터베이스마다 별도의 프로젝트가 있는 단일 Looker 인스턴스에서 데이터베이스 여러 개를 관리한다고 가정해 보겠습니다. 또한 데이터 스키마가 각 데이터베이스에서 동일하고 분석을 한 번 정의하여 각 데이터 세트에 적용하는 것이 목표라고 가정합니다.

이 예시에서는 다른 프로젝트로 가져오려는 뷰를 정의한 기본 프로젝트 proj_core라고 가정합니다. 또한 가져오려는 뷰 중 하나가 다음과 같이 정의된 orders 뷰입니다.


view: orders {
  sql_table_name: "@{schema_name}.orders"
}

orders 뷰의 기반이 되는 스키마는 proj_core 매니페스트 파일에 정의된 schema_name 상수를 사용하여 sql_table_name 매개변수에 지정됩니다. 다음 예시에서는 schema_name 상수가 export: override_required로 설정되어 있으므로 schema_name을 가져오는 모든 프로젝트는 override_constant 매개변수를 사용하여 값을 재정의해야 합니다.


constant: schema_name {
  value: "proj_core_schema"
  export: override_required
}

예를 들어 orders 뷰를 proj_a라는 로컬 프로젝트로 가져오려고 한다고 가정해 보겠습니다. 기본 프로젝트 proj_coreorders 테이블과 동일한 구조를 가진 proj_a의 데이터베이스에 orders라는 테이블도 있습니다.

proj_coreproj_a가 같은 인스턴스에 있으므로 local_dependency를 사용하여 proj_aorders 뷰를 가져올 수 있습니다. 그런 다음 local_dependencyoverride_constant 하위 매개변수를 사용하여 proj_a의 매니페스트 파일에 있는 스키마 proj_a_schema를 가리키도록 schema_name 상수를 업데이트할 수 있습니다.


project_name: "proj_a"

local_dependency: {
  project: "proj_core"
  override_constant: schema_name {
    value: "proj_a_schema"
  }
}

이 예시에서는 project_core에서 schema_name 상수가 export: override_required로 설정되어 있으므로 proj_a (가져오기 프로젝트)에서 값을 재정의하지 않으면 Looker에 오류가 표시됩니다.

proj_a에서 schema_name 상수를 재정의하면 새 뷰 파일을 만들고 필드를 처음부터 정의하는 대신 proj_coreorders 뷰에 정의한 필드를 사용할 수 있습니다. 이 예시에서 orders 뷰는 각 프로젝트의 다른 테이블에 해당합니다.

  • proj_core에서 orders 뷰는 데이터베이스의 proj_core_schema.orders 테이블을 기반으로 합니다.
  • proj_a에서 orders 뷰는 데이터베이스의 proj_a_schema.orders 테이블을 기반으로 합니다.