LookML 용어 및 개념

대체 연산자 ($), 범위 지정 및 이름 지정, SQL 언어, SQL 블록 섹션이 새로운 SQL 통합 및 LookML 객체 참조 문서 페이지로 이동되었습니다.

개요

이 페이지에서는 LookML 개발에서 반복적으로 등장하는 용어와 개념을 설명합니다. 다음 다이어그램은 다른 요소 안에 포함된 요소 간의 관계를 보여줍니다. 여기 표시된 모든 용어는 다음 섹션에 정의되어 있습니다.

사용자가 LookML을 사용하지 않고 시각화사용자 정의 대시보드를 만들기 때문에 이 다이어그램에 이 내용이 포함되지 않습니다. 하지만 이러한 쿼리는 위의 다이어그램에 표시된 기본 LookML 요소를 사용합니다.

LookML 프로젝트

프로젝트는 데이터베이스 테이블 간의 관계를 설명하고 Looker가 이러한 테이블을 해석하는 방법을 설명하는 LookML 파일 모음입니다. 각 LookML 프로젝트는 버전 제어를 위한 자체 Git 저장소에 있습니다.

LookML 프로젝트의 일반적인 파일 형식은 다음과 같습니다.

  • 모델에는 사용할 테이블과 테이블 조인 방법에 대한 정보가 포함됩니다. 여기에서 모델, 탐색, 조인을 일반적으로 정의합니다.
  • 보기에는 각 표 (또는 여러 조인된 표)의 정보에 액세스하거나 이를 계산하는 방법에 대한 정보가 포함됩니다. 여기에서는 일반적으로 뷰, 측정기준 및 측정값, 필드 세트를 정의합니다.
  • 탐색은 모델 파일 내에서 정의되지만 파생된 테이블 또는 여러 모델의 탐색을 확장 또는 세분화하기 위해 별도의 탐색 파일이 필요한 경우가 있습니다.
  • 매니페스트 파일은 다른 프로젝트에서 가져온 파일을 사용하거나 프로젝트의 현지화 설정에 대한 안내를 포함할 수 있습니다.

LookML 프로젝트에서 사용할 수 있는 다른 유형의 파일에 대한 자세한 내용은 LookML 프로젝트 파일 문서 페이지를 참조하세요.

Looker를 데이터베이스에 연결하면 Looker 프로젝트에 사용할 데이터베이스 연결을 지정할 수 있습니다.

Looker의 개발 메뉴에서 프로젝트에 액세스할 수 있습니다.

Looker 21.12부터 관리자가 향상된 탐색 실험실 기능을 사용 설정한 경우 새로운 향상된 왼쪽 탐색 패널에서 개발 옵션을 선택하여 프로젝트에 액세스할 수 있습니다.

LookML 프로젝트 및 파일의 출처는 어디인가요?

LookML 파일을 만드는 가장 일반적인 방법은 데이터베이스에서 LookML 프로젝트를 생성하는 것입니다. 빈 프로젝트를 만들고 LookML 파일을 수동으로 만들거나 기존 Git 저장소를 클론하여 프로젝트를 만들 수도 있습니다.

데이터베이스에서 새 프로젝트를 생성하면 Looker에서 프로젝트 빌드를 위한 템플릿으로 사용할 수 있는 기준 파일 집합을 만듭니다.

  • 파일 여러 개(데이터베이스의 모든 테이블당 파일 하나)
  • 모델 파일 1개 모델 파일은 모든 뷰의 탐색을 선언합니다. 각 탐색 선언에는 join 로직이 포함되어 있으며, 이를 통해 Looker가 탐색과 관련이 있다고 판단할 수 있는 모든 뷰에 조인할 수 있습니다.

여기에서 원치 않는 보기와 탐색 항목을 삭제하고 맞춤 측정기준 및 측정값을 추가하여 프로젝트를 맞춤설정할 수 있습니다.

주요 LookML 구조

앞선 다이어그램에서 본 것처럼, 프로젝트에는 일반적으로 모델과 모델의 탐색 및 조인을 정의하는 매개변수가 포함된 하나 이상의 모델 파일이 포함되어 있습니다. 또한 프로젝트에는 일반적으로 하나 이상의 뷰 파일이 포함되며, 이러한 각 파일에는 해당 뷰와 필드 (측정기준 및 측정 포함) 및 필드 집합을 정의하는 매개변수가 포함되어 있습니다. 또한 프로젝트에 다른 프로젝트의 뷰 파일을 사용하거나 현지화 기본값을 구성하는 매개변수가 포함된 프로젝트 매니페스트 파일이 포함될 수 있습니다. 이 섹션에서는 이러한 주요 구조를 설명합니다.

모델

모델은 특정 비즈니스 사용자에게 직관적인 데이터 탐색 기능을 제공하도록 설계된 맞춤설정된 데이터베이스 포털입니다. 단일 LookML 프로젝트에서 동일한 데이터베이스 연결을 위해 여러 모델이 존재할 수 있습니다. 각 모델은 사용자별로 다른 데이터를 노출할 수 있습니다. 예를 들어 영업 상담사에게는 회사 임원진과는 다른 데이터가 필요하기 때문에 각 사용자에게 적절한 데이터베이스 뷰를 제공하기 위해 두 가지 모델을 개발해야 할 것입니다.

Looker에서 쿼리는 속한 모델에 따라 그룹화됩니다. 사용자는 탐색 메뉴에 나열된 모델을 볼 수 있습니다.

Looker 21.12부터 관리자가 향상된 탐색 실험실 기능을 사용 설정한 경우 새로운 향상된 왼쪽 탐색 패널에서 탐색 옵션을 선택하여 탐색에 액세스하고 탐색 목록을 볼 수 있습니다.

모델 파일은 연결할 데이터베이스를 지정하고 해당 연결에 대한 탐색 모음을 정의합니다. 규칙에 따라 각 파일은 정확히 하나의 모델을 선언하며, 새 LookML에서 모델 파일 이름은 .model.lkml로 끝납니다. 모델 파일의 이름에 따라 Looker에 표시되는 이름이 결정됩니다.

LookML의 일반적인 모델 선언 형식은 다음과 같습니다. 자세한 내용은 모델 매개변수 문서 페이지를 참조하세요.

connection: connection_name
persist_for: timeframe
case_sensitive: yes | no
include: "filename_pattern"   # for example: *.view.lkml
# More include declarations

explore: explore_name {
  view_name: view_name
  join: view_name {
    # join parameters
  }
  # More join declarations
}
# More explore declarations

view 선언은 필드(측정기준 또는 측정)의 목록과 기본 테이블 또는 파생 테이블에 대한 연결을 정의합니다. LookML은 뷰가 일반적으로 기본 데이터베이스 테이블을 참조하지만 파생 테이블을 나타낼 수도 있습니다.

뷰는 다른 뷰와 조인될 수 있습니다. 뷰 간의 관계는 일반적으로 모델 파일에서 탐색 선언의 일부로 정의됩니다.

Looker에서는 보기 이름이 측정기준의 시작 부분에 표시되고 데이터 표에서 측정 이름이 표시됩니다. 이 이름 지정 규칙을 사용하면 필드가 속한 뷰를 명확하게 알 수 있습니다.

뷰는 .view.lkml 파일에 저장됩니다. 뷰 선언의 일반적인 형식은 다음과 같습니다. 전체 사용 세부정보는 매개변수 보기 문서 페이지를 참조하세요.

view: view_name {
  dimension: field_name {
    # dimension_parameters
  }
  # more dimension declarations
  measure: field_name {
    # measure_parameters
  }
  # more measure declarations
  set: first_set {
    fields: [field_one, field_two]
  }
}

탐색에서 type: count 측정값을 사용하면 시각화에서 결과 값에 "Count."가 아닌 뷰 이름으로 라벨을 지정합니다. 혼동을 피하려면 뷰 이름을 복수로 설정하거나 시각화 설정의 시리즈에서 전체 필드 이름 표시를 선택하거나 뷰 이름의 복수형과 함께 view_label을 사용하는 것이 좋습니다.

탐색

탐색은 사용자가 쿼리할 수 있는 뷰입니다. 탐색은 쿼리의 시작점 또는 SQL 용어로 SQL 문의 FROM으로 생각하면 됩니다. 모든 항목이 탐색인 것은 아닙니다. 모든 대상이 관심 항목을 설명하는 것은 아니기 때문입니다. 예를 들어 비즈니스 이름에 사용자가 직접 쿼리할 필요가 없으므로 상태 이름의 조회 테이블에 해당하는 상태 보기에 탐색이 필요하지 않습니다. 반면 비즈니스 사용자는 주문 뷰를 쿼리하고자 할 수 있으므로 주문에 대한 탐색을 정의하는 것이 좋습니다.

explore 선언은 다른 뷰와의 조인 관계를 지정합니다. 앞의 예에서 주문 뷰가 상태 뷰에 연결되어 판매가 발생한 상태를 식별할 수 있습니다. 자세한 내용은 조인을 참조하세요.

사용자는 Looker에서 탐색 메뉴에 나열된 탐색 항목을 볼 수 있습니다.

규칙에 따라 탐색은 모델 파일에서 선언됩니다. 다음 예는 전자상거래 데이터베이스에 대한 orders 탐색에 대한 선언을 보여줍니다. orderscustomers 뷰는 각각의 뷰 파일에서 다른 위치에 정의됩니다.

# ———————————————
# 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} ;;
  }
}

join 선언에 관한 자세한 내용은 조인을 참고하세요. 전체 사용 세부정보는 조인 매개변수 문서 페이지를 참조하세요.

필드 측정기준 및 측정

뷰에는 필드, 대부분 측정기준과 측정항목이 포함되어 있으며 이는 Looker 쿼리의 기본 구성요소입니다.

Looker에서 측정기준은 그룹화 가능한 필드이며 쿼리 결과를 필터링하는 데 사용할 수 있습니다. 실행 가능한 시스템은 다음과 같습니다.

  • 기본 테이블의 열에 직접 연결되는 속성이 있는 속성
  • 사실 또는 숫자 값
  • 단일 행의 다른 필드 값을 기반으로 계산된 파생 값

예를 들어 제품 보기의 측정기준에는 제품 이름, 제품 모델, 제품 색상, 제품 가격, 제품 생성일, 제품 지원 종료 날짜가 포함될 수 있습니다.

측정값은 COUNT, SUM, AVG, MIN, MAX와 같은 SQL 집계 함수를 사용하는 필드입니다. 다른 측정값의 값을 기준으로 계산된 필드는 모두 측정값입니다. 측정값을 사용하여 그룹화된 값을 필터링할 수 있습니다. 예를 들어 판매 보기의 측정항목에는 판매된 총 항목 수 (개수), 총 판매 가격 (합계), 평균 판매 가격 (평균)이 포함될 수 있습니다.

필드의 동작 및 예상 값은 선언된 유형(예: string, number, time)에 따라 다릅니다. 측정항목의 경우 sum, percent_of_previous와 같은 집계 함수가 유형에 포함됩니다. 자세한 내용은 측정기준 유형측정 유형을 참고하세요.

Looker에서 필드는 페이지 왼쪽의 필드 선택 도구에 있는 탐색 페이지에 나열됩니다.

규칙에 따라 필드는 필드가 속한 뷰의 일부로 선언되며 뷰 파일에 저장됩니다. 다음 예는 여러 측정기준 및 측정 선언을 보여줍니다. 완전히 범위가 지정된 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 선언의 join 예입니다.

# ———————————————
# 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 선언을 보여줍니다. 이 필드는 구매 항목과 관련된 세부정보를 나열하는 필드를 정의합니다. 이 집합은 범위를 지정하여 다른 뷰의 필드를 참조합니다.

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에서는 LookML을 작성할 때 이 설정으로 설정된 필드를 드릴다운할 수 있습니다. 드릴은 쿼리 결과 테이블 및 대시보드 모두에서 작동합니다. 드릴은 클릭한 값으로 제한된 새 쿼리를 시작합니다.

드릴 동작은 다음과 같은 측정기준 및 측정에서 다릅니다.

  • 측정기준을 드릴다운할 때 새 쿼리는 드릴다운 값을 필터링합니다. 예를 들어 날짜별로 고객 주문 쿼리에서 특정 날짜를 클릭하면 새 쿼리는 특정 날짜의 주문만을 표시합니다.
  • 측정값을 드릴다운하면 측정에 기여한 데이터 세트가 새 쿼리에 표시됩니다. 예를 들어 개수를 드릴다운할 때 새 쿼리는 해당 수를 계산하는 행을 표시합니다. 최대, 최소 및 평균 측정을 상세히 살펴볼 때 해당 측정에 기여한 모든 행이 계속 표시됩니다. 즉, 예를 들어 최댓값을 상세히 살펴보면 최댓값을 계산하는 단일 행뿐만 아니라 최댓값을 계산하는 데 사용된 모든 행이 표시됩니다.

새 드릴 쿼리에 표시할 필드는 set를 사용하여 정의하거나 drill_fields 매개변수 (필드의 경우) 또는 drill_fields 매개변수 (보기의 경우)로 정의할 수 있습니다.

파생 테이블

파생 테이블은 결과가 데이터베이스의 실제 테이블인 것처럼 사용되는 쿼리입니다. 파생 테이블은 view 선언에서 derived_table 매개변수를 사용하여 생성됩니다. Looker는 파생된 테이블에 자체 열 조합이 있는 물리적 테이블인 것처럼 액세스합니다. 파생된 테이블은 derived_table 매개변수를 사용하여 자체 뷰로 노출되며 기존 뷰와 동일한 방식으로 측정기준과 측정을 정의합니다. 파생된 뷰의 뷰는 다른 뷰와 마찬가지로 쿼리되고 다른 뷰로 조인될 수 있습니다.

파생 테이블은 데이터베이스의 스크래치 스키마에 작성되고 지속성 전략을 사용하여 지정한 일정에 따라 자동으로 다시 생성되는 테이블인 영구 파생 테이블 (PDT)으로 정의할 수도 있습니다.

자세한 내용은 Looker의 파생 테이블 문서 페이지를 참조하세요.

데이터베이스 연결

LookML 프로젝트의 또 다른 중요한 요소는 Looker가 데이터베이스에서 쿼리를 실행하는 데 사용할 데이터베이스 연결입니다. Looker 관리자는 연결 페이지를 사용하여 데이터베이스 연결을 구성하며 LookML 개발자는 모델 파일connection 매개변수를 사용하여 모델에 사용할 연결을 지정합니다. 데이터베이스에서 LookML 프로젝트를 생성하면 Looker가 모델 파일의 connection 매개변수를 자동으로 채웁니다.