DRY LookML로 코드 재사용성 극대화: set 매개변수로 재사용 가능한 필드 목록 정의

LookML 프로젝트를 보다 효율적이고 쉽게 유지관리하는 한 가지 방법은 LookML set 매개변수를 사용하는 것입니다. set 매개변수를 사용하면 fields 매개변수 내에서 또는 드릴 필드 내에서 프로젝트 전체에서 반복될 수 있는 필드를 그룹화할 수 있습니다. 세트를 사용하여 반복되는 입력란을 그룹화하면 모델 내에서 해당 필드 그룹을 유지할 수 있는 단일 위치를 만듭니다.

이 페이지에서는 LookML 세트를 사용하여 LookML 프로젝트를 더 효율적이고 유지관리할 수 있도록 해 주는 예시를 소개합니다.

재료

기본 요건

예시: 동일한 드릴 필드를 여러 측정에 추가

사용자가 보고서의 판매 지표를 볼 때마다 드릴다운하여 더 세부적인 사용자 세부 정보를 볼 수 있도록 Explore UI에서 개수 측정값을 선택하면 ID, 도시, , 국가 필드에 대한 쿼리가 열리도록 하려고 한다고 가정해 보겠습니다.

개수 측정값을 선택하면 ID, 도시, 주, 국가 필드에 대한 쿼리가 열립니다.

id, city, state, country 필드가 포함된 user_details라는 세트를 만든 후 사용자가 자세히 살펴볼 수 있도록 여러 척도로 참조할 수 있습니다.


set: user_details {
  fields: [id, city, state, country]
}

user_details 세트를 사용하여 count 측정의 드릴 필드를 정의할 수 있습니다.


measure: count {
  type: count
  drill_fields: [user_details*]
}

이 예시에서 개수 측정값을 분석할 때 user_details 내의 필드가 쿼리 결과에 표시되도록 지정하는 데 [set_name*] 구문을 사용합니다.

그런 다음 이 세트를 재사용하여 추가 드릴 필드를 만들 수 있습니다. 예를 들어 LookML 코드 drill_fields: [user_details*]order_count, total_sale_price, average_sale_price 측정값에 추가할 수 있습니다.


measure: order_count {
  view_label: "Orders"
  type: count_distinct
  description: "Number of orders"
  sql: ${order_id} ;;
  drill_fields: [user_details*]

}

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

measure: average_sale_price {
  type: average
  value_format_name: usd
  sql: ${sale_price} ;;
  drill_fields: [user_details*]
}

개수 측정과 마찬가지로 사용자가 주문 수, 총 판매 가격 또는 평균 판매 가격 값을 선택할 때 Explore UI에서 Looker는 ID, 도시, , 국가 필드에 대한 쿼리가 포함된 창을 엽니다.

필드 추가 또는 삭제와 같이 드릴 필드를 변경하려면 user_details 세트만 업데이트하면 됩니다.

또한 뷰의 drill_fields 매개변수 내의 세트를 참조하여 필드 수준에서 드릴 필드가 아직 지정되지 않은 해당 뷰 내의 모든 측정값에 대한 드릴 필드를 정의할 수도 있습니다.

예: Explore에서 필드 세트 포함 또는 생략

해당 사용자에게 중요하지 않은 필드를 제외하여 사용자를 위한 Explore 필드 선택 도구를 단순화한다고 가정합니다.

예를 들어 ID, 이름, , 이메일, 연령 필드와 도시, , 국가Zip과 같은 위치 필드를 포함하여 고객에 대한 정보가 포함된 users 뷰가 있다고 가정합니다. users 뷰가 orders Explore에 조인됩니다.

주문 뷰의 필드 선택 도구에는 생략할 필드를 포함하여 주문 및 사용자 뷰의 모든 필드가 포함됩니다.

만약 사용자를 위한 Explore에서 이름, , 이메일, 연령성별 필드를 제외하고 싶다면 어떻게 합니까? 주문 Explore에서 제외할 필드를 나열하는 user_info라는 세트를 만들 수 있습니다.

사용자 데이터 Explore가 포함되지 않은 주문에서는 Explore 필드 선택 도구에서 이름, 성, 이메일, 연령, 성별 필드가 제외됩니다.

user_info 세트의 LookML은 다음과 같습니다.


set: user_info {
  fields: [first_name, last_name, email, age, gender]
}

사용자 데이터가 없는 주문 라벨로 주문 탐색을 정의하려면 users 뷰를 orders Explore에 조인합니다. LookML 코드 fields: [ALL_FIELDS*, -users.user_info*]orders Explore에 추가하여 users 뷰에서 설정된 user_info의 필드를 제외한 모든 필드를 포함합니다.


explore: orders {
  fields: [ALL_FIELDS*, -users.user_info*]
  label: "Orders Without User Data"
  join: users {
    type: left_outer
    sql_on: ${orders.user_id} = ${users.id} ;;
    relationship: many_to_one
  }
}

orders Explore의 fields 매개변수에서 -users.user_details* 구문을 사용하여 user_details 세트가 Explore에서 제외되기 때문에 사용자 데이터가 없는 주문 Explore 내의 주문 보기에서는 Explore 필드 선택 도구에서 users_user.info에 나열된 필드를 Explore가 생략합니다.

user_info 세트를 재사용하여 users 뷰가 조인된 다른 Explore의 Explore UI에서 이러한 필드를 생략할 수 있습니다. 필드 추가 또는 삭제와 같이 user_info 세트에 대해 항목을 변경하려면 user_info 세트만 업데이트하면 됩니다.