LookML 소개

LookML(Looker 모델링 언어의 줄임말)은 Looker에서 시맨틱 데이터 모델을 만드는 데 사용되는 언어입니다. LookML을 사용하여 SQL 데이터베이스의 측정기준, 집계, 계산, 데이터 관계를 설명할 수 있습니다. Looker는 LookML로 작성된 모델을 사용하여 특정 데이터베이스에 대해 SQL 쿼리를 작성합니다.

LookML은 C 또는 Ruby와 같은 명령형 언어와 반대로 make와 같은 종속 언어입니다. LookML은 데이터 모델링을 위한 사전 정의된 데이터 유형 및 구문을 제공합니다. 프로그래밍 언어에 대한 사전 경험이 없어도 LookML을 이해할 수 있습니다. LookML은 특정 SQL 언어와 독립적이며 SQL 표현식을 캡슐화하여 모든 SQL 구현을 지원합니다.

데이터 분석가를 위해 LookML은 DRY('반복 금지') 스타일을 촉진합니다. 즉, SQL 표현식을 한 곳에서 한 번 작성하면 Looker는 코드를 반복적으로 사용하여 임시 SQL 쿼리를 생성합니다. 그러면 비즈니스 사용자가 Looker에서 결과를 사용하여 SQL 구조의 복잡성이 아닌 필요한 콘텐츠에만 집중할 수 있습니다.

LookML 프로젝트

LookML은 프로젝트에 정의됩니다. LookML 프로젝트는 적어도 모델 및 뷰 파일 그리고 선택적으로 Git 저장소를 통해 버전이 함께 제어되는 다른 유형의 파일을 포함하는 파일 모음입니다. 모델 파일에는 프로젝트에서 사용할 테이블과 테이블 조인 방법에 대한 정보가 포함되어 있습니다. 뷰 파일은 각 테이블에 대한 정보가 어떻게 계산되는지(또는 조인에서 허용하는 경우 여러 테이블에 대해) 설명합니다.

LookML은 콘텐츠와 구조를 분리하므로 쿼리 구조(테이블 조인 방법)는 쿼리 콘텐츠(액세스할 열, 파생 필드, 계산할 집계 함수, 적용할 필터링 표현식)와 관계가 없습니다.

Looker 쿼리는 LookML 프로젝트 파일을 기반으로 합니다. 데이터 분석가는 LookML을 사용하여 분석 중인 데이터의 데이터 구조 및 비즈니스 규칙을 정의하는 데이터 모델을 만들고 유지합니다. Looker SQL 생성기는 LookML을 SQL로 변환하여 비즈니스 사용자가 LookML 또는 SQL을 작성하지 않고도 쿼리할 수 있도록 합니다.

비즈니스 사용자는 Looker 쿼리 빌더 또는 탐색 인터페이스를 사용하여 Looker 분석가가 정의하는 데이터 모델을 기반으로 하는 쿼리를 만듭니다. 사용자는 측정기준, 측정값, 필터를 선택하여 자체 질문을 기반으로 커스텀 쿼리를 만들고 자체 통계를 생성할 수 있습니다.

사용자가 쿼리를 만들면 Looker SQL 생성기로 전송되어 쿼리를 SQL로 변환합니다. SQL 쿼리가 데이터베이스에 대해 실행된 후 Looker가 탐색 인터페이스에서 형식이 지정된 결과를 사용자에게 반환합니다. 그러면 사용자가 결과를 시각화하고 유용한 정보를 생성할 수 있습니다.

프로젝트의 기본 LookML 요소와 각 요소가 서로 어떻게 관련되는지에 대한 자세한 내용은 LookML 용어 및 개념을 참조하세요.

사용자에게 표시되는 정보

프로젝트 설정 방법 및 파일의 특정 콘텐츠에 따라 사용자에게 표시되는 항목과 Looker와 상호작용하는 방법이 결정됩니다.

  1. 왼쪽 탐색 패널의 Explore 패널은 모델 이름으로 구성됩니다. 각 모델 이름 아래에는 해당 모델에 정의된 사용 가능한 Explore 목록이 있습니다.
  2. 사용자가 특정 Explore를 검색할 수 있습니다.
  3. 개발자는 Explore에 대한 설명을 정의할 수 있으며, 사용자가 탐색 메뉴에서 Explore 이름 위로 마우스를 가져가면 볼 수 있습니다.

  4. 필드 선택 도구 창은 이름으로 구성됩니다. 각 뷰 이름 아래에는 해당 뷰에 포함된 테이블의 사용 가능한 필드 목록이 있습니다. 대부분의 뷰에는 측정기준측정값이 모두 표시됩니다. 이 예에서는 뷰 파일에 정의된 반환된 날짜 측정기준 그룹 내에서 측정기준을 선택합니다.

  5. 사용자는 쿼리의 기반이 되는 여러 측정값을 선택할 수 있습니다.

  6. 사용자는 필드 선택 도구 창에서 필터 및 피벗과 같은 옵션을 적용할 수 있습니다.

  7. 사용자는 쿼리 검색어를 세분화할 수 있습니다.

  8. 사용자는 쿼리 결과에 적용할 시각화 유형을 선택할 수 있습니다.

  9. 이 Explore를 실행하면 지난 해 반품된 주문의 총 할인가와 총이익의 데이터 테이블과 시각화를 모두 반환하는 SQL 쿼리가 생성됩니다.

코드 샘플

다음 코드 예시는 모델 파일 ecommercestore.model.lkml과 2개의 뷰 파일 orders.view.lkmlcustomers.view.lkml이 있는 전자상거래 스토어의 최소 LookML 프로젝트를 보여줍니다.

######################################
# FILE: ecommercestore.model.lkml    #
# Define the explores and join logic #
######################################
connection: order_database
include: "*.view.lkml"
explore: orders {
  join: customers {
    sql_on: ${orders.customer_id} = ${customers.id} ;;
  }
}

##########################################################
# FILE: orders.view.lkml                                 #
# Define the dimensions and measures for the ORDERS view #
##########################################################
view: orders {
  dimension: id {
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }
  dimension: customer_id {      # field: orders.customer_id
    sql: ${TABLE}.customer_id ;;
  }
  dimension: amount {           # field: orders.amount
    type: number
    value_format: "0.00"
    sql: ${TABLE}.amount ;;
  }
  dimension_group: created {                # generates fields:
    type: time                              # orders.created_time, orders.created_date
    timeframes: [time, date, week, month]   # orders.created_week, orders.created_month
    sql: ${TABLE}.created_at ;;
  }
  measure: count {             # field: orders.count
    type: count                # creates a sql COUNT(*)
    drill_fields: [drill_set*] # list of fields to show when someone clicks 'ORDERS Count'
  }
  measure: total_amount {
    type: sum
    sql: ${amount} ;;
  }
  set: drill_set {
    fields: [id, created_time, customers.name, amount]
  }
}

#############################################################
# FILE: customers.view.lkml                                 #
# Define the dimensions and measures for the CUSTOMERS view #
#############################################################
view: customers {
  dimension: id {
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }
  dimension: city {                    # field: customers.city
    sql: ${TABLE}.city ;;
  }
  dimension: state {                   # field: customers.state
    sql: ${TABLE}.state ;;
  }
  dimension: name {
    sql: CONCAT(${TABLE}.firstname, " ", ${TABLE}.lastname) ;;
  }
  measure: count {             # field: customers.count
    type: count                # creates a sql COUNT(*)
    drill_fields: [drill_set*] # fields to show when someone clicks 'CUSTOMERS Count'
  }
  set: drill_set {                     # set: customers.drill_set
    fields: [id, state, orders.count]  # list of fields to show when someone clicks 'CUSTOMERS Count'
  }
}

추가 리소스

LookML 개발을 처음 사용하는 경우 다음 섹션에 설명된 리소스를 사용하여 학습 속도를 높이는 것이 좋습니다.

Looker의 학습 환경 이용

Google Cloud Skills Boost 과정을 확인하세요.

Looker를 사용하여 데이터를 쿼리하고 탐색하는 방법 알아보기

Looker에서 데이터를 탐색하는 방법을 알면 LookML에서 데이터를 모델링할 때 많은 이점을 누릴 수 있습니다. Looker를 사용하여 데이터를 쿼리, 필터링, 상세히 분석하는 데 익숙하지 않다면 다음 리소스를 참조하세요.

LookML로 이동하기 전에 SQL 기본 사항 검토

LookML을 작성하려면 SQL 쿼리를 이해해야 합니다. SQL 전문가가 아니어도, 초보자라도 강력한 Looker 모델을 만들 수 있습니다. 하지만 일반적으로 LookML을 자세히 이해할수록 SQL에 대한 더 많은 지식을 활용할 수 있습니다.

SQL 새로고침이 필요한 경우 다음과 같은 몇 가지 리소스를 확인해 보세요.

LookML 기초 알아보기

이러한 리소스를 통해 LookML 지식이 빠르게 늘어납니다. 학습 계정을 사용하여 다양한 설계 패턴을 실험합니다.

LookML 기본사항을 학습한 후 다음 페이지에서 다양한 유형의 LookML 매개변수 개요를 참조하세요.