Looker 블록 맞춤설정

이 페이지에서는 다음 Cortex Framework Looker 블록을 특정 비즈니스 요구사항에 맞게 조정하는 방법에 관한 권장사항 및 예시를 간략하게 설명합니다.

설치

Looker 블록 배포 문서에 설명된 대로 여러 가지 방법으로 Cortex Framework Looker 블록을 설치할 수 있습니다. 하지만 비즈니스 요구사항에 맞게 블록을 맞춤설정하는 가장 간단한 방법은 저장소를 포크하는 것입니다.

Cortex 프레임워크 Looker 블록은 각 레이어가 이전 레이어에 점진적인 로직을 추가하는 계층적 접근 방식으로 만들어졌습니다.

  • 기본 레이어: 소스 테이블을 참조하는 머신 생성 LookML 뷰입니다.
  • 핵심 레이어: 새 필드를 추가하거나 기본 레이어 필드를 수정하는 필기 변경사항입니다.
  • 논리적 레이어: 여러 뷰에서 정의 및 조인을 살펴봅니다.

세부검색을 사용하는 것이 이 계층적 접근 방식과 맞춤설정의 핵심입니다. 또한 DRY (반복 금지) 원칙을 준수하기 위해 확장상수가 활용됩니다. 라벨, SQL 문, html, 링크 속성의 동적 콘텐츠는 Liquid 템플릿 언어를 사용하여 생성됩니다.

일반적인 Google 권장사항:

파일 및 폴더 구성

Looker 블록 내에서 각 폴더는 객체 유형 (예: 뷰, Explore, 대시보드 등)의 모음을 나타냅니다. 그리고 각 개별 객체는 별도의 파일에 정의됩니다. 프로젝트 루트에는 다음과 같은 주요 파일이 포함됩니다.

  • .model 파일
  • 매니페스트 파일
  • README 및 기타 마크다운 파일
  • 마켓플레이스 파일 (Looker 마켓플레이스에서도 블록을 사용할 수 있는 경우)

파일 브라우저

그림 1 Looker 블록 내 폴더 구성의 예

모델

모듈식 파일 관리를 사용하면 다음 매개변수를 사용하여 프로젝트의 model 파일을 간소화할 수 있습니다.

  1. 연결
  2. include

    포함된 파일 형식은 다음과 같습니다.

    • 구성요소 (데이터 그룹, 관련 있는 경우 named_value_formats)
    • Explore (Explore는 모델 파일에 정의되지 않음)
    • 대시보드

블록에서 사용되는 뷰의 include 문이 다음 예와 같이 이 위치가 아닌 각 개별 Explore 파일 내에 정의됩니다.

connection: "@{CONNECTION_NAME}"

include: "/components/**/*.lkml"
include: "/explores/**/*.explore"
include: "/dashboards/**/*.dashboard"

매니페스트

매니페스트 파일은 프로젝트 전체에서 참조되는 상수를 지정합니다. 블록에 사용되는 상수의 몇 가지 예는 다음과 같습니다.

  • 연결 이름
  • 프로젝트 ID
  • 보고 데이터 세트

Cortex Framework Looker 블록은 상수를 사용하여 다음을 정의합니다.

  • 뷰 라벨
  • 필드 라벨
  • HTML 형식
  • URL 링크
  • 대시보드 이름

Looker 블록에 정의된 상수를 검토하고 필요에 맞게 값을 수정합니다. 변경사항은 상수가 참조되는 모든 위치에 적용됩니다.

사용자 속성

일부 Looker 블록을 사용하려면 관리자가 Looker 인스턴스에서 사용자 속성을 정의해야 합니다. 기본 언어 또는 통화에 관한 이러한 사용자 속성을 사용하면 사용자 또는 그룹별로 대시보드가 표시되는 방식을 맞춤설정할 수 있습니다. 필수 사용자 속성에 관한 자세한 내용은 각 블록의 개요를 참고하세요.

Base 폴더에 있는 뷰는 테이블에서 뷰 만들기를 사용하여 자동으로 생성된 뷰입니다. 다음 파일은 최소한으로 변경되었습니다.

  • 프로젝트 ID 및 데이터 세트 이름을 상수로 대체했습니다.
  • 중첩 레코드를 기반으로 하는 뷰를 별도의 파일로 이동했습니다.
  • 불필요한 드릴다운 필드 정의를 삭제했습니다.

라벨, 새 측정기준, 측정값과 같은 이러한 뷰의 상당한 수정사항은 수정사항, 확장 또는 파생 테이블을 사용하여 Core 폴더에 생성되었습니다.

핵심 폴더 내에서 뷰는 뷰 유형을 나타내는 접미사로 이름이 지정됩니다.

  • _rfn: 세부 조정
  • 연장이 필요한 뷰의 경우 _ext
  • SQL 기반 파생 테이블의 경우 _sdt
  • 기본 파생 테이블의 경우 _ndt
  • 영구 파생 테이블의 경우 _pdt
  • _xvw: 여러 뷰의 필드를 참조하는 뷰

접미사 예시

그림 2 뷰 유형을 나타내는 접미사 예시

각 뷰 정의는 설명, 출처, 참조, 확장된 필드, 기타 관련 메모를 비롯한 배경 정보를 제공하는 주석으로 시작됩니다.

주석

그림 3. 뷰 정의 내 주석의 예

중첩된 반복 레코드

중첩된 반복 레코드가 포함된 기본 테이블의 경우 Looker는 이러한 레코드의 중첩을 해제하기 위해 별도의 뷰를 만듭니다. 예를 들어 Oracle EBS Looker 블록의 sales_orders 테이블에는 lines라는 중첩된 반복 구조체가 있습니다. Looker에서는 이를 sales_orderssales_orders__lines의 두 가지 고유한 뷰로 취급합니다.

Explore 내에서 이러한 중첩되지 않은 레코드를 조인하려면 UNNEST 명령어와 함께 sql 속성을 사용하여 조인을 정의해야 합니다.

UNNEST 명령어

그림 4. UNNEST 명령어와 함께 'sql' 속성을 사용하여 조인하는 예시입니다.

자세한 내용은 Looker에서 중첩된 BigQuery 데이터를 모델링하는 방법을 참고하세요.

Cortex Framework Looker 블록에는 뷰 및 기타 객체에 광범위한 주석이 포함되어 있습니다. 코드 탐색 및 이해를 개선하려면 LookML 개발 환경에서 제공되는 LookML 접기 옵션을 사용하는 것이 좋습니다.

LookML 접기

그림 5. LookML 접기를 클릭합니다.

LookML 펼치기

그림 6 클릭하여 LookML을 펼칩니다.

다시 접기

그림 7. 클릭하여 LookML을 다시 접습니다.

필드

field라는 용어는 dimension, measure, filter, parameter와 같은 객체를 나타냅니다. 이러한 최신 블록 내에서는 다음 원칙을 따랐습니다.

  1. 측정기준의 이름은 snake_case (단어 사이에 소문자 및 밑줄)를 사용하여 지정합니다. 예를 들면 customer_name입니다.
  2. 측정기준의 이름을 지정하는 데는 기본 테이블의 열 이름이 사용됩니다. 측정기준에 라벨을 적용하여 비즈니스 친화적인 이름을 지정할 수 있습니다. 예를 들어 division_hdr_spart라는 측정기준의 라벨은 '부서 ID'일 수 있습니다.
  3. 열이 많은 테이블의 경우 필드는 기본적으로 숨겨집니다. 뷰의 세분화를 사용하여 Explore에 표시할 필드 하위 집합의 hidden 속성을 'no'로 설정합니다. 필드가 예상대로 표시되지 않으면 이 필드 속성을 수정하면 문제가 해결될 수 있습니다.
  4. View_labelgroup_label 속성은 해당하는 경우 Explore 내에서 필드를 구성하는 데 사용됩니다.
  5. 여러 뷰에서 활용되는 필드의 경우 라벨과 같은 속성이 '공통' 뷰 내에 설정되고 이후 다른 뷰로 확장됩니다. 이 접근 방식은 속성 정의를 중앙 집중화하여 재사용성을 촉진합니다. 필요한 수정사항은 '공통' 뷰 내에서 관리되므로 '공통' 뷰가 확장된 모든 뷰에 변경사항이 반영됩니다.
  6. 여러 Explore에서 사용되는 매개변수 또는 여러 뷰를 참조하는 필드는 _xvw 접미사가 있는 필드 전용 뷰에 정의됩니다. 자세한 내용은 Explore 간의 불일치 방지를 참고하세요.

수정 예시

이 섹션에서는 일반적인 맞춤설정의 예시를 제공합니다.

필드 숨기기 해제

기본 뷰는 기본 테이블의 모든 측정기준을 포함합니다. 대부분의 측정기준을 표시할 필요가 없는 경우 세분화를 사용하여 기본적으로 모든 필드를 숨깁니다. fields_hidden_by_default 속성을 'yes'로 설정하면 됩니다. 포함된 LookML 대시보드와 관련된 필드의 하위 집합이 숨김 해제되었습니다. 다음 예에서는 item_posnr라는 측정기준이 있는 sales_orders라는 기본 뷰를 고려합니다.

view: sales_order {
  sql_table_name: reporting.sales_order ;;

  dimension: item_posnr {
    type: string
    sql: ${TABLE}.Item_POSNR
  }
}

이 뷰의 세부사항은 _rfn 접미사가 있는 파일에 정의됩니다. 세분화는 뷰 속성 fields_hidden_by_default를 'yes'로 설정합니다. 즉, 모든 필드는 처음에 숨겨집니다. 뷰에 item_posnr 필드를 표시하려면 hidden 속성을 'no'로 설정합니다.

view: +sales_order {
   fields_hidden_by_default: yes

   dimension: item_posnr {
     hidden: no
   }
}

매개변수 뷰의 라벨 변경

여러 Looker 블록은 독립형 파일 내에 정의된 공유 매개변수 집합을 사용합니다. 예를 들어 Oracle EBS 블록은 otc_common_parameters_xvw 파일을 사용합니다. 이 뷰에는 매니페스트 파일 내에 상수로 정의된 '🔍 필터' 라벨이 표시됩니다.

이 라벨을 수정하려면 다음 단계를 따르세요.

  1. 매니페스트 파일에서 label_view_for_filters 상수를 찾습니다.
  2. 상수 값을 선택한 라벨로 수정합니다.
  3. 매니페스트 파일을 저장합니다. 변경사항은 label_view_for_filters 상수가 참조되는 모든 위치에 자동으로 반영됩니다.
Manifest

constant: label_view_for_filters {
  value: "My Filters"
}

또는 뷰 otc_common_parameters_xvw로 이동하여 'label' 속성을 선택한 값으로 수정합니다.

view: otc_common_parameters_xvw {
  label: "My Filters"
}

새 측정값 추가

새 측정항목을 관련 세분화에 직접 추가할 수 있습니다. 다음 예는 판매 주문 세분화에 추가된 새 측정항목을 보여줍니다.

view: +sales_orders {

  measure: customer_count {
    type: count_distinct
    sql: ${customer_id}
   }
}

두 번째 세분화 레이어 추가

기존 세분화를 기반으로 새로운 세분화를 만들 수 있습니다. 다음 예와 같이 측정항목 average_sales를 만드는 sales_orders_rfn.view 파일의 sales_orders 세분화를 고려해 보겠습니다.

include: "/views/base/sales_orders"
view: +sales_orders {
  measure: average_sales {
    type: average
    sql: ${order_value}
  }
}

두 번째 세분화 파일을 만들려면 다음 단계를 따르세요.

  1. 새 세부 조정 파일 만들기: 이름을 sales_orders_rfn2.view로 지정합니다.
  2. 첫 번째 세부 조정 파일 포함: 이렇게 하면 sales_orders_rfn의 모든 정의가 sales_orders_rfn2에 통합됩니다.
  3. 라벨 속성 수정: average_saleslabel 속성을 '평균 지출' 또는 선택한 다른 라벨로 변경합니다.
  4. 새 측정기준 추가: sales_orders_rfn2.view 파일 내에 새 측정기준의 코드를 포함합니다.

    include: "/views/core/sales_orders_rfn.view"
    view: +sales_orders {
    
      measure: average_sales {
        label: "Average Spend"
      }
    
      dimension: customer_name_with_id {
        type: string
        sql: CONCAT(${customer_id},' ',${customer_name})
      }
    }
    
  5. Explore에 두 번째 세부검색 파일 포함: 이렇게 하면 sales_orders_rfn2의 모든 정의와 개선사항이 Explore에 통합됩니다.

    include: "/views/core/sales_orders_rfn2.view"
    explore: sales_orders {
    }
    

새 세분화 레이어 만들기

Cortex Framework Looker 블록 내에 정의된 기본 뷰의 세분화는 특정 요구사항을 충족하지 않는 경우 대체할 수 있습니다. _rfn 파일을 직접 수정하여 불필요한 필드 정의를 삭제하거나 새 필드 정의를 추가할 수 있습니다.

또는 새 세분화 파일을 만듭니다.

  1. 새 세부 조정 파일 만들기: 이름을 sales_invoices_rfn로 지정하고 저장합니다.
  2. 기본 뷰 포함: 이렇게 하면 기본 뷰 sales_invoices의 모든 정의가 sales_invoices_rfn에 통합됩니다.
  3. 선택한 맞춤설정 추가: 측정기준을 기본 키로 정의해야 합니다.

    include: "/views/base/sales_invoices.view"
    
    view: +sales_invoices {
    
      fields_hidden_by_default: yes
    
      dimension: invoice_id {
        hidden: no
        primary_key: yes
        value_format_name: id
      }
    
      dimension: business_unit_name {
        hidden: no
        sql: CONCAT(${business_unit_id}, ":",${TABLE}.BUSINESS_UNIT_NAME) ;;
      }
    }
    
  4. Explore에 새로운 세분화 포함: Cortex Framework Looker 블록에 제공된 세분화 대신 include 속성의 새 파일을 사용합니다.

    include: "/views/my_customizations/sales_invoices_rfn.view"
    
    explore: sales_invoices {
    }
    

LookML 대시보드 필터 수정

여러 LookML 대시보드에서 사용되는 공통 대시보드 필터 세트는 _template 접미사로 이름이 지정된 대시보드에 정의되고 각 대시보드로 확장됩니다. 확장된 후에는 필터 객체를 특정 대시보드에 맞게 필요에 따라 수정할 수 있습니다.

모든 대시보드 수정

모든 대시보드의 필터 유형을 변경하려면 필터를 정의하는 템플릿 파일을 찾습니다. 선택한 설정으로 ui_config 유형 및 디스플레이 속성을 수정합니다. 이 변경사항은 템플릿을 확장하는 모든 대시보드에 적용됩니다. 다음은 otc_template.dashboard 예시입니다.

- dashboard: otc_template
  extension: required

  filters:
  - name: customer_country
    title: "Sold to Customer: Country"
    type: field_filter
    default_value: ''
    allow_multiple_values: true
    required: false
    ui_config:
      type: dropdown_menu
      display: popover
    explore: countries_md
    field: countries_md.country_name_landx

특정 대시보드 수정

특정 대시보드에서 필터를 수정하려면 대시보드 파일을 찾아 수정해야 하는 일부 속성과 함께 필터 이름을 포함합니다. 이 변경사항은 단일 대시보드로 제한됩니다. 예를 들어 otc_order_status.dashboardcustomer_country 필터의 제목과 UI 유형 및 표시를 변경하려면 이러한 속성만 대시보드 파일에 포함됩니다. 나머지 속성은 확장된 템플릿에서 상속됩니다.

- dashboard: otc_order_status
  title: Order Status
  extends: otc_template

  filters:
  - name: customer_country
    title: "Customer Country"
    ui_config:
      type: dropdown_menu
      display: inline

LookML 대시보드 만들기 및 수정에 관한 자세한 내용은 LookML 대시보드 빌드를 참고하세요.