DRY LookML로 코드 재사용성 극대화: 여러 사용 사례에 대한 단일 기본 뷰 맞춤설정

하나의 Explore를 공유하지만 사용자의 팀이나 지역에 따라 사용 사례가 다른 사용자가 많다고 가정해 보겠습니다. 각 사용자는 자신의 고유한 사용 사례에 적용되는 필드만 확인하려 합니다. 사용자의 다양한 니즈를 충족하기 위해 LookML 상세검색을 사용하여 원본 LookML을 수정하지 않고도 기존 뷰와 Explore를 맞춤설정할 수 있습니다. 그런 다음 이러한 세분화된 뷰 및 Explore를 사용자의 다양한 니즈에 따라 맞춤설정된 별도의 전용 모델 파일에 포함할 수 있습니다.

이 페이지에서는 LookML 상세검색을 사용하여 단일 기본 뷰를 맞춤설정하고, 회사 내 두 팀에 대해 고유한 Explore를 만드는 예시를 제공합니다. 또한 미세 조정된 콘텐츠에서 필드를 숨기고 추가하는 예시를 포함합니다.

재료

기본 요건

예시: 동일한 기본 뷰에서 여러 개의 맞춤설정된 Explore 만들기

고객, 구매, 배송, 위치에 대한 데이터가 포함된 판매 Explore가 있다고 가정해 보겠습니다. 회사의 마케팅 및 물류 팀 모두 이 데이터를 탐색해야 하지만 각각 판매 Explore 내의 다른 필드에 초점을 맞추고 있습니다.

쉽게 탐색할 수 있도록 Explore 필드 선택 도구에서 각 팀에 유용한 필드만 표시하려고 합니다. 이를 위해 판매 Explore 및 기반 sales 뷰의 두 가지 상세검색을 정의할 수 있습니다. 마케팅 팀의 Explore에는 고객 및 구매 트렌드와 관련된 필드가 표시되고 물류 팀의 탐색에는 배송 및 위치와 관련된 필드가 표시될 수 있습니다. 또한 각 미세 조정된 뷰에 각 팀의 니즈에 적합한 새 필드를 추가할 수 있습니다.

현재 판매 Explore의 필드 선택 도구는 판매 뷰의 모든 필드를 표시합니다.

판매 뷰에는 생성, 전송, 반품 및 배송 날짜 필드를 비롯해 ID, 수익, 상태, 평균 및 총 할인가와 개수가 포함됩니다.

필드 선택 도구는 조인된 사용자 뷰의 모든 필드도 표시합니다.

사용자 뷰에는 연령, 도시, 국가, 생성 날짜, 이메일, 이름 및 성, ID, 주, 우편번호, 개수에 대한 필드가 포함됩니다.

다음 단계를 따라 sales 뷰를 미세 조정하여 마케팅 및 물류 팀에 관심 있는 필드만 포함된 별도의 Explore 두 개를 만들 수 있습니다.

  1. 이 예시에서는 sales 뷰 및 조인된 users 뷰를 기반으로 하는 판매 Explore에 대한 LookML이 포함된 base_analysis.lkml라는 새 LookML 파일을 만듭니다. 기본 sales Explore 및 해당 뷰를 사용하여 각 팀에 대해 맞춤설정된 Explore를 만들려고 하는 경우 단일 파일 내에서와 같이 단일 위치에서 모든 공유 필드 및 속성을 정의할 수 있습니다.

    
    # base_analysis.lkml
    
    include: "views/sales.view.lkml"
    include: "views/inventory_items.view.lkml"
    include: "views/users.view.lkml"
    
    explore: sales {
      join: inventory_items {
        type: left_outer
        sql_on: ${sales.inventory_item_id} = ${inventory_items.id} ;;
        relationship: many_to_one
      }
    
      join: users {
        type: left_outer
        sql_on: ${sales.user_id} = ${users.id} ;;
        relationship: many_to_one
      }
    }
    
  2. 각 팀에 대해 정의할 판매 Explore의 상세검색을 보관할 두 개의 개별 파일을 만듭니다. 파일 이름을 marketing_analysis.lkmllogistics_analysis.lkml로 지정할 수 있습니다. 다음에 표시된 LookML 코드는 이전에 표시된 base_analysis.lkml 파일에 정의된 대로 기본 sales Explore를 미세 조정하여 marketing_analysis.lkml라는 새 파일 내에 마케팅 팀에 대한 판매 분석 라벨을 추가합니다. include: "/base/base_analysis.lkml" 문은 base_analysis.lkml 파일의 콘텐츠를 marketing_analysis.lkml 파일 내에서 참조할 수 있도록 합니다.

    
    # marketing_analysis.lkml
    
    include: "/base/base_analysis.lkml"
    
    explore: +sales {
      label: "Sales Analysis for Marketing Team"
    }
    
    
  3. 각 팀에 대해 ecommerce_marketing.modelecommerce_logistics.model과 같은 별도의 모델 파일을 만듭니다. 각 팀별로 다른 상세검색을 별도의 전용 모델에저장하면 한 팀의 사용 사례에 대한 맞춤설정을 덮어쓰지 않고 동일한 뷰 및 Explore 집합을 여러 번 상세검색할 수 있습니다. 자세한 내용은 LookML 상세검색 문서 페이지를 참조하세요.

  4. include 매개변수를 사용하여 ecommerce_marketing.model 모델에 marketing_analysis.lkml을 포함하고 ecommerce_logistics.model 모델 내에 logistics_analysis.lkml을 포함합니다.

  5. 필요에 따라 marketing_analysis.lkmllogistics_analysis.lkml 파일에 상세검색을 추가합니다. 예를 들어 불필요한 필드를 숨기고 각 팀의 미세 조정 Explore에 새 필드를 추가할 수 있습니다.

원하는 경우 Looker 관리자가 각 전용 모델에 모델 액세스를 구성하여 특정 팀에 Explore 수준 액세스 권한을 제공하도록 할 수 있습니다.

미세 조정 Explore에서 불필요한 필드 숨기기

마케팅 팀은 해당 필드를 사용하지 않으므로, marketing_analysis.lkml 파일에서 다음과 같이 sales 뷰를 미세 조정하여 반품, 배송, 전송생성된 측정기준 그룹과 상태 측정기준을 숨길 수 있습니다.


# marketing_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Marketing Team"
}

view: +sales
  dimension_group: returned {
    hidden: yes
  }

  dimension_group: shipped {
    hidden: yes
  }

  dimension_group: delivered {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }

  dimension: status {
    hidden: yes
  }
}

마찬가지로 logistics_analysis.lkml 파일에서 다음 LookML을 사용하여 물류 팀에서 필요하지 않은 필드(예:수익, 할인가 평균 할인가)를 숨길 수 있습니다.


# logistics_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Logistics Team"
}

view: +sales {
  dimension: profit {
    hidden: yes
  }

  dimension: sale_price {
    hidden: yes
  }

  measure: average_sale_price {
    hidden: yes
  }
}

물류 팀은 이름, 연령, 이메일 주소 등 고객에 대한 개인 정보를 볼 필요가 없으므로 logistics_analysis.lkml 파일 내에서 조인된 users 뷰에 대해 상세검색을 추가하여 Explore에서 이 필드를 숨길 수도 있습니다.

  view: +users {
    dimension: age {
    hidden: yes
  }

  dimension: email {
    hidden: yes
  }

  dimension: first_name {
    hidden: yes
  }

  dimension: last_name {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }
}

미세 조정 Explore에 새 필드 추가

미세 조정 sales 뷰 내에서 마케팅 팀이 관심을 가질 만한 새 필드를 만들 수도 있습니다. 예를 들어 미세 조정 sales 뷰에서 평균 할인가, 총 할인가사용자당 평균 지출 필드를 추가할 수 있습니다:

판매 보기에는 ID, 수익, 할인가, 개수, 새로운 평균 판매가, 사용자당 평균 지출, 총 할인가 필드가 표시됩니다.

다음 LookML을 사용하여 이러한 필드를 marketing_analysis.lkml 파일의 미세 조정된 sales 뷰에 추가할 수 있습니다.


# marketing_analysis.lkml

view: +sales {
  measure: average_sale_price {
    type: average
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: total_sale_price {
    type: sum
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: average_spend_per_user {
    type: number
    value_format_name: usd
    sql: 1.0 * ${total_sale_price} / NULLIF(${users.count},0) ;;
    drill_fields: [detail*]
  }
}

생성된 마케팅 Explore에는 조인된 사용자 뷰의 필드 외에도 판매 뷰 아래에 있는 새 필드가 포함됩니다. 반환됨, 배송됨, 전송됨, 생성됨 측정기준 그룹 및 상태 측정기준은 마케팅 팀이 필요로 하지 않으므로 숨겨진 것입니다.

마찬가지로, 물류 팀의 경우 배송 시간 버킷평균 배송 시간과 같이 물류 팀에 유용한 새 필드를 만들 수 있습니다.

이제 물류 팀 Explore에 새로운 배송 시간 버킷 및 평균 배송 시간 필드가 다른 배송 및 사용자 위치 필드와 함께 나열됩니다.

다음 LookML을 사용하여 이러한 필드를 logistics_analysis.lkml 파일의 미세 조정된 sales 뷰에 추가할 수 있습니다.


# logistics_analysis.lkml

view: +sales {
  dimension: shipping_time_buckets {
    case: {
      when: {
        sql: ${shipping_time} <= 7 ;;
        label: "One Week"
      }
      when: {
        sql: ${shipping_time} > 7 AND ${shipping_time} <= 14 ;;
        label: "Two Weeks"
      }
      when: {
        sql:  ${shipping_time} > 14 ;;
        label: "Over Two Weeks"
      }
      else: "Note Shipped"
    }
  }

  measure: average_shipping_time {
    type: average
    value_format_name: decimal_4
    sql: ${shipping_time} ;;
  }
}

생성된 물류 Explore에는 조인된 사용자 뷰의 필드 외에도 판매 뷰 아래에 있는 새 필드가 포함됩니다. 판매 뷰의 수익, 할인가평균 할인가 필드를 비롯해 사용자 Explore의 연령, 이메일, 이름, 생성됨 필드는 물류 팀이 필요로 하지 않으므로 숨겨져 있습니다.

이제 각 팀이 특정 니즈에 보다 적합한 Explore를 사용할 수 있게 되었습니다. 이 방법을 사용하면 초기 설정이 약간 더 필요하지만 핵심 데이터를 한 곳에 유지하여 보다 쉽게 찾고 사용할 수 있습니다.