Looker 블록 맞춤설정

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

설치

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

Cortex Framework Looker 블록은 각 레이어가 이전 레이어에 증분 로직을 추가하는 계층화된 접근 방식으로 생성되었습니다.

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

상세검색을 사용하는 것은 이 계층화된 접근 방식과 맞춤설정의 핵심입니다. 그리고 DRY (Do Not Repeat Yourself) 원칙을 따르기 위해 extends상수 가 활용됩니다. 라벨, SQL 문, HTML, 링크 속성의 동적 콘텐츠는 Liquid 템플릿 언어를 사용하여 생성됩니다.

일반적인 Google 권장사항:

파일 및 폴더 구성

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

  • .model 파일
  • 매니페스트 파일
  • README 및 기타 마크다운 파일
  • Marketplace 파일 (블록이 Looker Marketplace에서도 제공되는 경우)

파일 브라우저

그림 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 인스턴스에 정의해야 합니다. 기본 언어 또는 통화에 대한 이러한 사용자 속성을 사용하면 사용자 또는 그룹별로 대시보드가 표시되는 방식을 맞춤설정할 수 있습니다. 필수 사용자 속성에 대한 자세한 내용은 각 블록의 개요 를 참고하세요.

조회수

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

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

라벨, 새 측정기준, 측정값과 같은 이러한 뷰에 대한 중요한 수정사항은 핵심 폴더에서 상세검색, extends 또는 파생 테이블을 사용하여 생성되었습니다.

핵심 폴더 내에서 뷰에는 뷰 유형을 나타내는 접미사가 붙어 있습니다.

  • _rfn 상세검색
  • _ext 확장해야 하는 뷰
  • _sdt SQL 기반 파생 테이블
  • _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 필드를 표시하려면 숨김 속성을 '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. 라벨 속성 수정: label 속성을 average_sales 로 변경하거나 선택한 다른 라벨로 변경합니다.
  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에 두 번째 상세검색 파일 포함: 이렇게 하면 의 모든 정의와 개선사항이 Explore에 통합됩니다.sales_orders_rfn2

    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에 새 상세검색 포함: include 속성에서 Cortex Framework Looker 블록에 제공된 상세검색 대신 새 파일을 사용합니다.

    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 대시보드 빌드를 참고하세요.