이 페이지에서는 LookML 개발 중에 자주 접하게 되는 다음과 같은 핵심 용어와 개념을 정의합니다.
이 페이지에서는 사용자가 LookML을 사용하지 않고 Look과 사용자 정의 대시보드를 만들기 때문에 이들에 대해서는 설명하지 않습니다. 그러나 이들의 쿼리는 이 페이지에서 설명하는 기본 LookML 요소를 사용합니다.
Looker 전체에서 사용되는 전체 용어 및 정의 목록은 Looker 용어집을 참조하세요. LookML 프로젝트에서 사용할 수 있는 LookML 매개변수에 대한 포괄적인 개요는 LookML 빠른 참조 페이지를 참조하세요.
Looker와 Looker Studio의 유사한 용어와 개념 간의 미묘한 차이점에 대한 자세한 내용은 Looker 및 Looker Studio의 공유 용어 및 개념 문서 페이지를 참조하세요.
LookML 프로젝트
Looker에서 프로젝트는 SQL 쿼리를 수행하는 데 사용되는 객체, 데이터베이스 연결, 사용자 인터페이스 요소를 설명하는 파일 모음입니다. 가장 기본적인 수준에서 이러한 파일은 데이터베이스 테이블 간의 관계와 Looker에서 해석하는 방법을 설명합니다. 파일에는 Looker UI에 표시되는 옵션을 정의하거나 변경하는 LookML 매개변수가 포함될 수도 있습니다. 각 LookML 프로젝트는 버전 제어를 위한 자체 Git 저장소에 있습니다.
Looker를 데이터베이스에 연결한 후 Looker 프로젝트에 사용할 데이터베이스 연결을 지정할 수 있습니다.
Looker의 개발 메뉴에서 프로젝트에 액세스할 수 있습니다(자세한 내용과 기타 옵션은 프로젝트 파일 액세스 참조).
새 프로젝트 만들기에 대한 자세한 내용은 새 LookML 프로젝트 만들기를 참조하고, 기존 LookML 프로젝트에 액세스하고 변경하는 방법에 대한 자세한 내용은 프로젝트 정보 액세스 및 수정을 참조하세요.
프로젝트의 요소
다이어그램에서 볼 수 있듯이 LookML 프로젝트에서 보다 일반적인 파일 유형은 다음과 같습니다.
- 모델 - 사용할 테이블과 테이블 조인 방법에 대한 정보가 포함됩니다. 여기에서는 일반적으로 모델, 모델 Explore, 조인을 정의합니다.
- 뷰 - 각 테이블(또는 여러 조인된 테이블)에 있는 정보에 액세스하거나 이를 계산하는 방법에 대한 정보가 포함됩니다. 여기서는 일반적으로 뷰, 측정기준 및 측정값, 필드 집합을 정의합니다.
- Explore - 모델 파일 내에 정의되는 경우가 많지만 파생 테이블에 대해 또는 모델 전체에서 Explore를 확장하거나 세분화하기 위해 별도의 Explore 파일이 필요한 경우도 있습니다.
- 매니페스트 파일 - 다른 프로젝트에서 가져온 파일 또는 프로젝트의 현지화 설정을 사용하는 방법에 대한 안내가 포함될 수 있습니다.
프로젝트에는 모델, 뷰, Explore, 매니페스트 파일 외에도 기본 제공 대시보드, 문서, 현지화 등과 관련된 다른 유형의 파일이 있을 수 있습니다. 이러한 파일 유형과 LookML 프로젝트에 포함될 수 있는 다른 파일 유형에 대한 자세한 내용은 LookML 프로젝트 파일 문서 페이지를 참조하세요.
이러한 파일이 하나의 프로젝트를 구성합니다. 버전 제어에 Git를 사용하는 경우 각 프로젝트는 일반적으로 자체 Git 저장소로 백업됩니다.
LookML 프로젝트 및 파일은 어디서 나오나요?
LookML 파일을 만드는 가장 일반적인 방법은 데이터베이스에서 LookML 프로젝트를 생성하는 것입니다. 빈 프로젝트를 만들고 LookML 파일을 수동으로 만들거나 기존 Git 저장소를 클론하여 프로젝트를 만들 수도 있습니다.
데이터베이스에서 새 프로젝트를 생성하면 Looker는 프로젝트 빌드를 위한 템플릿으로 사용할 수 있는 기준 파일 집합을 만듭니다.
- 뷰 파일 여러 개(데이터베이스의 모든 테이블당 파일 하나)
- 모델 파일 1개. 모델 파일은 모든 뷰에 Explore를 선언합니다. 각 Explore 선언에는
join
로직이 포함되어 있으며, 이를 통해 Looker가 Explore와 관련이 있다고 판단할 수 있는 모든 뷰에 조인할 수 있습니다.
여기에서 원치 않는 뷰와 Explore를 삭제하고 커스텀 측정기준 및 측정값을 추가하여 프로젝트를 맞춤설정할 수 있습니다.
주요 LookML 구조
프로젝트 다이어그램의 부분에서 볼 수 있듯이 프로젝트에는 일반적으로 모델과 해당 탐색 및 조인을 정의하는 매개변수가 포함된 하나 이상의 모델 파일이 포함되어 있습니다. 또한 프로젝트에는 일반적으로 하나 이상의 뷰 파일이 포함되며, 각 파일에는 해당 뷰와 필드(측정기준 및 측정값 포함) 및 필드 집합을 정의하는 매개변수가 포함됩니다. 프로젝트에는 프로젝트 수준 설정을 구성할 수 있는 프로젝트 매니페스트 파일도 포함될 수 있습니다. 이 섹션에서는 이러한 주요 구조를 설명합니다.
모델
모델은 특정 비즈니스 사용자에게 직관적인 데이터 탐색 기능을 제공하도록 설계된 맞춤설정된 데이터베이스 포털입니다. 단일 LookML 프로젝트에서 동일한 데이터베이스 연결을 위해 여러 모델이 존재할 수 있습니다. 각 모델은 사용자마다 다른 데이터를 노출할 수 있습니다. 예를 들어 영업 상담사에게는 회사 임원과 다른 데이터가 필요하므로 각 사용자에게 적합한 데이터베이스 뷰를 제공하기 위해 두 가지 모델을 개발할 수 있습니다.
모델은 단일 데이터베이스에 대한 연결을 지정합니다. 개발자는 모델 파일 내에서 모델의 Explore도 정의합니다. 기본적으로 Explore는 정의된 모델 이름 아래에 구성됩니다. 사용자에게 Explore 메뉴에 나열된 모델이 표시됩니다.
모델 파일의 구조 및 일반 문법을 포함한 모델 파일에 대한 자세한 내용은 LookML 프로젝트의 파일 유형 문서 페이지를 참조하세요.
모델 파일에 사용할 수 있는 LookML 매개변수에 대한 자세한 내용은 모델 매개변수 문서 페이지를 참조하세요.
보기
뷰 선언은 필드(측정기준 또는 측정값)의 목록과 기본 테이블 또는 파생 테이블에 대한 연결을 정의합니다. LookML에서 뷰는 일반적으로 기본 데이터베이스 테이블을 참조하지만 파생 테이블을 나타낼 수도 있습니다.
뷰는 다른 뷰와 조인할 수 있습니다. 뷰 간의 관계는 일반적으로 모델 파일에서 Explore 선언의 일부로 정의됩니다.
기본적으로 보기 이름은 측정기준의 시작 부분에 표시되며 Explore 데이터 표에서 이름을 측정합니다. 이 이름 지정 규칙을 사용하면 필드가 속한 뷰를 명확하게 알 수 있습니다. 다음 예에서는 뷰 이름 주문 및 사용자가 데이터 테이블의 필드 이름 앞에 나열됩니다.
뷰 파일의 구조 및 일반 문법을 포함하여 뷰 파일에 대한 자세한 내용은 LookML 프로젝트의 파일 유형 문서를 참조하세요.
뷰 파일에 사용할 수 있는 LookML 매개변수에 대한 자세한 내용은 뷰 매개변수 문서 페이지를 참조하세요.
탐색
Explore는 사용자가 쿼리할 수 있는 뷰입니다. Explore는 쿼리의 시작점 또는 SQL 용어로 SQL 문의 FROM
으로 생각하면 됩니다. 모든 뷰가 관심 항목을 설명하지는 않으므로 모든 뷰가 Explore인 것은 아닙니다. 예를 들어 주 이름에 비즈니스 사용자가 직접 쿼리할 필요가 없으므로 상태 이름의 조회 테이블에 해당하는 상태 뷰가 Explore를 보장할 수 없습니다. 반면 비즈니스 사용자는 주문 뷰를 쿼리하고자 할 수 있으므로 주문에 대한 Explore를 정의하는 것이 좋습니다. 사용자가 데이터를 쿼리하기 위해 Explore와 상호작용하는 방법은 Looker에서 Explore 탐색 및 상호작용 문서 페이지를 참조하세요.
사용자는 Looker에서 탐색 메뉴에 나열된 탐색을 볼 수 있습니다. Explore는 속한 모델의 이름 아래에 나열됩니다.
규칙에 따라 Explore는 모델 파일에서 explore
매개변수를 사용하여 선언됩니다. 다음 모델 파일 예시에서는 전자상거래 데이터베이스에 대한 orders
Explore가 모델 파일 내에 정의됩니다. explore
선언 내에서 참조되는 orders
및 customers
뷰는 해당 뷰 파일에 다른 곳에서 정의됩니다.
connection: order_database
include: "filename_pattern"
explore: orders {
join: customers {
sql_on: ${orders.customer_id} = ${customers.id} ;;
}
}
이 예시에서 connection
매개변수는 모델의 데이터베이스 연결을 지정하는 데 사용되고 include
매개변수는 모델에서 참조할 수 있는 파일을 지정하는 데 사용됩니다.
이 예시에서 explore
선언은 뷰 간의 조인 관계도 지정합니다. join
선언에 대한 자세한 내용은 이 페이지의 조인 섹션을 참조하세요. join
매개변수와 함께 사용할 수 있는 LookML 매개변수에 대한 자세한 내용은 조인 매개변수 문서 페이지를 참조하세요.
측정기준 및 측정값 필드
뷰에는 주로 Looker 쿼리의 기본 구성 요소인 측정기준 및 측정값이 포함됩니다.
Looker에서 측정기준은 그룹화 가능한 필드이며 쿼리 결과를 필터링하는 데 사용될 수 있습니다. 측정기준은 다음 중 하나일 수 있습니다.
- 기본 테이블의 열과 직접 연결된 속성
- 팩트 또는 숫자 값
- 단일 행의 다른 필드 값을 기준으로 계산된 파생 값
Looker에서 측정기준은 항상 Looker에서 생성하는 SQL의 GROUP BY
절에 표시됩니다.
예를 들어 제품 뷰의 측정기준에는 제품 이름, 제품 모델, 제품 색상, 제품 가격, 제품 생성 날짜, 제품 지원 종료 날짜가 포함될 수 있습니다.
측정값은 COUNT
, SUM
, AVG
, MIN
, MAX
등의 SQL 집계 함수를 사용하는 필드입니다. 다른 측정값을 기준으로 계산된 필드도 측정값입니다. 측정값을 사용하여 그룹화된 값을 필터링할 수 있습니다. 예를 들어 판매 뷰에는 판매된 총 항목(수), 총 할인가(합계), 평균 할인가(평균)가 포함될 수 있습니다.
필드의 동작 및 예상 값은 string
, number
, time
등 선언된 유형에 따라 다릅니다. 측정값의 경우 유형에는 sum
및 percent_of_previous
같은 집계 함수가 포함됩니다. 자세한 내용은 측정기준 유형 및 측정 유형을 참고하세요.
Looker에서 필드는 페이지 왼쪽의 필드 선택도구의 Explore 페이지에 나열됩니다. 필드 선택 도구에서 뷰를 펼쳐 해당 뷰에서 쿼리할 수 있는 필드 목록을 표시할 수 있습니다.
규칙에 따라 필드는 필드가 속한 뷰의 일부로 선언되며 뷰 파일에 저장됩니다. 다음 예시는 열러 측정기준 및 측정값 선언을 보여줍니다. 완전히 범위가 지정된 SQL 열 이름을 사용하지 않고 대체 연산자($
)를 사용하여 필드를 참조한다는 점에 유의하세요.
다음은 측정기준 및 측정값 선언의 예입니다.
view: orders {
dimension: id {
primary_key: yes
type: number
sql: ${TABLE}.id ;;
}
dimension: customer_id {
sql: ${TABLE}.customer_id ;;
}
dimension: amount {
type: number
value_format: "0.00"
sql: ${TABLE}.amount ;;
}
dimension_group: created {
type: time
timeframes: [date, week]
sql: ${TABLE}.created_at ;;
}
measure: count {
type: count # creates sql COUNT(orders.id)
sql: ${id} ;;
}
measure: total_amount {
type: sum # creates sql SUM(orders.amount)
sql: ${amount} ;;
}
}
한 번에 여러 시간 관련 측정기준을 만드는 dimension_group
과 템플릿 필터와 같은 다양한 고급 사용 사례가 있는 filter
필드를 정의할 수도 있습니다.
필드 선언과 필드에 적용할 수 있는 다양한 설정에 대한 상세 설명은 필드 매개변수 문서 페이지를 참조하세요.
조인
explore
선언의 일부로 각 join
선언은 Explore에 조인할 수 있는 뷰를 지정합니다. 사용자가 여러 뷰의 필드를 포함하는 쿼리를 만들면 Looker는 모든 필드를 올바르게 가져오는 SQL 조인 로직을 자동으로 생성합니다.
다음은 explore
선언의 조인 예시입니다.
# file: ecommercestore.model.lookml
connection: order_database
include: "filename_pattern" # include all the views
explore: orders {
join: customers {
sql_on: ${orders.customer_id} = ${customers.id} ;;
}
}
자세한 내용은 LookML에서 조인으로 작업하기 문서 페이지를 참조하세요.
프로젝트 매니페스트 파일
프로젝트에는 프로젝트 매니페스트 파일이 포함될 수 있습니다. 이 파일은 현재 프로젝트로 가져올 다른 프로젝트를 지정하고, LookML 상수를 정의하고, 모델 현지화 설정을 지정하고, 프로젝트에 확장 프로그램 및 커스텀 시각화를 추가하는 등의 프로젝트 수준 설정에 사용됩니다.
각 프로젝트에는 하나의 매니페스트 파일만 있을 수 있습니다. 파일 이름은 manifest.lkml
이어야 하며 Git 저장소의 루트 수준에 있어야 합니다. IDE의 폴더를 사용하는 경우 manifest.lkml
파일이 프로젝트 디렉터리 구조의 루트 수준에 있는지 확인하세요.
다른 프로젝트에서 LookML 파일을 가져오려면 프로젝트 매니페스트 파일을 사용하여 현재 프로젝트의 이름을 지정하거나, 로컬 또는 원격으로 저장할 수 있는 외부 프로젝트의 위치를 지정하세요. 예를 들면 다음과 같습니다.
# This project
project_name: "my_project"
# The project to import
local_dependency: {
project: "my_other_project"
}
remote_dependency: ga_360_block {
url: "https://github.com/llooker/google_ga360"
ref: "4be130a28f3776c2bf67a9acc637e65c11231bcc"
}
프로젝트 매니페스트 파일에서 외부 프로젝트를 정의한 후에는 모델 파일의 include
매개변수를 사용하여 외부 프로젝트의 파일을 현재 프로젝트에 추가할 수 있습니다. 예를 들면 다음과 같습니다.
include: "//my_other_project/imported_view.view"
include: "//ga_360_block/*.view"
자세한 내용은 다른 프로젝트에서 파일 가져오기 문서 페이지를 참조하세요.
모델에 현지화를 추가하려면 프로젝트 매니페스트 파일을 사용하여 기본 현지화 설정을 지정합니다. 예를 들면 다음과 같습니다.
localization_settings: {
default_locale: en
localization_level: permissive
}
기본 현지화 설정을 지정하는 것은 모델을 현지화하는 한 단계입니다. 자세한 내용은 LookML 모델 현지화 문서 페이지를 참조하세요.
세트
Looker에서 세트는 함께 사용되는 필드 그룹을 정의하는 목록입니다. 일반적으로 세트는 사용자가 데이터를 드릴다운한 후 표시할 필드를 지정하는 데 사용됩니다. 드릴 세트는 필드별로 지정되므로 사용자가 테이블 또는 대시보드에서 값을 클릭할 때 표시되는 데이터를 완벽하게 제어할 수 있습니다. 세트는 특정 사용자에게 표시되는 필드 그룹을 정의하는 보안 기능으로 사용될 수도 있습니다.
다음 예시에서는 order_items
뷰에 구매한 항목의 관련 세부정보를 나열하는 필드를 정의하는 세트 선언을 보여줍니다. 세트는 범위를 지정하여 다른 뷰의 필드를 참조합니다.
set: order_items_stats_set {
fields: [
id, # scope defaults to order_items view
orders.created_date, # scope is "orders" view
orders.id,
users.name,
users.history, # show all products this user has purchased
products.item_name,
products.brand,
products.category,
total_sale_price
]
}
세트의 전체 사용 세부정보는 set
매개변수 문서 페이지를 참조하세요.
드릴다운
사용자가 데이터를 더 자세히 살펴볼 수 있도록 Looker에서 필드를 구성할 수 있습니다. 드릴은 쿼리 결과 테이블과 대시보드 모두에서 작동합니다. 드릴은 클릭한 값으로 제한되는 새 쿼리를 시작합니다.
드릴 동작은 다음과 같은 측정기준 및 측정값에서 다릅니다.
- 측정기준을 드릴하면 새 쿼리가 드릴된 값을 기준으로 필터링됩니다. 예를 들어 날짜별 고객 주문 쿼리에서 특정 날짜를 클릭하면 새 쿼리에는 해당 특정 날짜의 주문만 표시됩니다.
- 측정값을 드릴하면 측정값에 기여한 데이터 세트가 새 쿼리에 표시됩니다. 예를 들어 개수를 드릴하면 새 쿼리는 해당 개수를 계산하는 행을 표시합니다. 최대, 최소 및 평균 측정값을 드릴할 때 해당 측정값에 기여한 모든 행이 계속 표시됩니다. 즉, 최댓값을 드릴하면 최댓값의 단일 행뿐만 아니라 최댓값을 계산하는 데 사용된 모든 행을 표시합니다.
새 드릴 쿼리에 표시할 필드는 설정을 사용하여 정의하거나 drill_fields
매개변수(필드의 경우) 또는 drill_fields
매개변수(뷰의 경우)로 정의할 수 있습니다.
파생 테이블
파생 테이블은 결과가 데이터베이스의 실제 테이블인 것처럼 사용되는 쿼리입니다. 파생 테이블은 view
선언의 derived_table
매개변수를 통해 생성됩니다. Looker는 파생 테이블에 자체 열 조합이 있는 물리적 테이블인 것처럼 액세스합니다. 파생 테이블은 자체 뷰로 노출되며 기존 뷰와 같은 방식으로 측정기준과 측정값을 정의합니다. 파생 테이블의 뷰는 다른 뷰와 마찬가지로 쿼리되고 다른 뷰로 조인될 수 있습니다.
파생 테이블은 데이터베이스의 스크래치 스키마에 작성되고 지속성 전략을 사용하여 지정한 일정에 따라 자동으로 다시 생성되는 파생 테이블인 영구 파생 테이블(PDT)로 정의할 수도 있습니다.
자세한 내용은 Looker의 파생 테이블 문서 페이지를 참조하세요.
데이터베이스 연결
LookML 프로젝트의 또 다른 중요한 요소는 Looker가 데이터베이스에서 쿼리를 실행하는 데 사용하는 데이터베이스 연결입니다. Looker 관리자는 연결 페이지를 사용하여 데이터베이스 연결을 구성하고 LookML 개발자는 모델 파일의 connection
매개변수를 사용하여 모델에 사용할 연결을 지정합니다. 데이터베이스에서 LookML 프로젝트를 생성하면 Looker에서 모델 파일의 connection
매개변수를 자동으로 채웁니다.
대소문자 구분
LookML은 대소문자를 구분하므로 LookML 요소를 참조할 때는 대소문자가 일치해야 합니다. 존재하지 않는 요소를 참조하면 Looker에서 알림을 보냅니다.
예를 들어 e_flights_pdt
라는 Explore가 있고 LookML 개발자가 Explore를 참조하는 데 잘못된 대문자(e_FLIGHTS_pdt
)를 사용했다고 가정해 보겠습니다. 이 예시에서 Looker IDE에는 Explore e_FLIGHTS_pdt
이 존재하지 않는다는 경고가 표시됩니다. 또한 IDE는 기존 Explore 이름(e_flights_pdt
)을 제안합니다.
하지만 프로젝트에 e_FLIGHTS_pdt
및 e_flights_pdt
가 모두 포함된 경우 Looker IDE에서 수정할 수 없으므로 어떤 버전을 원하는지 확인해야 합니다. 일반적으로 LookML 객체 이름을 지정할 때는 소문자를 사용하는 것이 좋습니다.
IDE 폴더 이름도 대소문자를 구분합니다. 파일 경로를 지정할 때마다 폴더 이름의 대소문자가 일치해야 합니다. 예를 들어 Views
라는 폴더가 있는 경우 include
매개변수에 동일한 대소문자를 사용해야 합니다. 대소문자가 프로젝트의 기존 폴더와 일치하지 않으면 Looker IDE에 오류가 표시됩니다.