explore_source

이 페이지에서는 derived_table의 하위 매개변수인 explore_source 매개변수를 참조합니다.

explore_sourcetest 매개변수 문서 페이지에 설명된 test의 하위 매개변수일 수도 있습니다.

사용

derived_table: customer_order_facts {
  explore_source:  orders {
    column:  customer_id {
      field:  orders.customer_id
    }
    column:  order_amount {
      field:  orders.sale_price
    }
    column:  item_qty {
      field:  orders.number_items
    }
    derived_column:  average_item_price {
      sql:  order_amount / item_qty  ;;
    }
    timezone:  "America/Los_Angeles"
  }
}
계층 구조
explore_source
기본값
없음

수락
기본 파생 테이블이 파생된 Explore의 식별자와 기본 파생 테이블을 정의하는 하위 매개변수입니다.

정의

데이터베이스의 일반 테이블처럼 사용할 수 있는 파생 테이블을 만드는 방법에는 두 가지가 있습니다. LookML 파라미터를 사용하여 정의하는 기본 파생 테이블과 SQL 쿼리 문을 사용하여 정의하는 SQL 기반 파생 테이블이 있습니다.

explore_source 매개변수는 기본 파생 테이블에 사용됩니다. 이 매개변수에서는 기본 파생 테이블에 포함할 열, 기본 파생 테이블에 적용할 필터, 기본 파생 테이블 행을 제한하거나 정렬할지 여부, 기본 파생 테이블의 시간 기반 필드를 다른 시간대로 변환할지 여부를 정의합니다.

기본 파생 테이블 정의

기본 파생 테이블에서는 다양한 매개변수를 사용할 수 있으며, 대부분은 선택사항입니다. 네이티브 파생 테이블을 정의하는 문법은 다음과 같습니다.

explore_source: identifier {
  bind_all_filters: yes
  column: identifier {
    field: field_name
  }
  derived_column: identifier {
    sql: SQL expression ;;
  }
  expression_custom_filter: [custom filter expression]
  filters: [field_name_1: "string", field_name_2: "string", ...]
  limit: number
  sorts: [field_name_1: asc | desc, field_name_2: asc | desc, ...]
  timezone: "string"
}

다음 표에서는 네이티브 파생 테이블을 정의하는 데 사용할 수 있는 각 매개변수에 관한 정보를 제공합니다.

파라미터 이름 설명
bind_filters Explore 쿼리의 필터를 기본 파생 테이블 서브 쿼리로 전달합니다. 이 매개변수를 설정하려면 from_field 하위 매개변수를 사용하여 기본 파생 테이블 뷰에 정의되거나 기본 파생 테이블이 조인된 Explore에서 액세스할 수 있는 필드를 지정합니다. 런타임에 Explore의 from_field에 있는 필터는 기본 파생 테이블 서브 쿼리의 to_field로 전달됩니다. 예는 bind_filters 사용 섹션을 참고하세요.

bind_filters를 사용할 때는 다음 사항에 유의하세요.
  • 런타임 필터는 기본 파생 테이블과 동일한 Explore에 조인된 뷰에 있어야 합니다.
  • 기본 파생 테이블은 영구 파생 테이블 (PDT)로 만들 수 없습니다.

explore_source 매개변수에는 bind_all_filters 하위 매개변수 또는 bind_filters 하위 매개변수가 포함될 수 있지만 둘 다 포함될 수는 없습니다.
bind_filters: {
  to_field: users.created_date
  from_field: user_dt.filter_date
}
bind_all_filters Explore 쿼리의 모든 필터를 기본 파생 테이블 서브 쿼리로 전달합니다. 이 매개변수를 설정하려면 네이티브 파생 테이블의 explore_sourcebind_all_filters: yes를 지정합니다. 예는 bind_filters 사용 섹션을 참고하세요.

bind_all_filters: yes를 사용할 때는 다음 사항에 유의하세요.
  • 런타임 필터는 기본 파생 테이블과 동일한 Explore에 조인된 뷰에 있어야 합니다.
  • 기본 파생 테이블은 PDT로 만들 수 없습니다.
  • 기본 파생 테이블은 기본 파생 테이블의 explore_source 매개변수에 지정된 Explore에만 조인할 수 있습니다. bind_all_filters는 Explore의 필터링된 필드를 기본 파생 테이블의 필드에 매핑해야 하기 때문입니다.
  • explore_source 파라미터에는 bind_all_filters 하위 파라미터 또는 bind_filters 하위 파라미터가 포함될 수 있지만 둘 다 포함될 수는 없습니다.
bind_all_filters: yes
column explore_source에 포함할 열을 지정합니다. field 하위 매개변수가 있습니다.
column: cust_id {
  field: orders.customer_id
}
derived_column 내부 열의 네임스페이스에 표현식이 있는 explore_source의 열을 지정합니다. 이 단계에서는 SQL 그룹화가 없으므로 집계 SQL 표현식은 작동하지 않습니다. 이 매개변수에서는 SQL 윈도우 함수가 매우 유용할 수 있습니다. sql 하위 매개변수가 있습니다.
derived_column: average_order {
  sql: order_amount / item_qty ;;
}
dev_filters 추가됨 21.12 Looker가 파생 테이블의 개발 버전에만 적용하는 필터를 지정합니다. 이는 LookML 개발자가 개발 모드에서 파생 테이블을 테스트할 때 유용합니다. dev_filters 매개변수를 사용하면 Looker가 더 작은 필터링된 테이블 버전을 빌드할 수 있으므로 LookML 개발자는 각 변경 후 전체 테이블이 빌드될 때까지 기다리지 않고 테이블을 반복하고 테스트할 수 있습니다. Looker는 dev_filters를 파생 테이블의 개발 버전에만 적용하며, 사용자가 쿼리하는 테이블의 프로덕션 버전에는 적용하지 않습니다. 개발 모드에서 파생 테이블을 사용하는 방법에 대한 자세한 내용은 Looker의 파생 테이블 문서 페이지를 참고하고, 예시는 이 페이지의 개발 모드용 필터 만들기 섹션을 참고하세요. dev_filters: [orders.created_date: "90 days", orders.products: "sweaters"]
expression_custom_filter explore_source 쿼리에서 맞춤 필터 표현식을 선택적으로 지정합니다. expression_custom_filter: ${orders.status} = "pending" ;;
filters 선택적으로 explore_source 쿼리에 필터를 추가합니다. 대괄호로 묶습니다. 필터링할 필드 이름을 view_name.field_name 형식을 사용하여 포함하고, 그 뒤에 : 및 필드를 필터링할 값(들)을 포함합니다. 필터는 기본 파생 테이블에서 생성된 SQL의 WHERE 절에 추가됩니다. filters: [products.department: "sweaters"]
limit 선택적으로 쿼리의 행 제한을 지정합니다. limit: 10
sorts 선택적으로 이 explore_source의 정렬을 지정합니다. 대괄호로 묶습니다. 정렬할 필드 이름을 view_name.field_name 형식을 사용하여 포함하고, 필드를 오름차순으로 정렬할지 내림차순으로 정렬할지를 나타내는 :asc 또는 desc를 차례로 포함합니다. 쉼표로 구분된 여러 필드 이름과 키워드 쌍을 추가하여 여러 필드를 기준으로 정렬할 수 있습니다. sorts: [products.brand: asc, products.name: asc]
timezone explore_source 쿼리의 시간대를 설정합니다. 영구적이지 않은 파생 테이블의 경우 시간대를 "query_timezone"로 설정하여 현재 실행 중인 쿼리의 시간대를 자동으로 사용합니다. 시간대를 지정하지 않으면 explore_source 쿼리는 시간대를 변환하지 않고 데이터베이스 시간대를 대신 사용합니다. 지원되는 시간대 목록은 timezone 값 페이지를 참고하세요.

IDE에서 timezone 매개변수를 입력하면 IDE에서 시간대 값을 자동 제안합니다. IDE는 빠른 도움말 패널에 지원되는 시간대 값 목록도 표시합니다.
timezone: "America/Los_Angeles"

예시

다음 정의는 기본 파생 테이블의 기본 예를 제공합니다.

user_order_facts 기본 파생 테이블을 만듭니다.

view: user_order_facts {
  derived_table: {
    explore_source: order_items {
      column: user_id {
        field: order_items.user_id
      }
      column: lifetime_number_of_orders {
        field: order_items.order_count
      }
      column: lifetime_customer_value {
        field: order_items.total_revenue
      }
    }
  }
  # Define the view's fields as desired
  dimension: user_id {
    hidden: yes
  }
  dimension: lifetime_number_of_orders {
    type: number
  }
  dimension: lifetime_customer_value {
    type: number
  }
}

필터를 추가하여 user_90_day_facts 기본 파생 테이블을 만들 수 있습니다.

view: user_90_day_facts {
  derived_table: {
    explore_source: order_items {
      column: user_id {
        field: order_items.user_id
      }
      column: number_of_orders_90_day {
        field: order_items.order_count
      }
      column: customer_value_90_day {
        field: order_items.total_revenue
      }
      filters: [order_items.created_date: "90 days"]
    }
  }
  # Add define view's fields as desired
  dimension: user_id {
    hidden: yes
  }
  dimension: number_of_orders_90_day {
    type: number
  }
  dimension: customer_value_90_day {
    type: number
  }
}

개발 모드용 필터 만들기

만드는 중인 기본 파생 테이블을 생성하는 데 시간이 오래 걸릴 때는 개발 모드에서 많은 변경사항을 테스트할 경우 시간이 오래 걸릴 수 있습니다. 이러한 경우에는 dev_filters를 사용하여 기본 파생 테이블의 개발 버전을 더 작게 만들 수 있습니다.

view: e_faa_pdt {
  derived_table: {
  ...
    datagroup_trigger: e_faa_shared_datagroup
    explore_source: flights {
      dev_filters: [flights.event_date: "90 days"]
      filters: [flights.event_date: "2 years", flights.airport_name: "Yucca Valley Airport"]
      column: id {}
      column: airport_name {}
      column: event_date {}
    }
  }
...
}

이 예시에는 지난 90일로 데이터를 필터링하는 dev_filters 매개변수와 지난 2년 및 Yucca Valley 공항으로 데이터를 필터링하는 filters 매개변수가 포함됩니다. dev_filters 매개변수는 모든 매개변수와 테이블의 개발 버전에 적용되도록 filters 매개변수와 함께 작동합니다. dev_filtersfilters이 모두 동일한 열에 필터를 지정하면 dev_filters이 테이블의 개발 버전에 우선합니다. 이 예시에서는 Yucca Valley 공항에서 지난 90일 동안의 데이터를 필터링한 테이블 개발 버전이 표시됩니다.

기본 파생 테이블에 dev_filters 매개변수가 있으면 개발 버전에 축약형 데이터 세트가 있으므로 개발 테이블을 프로덕션 버전으로 사용할 수 없습니다. 이 경우 테이블 개발을 완료한 후 변경사항을 배포하기 전에 dev_filters 매개변수를 주석 처리한 다음 개발 모드에서 테이블을 쿼리할 수 있습니다. 그러면 Looker에서 변경사항을 배포할 때 프로덕션에 사용할 수 있는 테이블의 전체 버전을 빌드합니다. 프로덕션에서 개발 테이블을 사용하는 방법에 대한 자세한 내용은 Looker의 파생 테이블 문서 페이지를 참고하세요.

반대의 경우도 마찬가지입니다. dev_filters 매개변수가 있는 기본 파생 테이블이 있고 개발 모드에서 이를 쿼리하는 경우 Looker는 프로덕션 테이블을 사용하여 개발 모드 쿼리에 응답할 수 있습니다. 테이블 정의를 변경한 다음 개발 모드에서 테이블을 쿼리하지 않는 한 이 문장은 참입니다. 이 경우 Looker는 쿼리에 응답하기 위해 개발 테이블을 빌드합니다.

기본 파생 테이블에 필터 전달

Explore에 기본 파생 테이블을 포함하면 Explore의 런타임 필터를 가져와 기본 파생 테이블 쿼리에 적용할 수 있습니다. 기본 파생 테이블의 explore_sourcebind_all_filters 또는 bind_filters 매개변수를 추가하면 됩니다.

Explore에서 기본 파생 테이블 서브 쿼리로 런타임 필터를 전달할 때 런타임 필터는 기본 파생 테이블과 동일한 Explore에 조인된 뷰에 있어야 합니다. 또한 기본 파생 테이블은 탐색의 런타임 필터를 통합하기 위해 런타임에 재생성되어야 하므로 기본 파생 테이블은 영구 파생 테이블 (PDT)일 수 없습니다.

bind_all_filters 사용

Explore에서 설정한 필터를 기본 파생 테이블의 서브 쿼리로 전달하는 가장 쉬운 방법은 기본 파생 테이블의 explore_source 파라미터에 bind_all_filters: yes를 지정하는 것입니다. 이 설정은 Explore에서 런타임에 적용된 모든 필터를 기본 파생 테이블의 서브 쿼리로 전달합니다.

bind_all_filters: yes이 있는 기본 파생 테이블은 기본 파생 테이블의 explore_source 매개변수에 지정된 동일한 Explore에 조인되어야 합니다. 기본 파생 테이블을 다른 Explore에서 사용하려는 경우에는 bind_filters 사용 섹션에서 설명한 것처럼 bind_filters 파라미터를 사용해야 합니다.

다음은 bind_all_filters: yes이 있는 기본 파생 테이블의 LookML입니다.


view: top_10_simple_item_names {
  view_label: "Top 10s"
  derived_table: {
    explore_source: order_items {
      column: total_sale_price {
        field: order_items.total_sale_price
      }
      column: item_name {
        field: products.item_name
      }
      derived_column: rank {
        sql: RANK() OVER (ORDER BY total_sale_price DESC) ;;
      }
      bind_all_filters: yes
      sorts: [order_items.total_sale_price: desc]
      timezone: "query_timezone"
      limit: 10
    }
  }
  dimension: item_name {
    group_label: "Simple Example"
  }
  dimension: rank {
    type: number
    group_label: "Simple Example"
  }
  dimension: item_name_ranked {
    group_label: "Simple Example"
    order_by_field: rank
    type: string
    sql: ${rank} || ') ' || ${item_name} ;;
  }
}

기본 파생 테이블의 뷰에서 explore_sourceorder_items입니다. 다음은 기본 파생 테이블이 Explore에 조인된 order_items Explore의 LookML입니다.

explore: order_items {
  ...
  join: top_10_simple_item_names {
    type: inner
    relationship: many_to_one
    sql_on: ${products.item_name} = ${top_10_simple_item_names.item_name} ;;
  }
}

이 예시를 실제로 확인하려면 [분석 블록] - 상위 X별 피벗 - bind_all_filters: yes 소개 커뮤니티 게시물을 참고하세요.

bind_filters 사용

explore_sourcebind_filters 하위 매개변수는 Explore 쿼리의 특정 필터를 기본 파생 테이블의 서브 쿼리로 전달합니다.

  • to_field는 기본 파생 테이블에서 필터가 실제로 적용되는 필드입니다. to_field은 기본 explore_source의 필드여야 합니다.
  • from_field는 사용자가 런타임에 필터를 지정할 경우, 그 필터를 가져올 Explore의 필드를 지정합니다.

런타임에 Explore의 from_field에 있는 필터는 기본 파생 테이블 서브 쿼리의 to_field로 전달됩니다.

다음 LookML은 bind_filters가 있는 기본 파생 테이블을 보여줍니다. 이 설정을 사용하면 Looker가 Explore의 filtered_lookml_dt.filter_date 필드에 적용된 필터를 가져와 기본 파생 테이블의 users.created_date 필드에 필터를 적용합니다.

derived_table: {
  explore_source: order_items {
    bind_filters: {
      to_field: users.created_date
      from_field: filtered_lookml_dt.filter_date
    . . .
    }
  }
}

고려사항

explore_source 매개변수를 하나만 사용

각 네이티브 파생 테이블은 하나의 explore_source 매개변수만 허용합니다. 후속 explore_source 매개변수는 LookML 유효성 검사 오류를 발생시키지 않지만 이전 explore_source 매개변수를 재정의합니다.

다른 뷰의 필드에서 열을 만들려면 먼저 동일한 Explore에서 다른 뷰를 조인합니다. 그런 다음 해당 Explore를 explore_source에 사용합니다.

include 문을 사용하여 참조 필드 사용 설정

기본 파생 테이블을 만들 때는 Explore의 정의가 포함된 파일을 포함해야 합니다. 이렇게 하려면 Explore 파일 만들기 문서에 설명된 대로 별도의 Explore 파일에 Explore를 정의하는 것이 좋습니다.

별도의 Explore 파일을 만드는 경우:

  • 기본 파생 테이블의 뷰 파일에는 탐색의 파일이 포함되어야 합니다. 예를 들면 다음과 같습니다.
    • include: "/explores/order_items.explore.lkml"
  • 탐색 파일에는 필요한 보기 파일이 포함되어야 합니다. 예를 들면 다음과 같습니다.
    • include: "/views/order_items.view.lkml"
    • include: "/views/users.view.lkml"
  • 모델에는 탐색의 파일이 포함되어야 합니다. 예를 들면 다음과 같습니다.
    • include: "/explores/order_items.explore.lkml"