이 페이지에서는 측정값의 일부인
filters
매개변수를 설명합니다.
filters
는explore_source
매개변수 문서 페이지에 설명된 네이티브 파생 테이블의 일부로 사용할 수도 있습니다.
filters
은 대시보드 매개변수 문서 페이지에 설명된 대로 대시보드의 일부로 사용할 수도 있습니다.
filters
은 대시보드 요소의 일부로 사용할 수도 있습니다. 이에 관한 대표적인 예는 열 차트 요소 문서 페이지에 나와 있습니다.
용도
measure: field_name {
필터: [dimension_name: "필터 표현식", dimension_name: "필터 표현식", ... ]
}
}
계층 구조
filters |
가능한 필드 유형
측정결제 가능
측정기준 이름 및 상응하는 Looker 필터 표현식 세트 |
정의
filters
는 측정값 계산에 적용되는 필터 표현식 목록(선택사항)입니다. 집계를 실행하는 다음 측정 유형에서만 작동합니다.
type: count
type: count_distinct
type: sum
type: average
필터 구문은 다음과 같습니다.
filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]
유효한 필터 표현식을 작성하는 방법에 대한 자세한 내용은 Looker 필터 표기법을 참고하세요. 다음 예와 같이 전체 필터 표현식을 따옴표로 묶습니다.
filters
를 유동 매개변수 및 템플릿 필터와 함께 사용하면 대시보드 또는 Look의 사용자 입력에 따라 동적으로 변경될 수 있는 필터 값으로 동적 필터링 측정값을 만들 수 있습니다. 이 접근 방식을 사용하면 사용자가 전체 WHERE
절에서 전체 쿼리를 필터링하지 않고 특정 측정에만 적용되는 필터 값을 선택할 수 있습니다. 이 페이지의 뒷부분에 나오는 동적 필터링 측정 만들기 섹션을 참조하세요.
Examples
filters
를 사용하여 측정하는 방법은 다양합니다. 아래는 일반적인 사용 사례를 위한 몇 가지 솔루션의 예입니다.
여러 필드에서 필터링
이 예에서 측정값은 지난 7일 동안 생성되었고 계정이 사용 중지된 사용자가 아닌 고유 ID를 집계합니다. 이 예에서는 하나의 입력란에 여러 개의 필터를 추가하는 방법도 보여줍니다. 각 필터 표현식에는 완전한 자체 filters
매개변수가 필요합니다.
measure: this_week_count {
type: count_distinct
sql: ${TABLE}.id ;;
filters: [created_date: "7 days", user.status: "-disabled"]
# Reference fields from other joined views with view_name.field_name syntax
# Minus sign means "not" in this case, but check notation docs for details
}
yesno
측정기준 필터링
또 다른 예로 1인당 한 행(일반 직원 또는 계약직)이 포함된 데이터를 생각해 보세요. yesno
유형의 is_contractor
필드가 있으며 여기에 계약업체인 경우 yes
가 포함됩니다. 이 값은 계약업체의 행만 계산합니다.
measure: contractor_count {
type: count
filters: [is_contractor: "yes"]
}
여러 필터 값 추가
다음 예에서 filters
표현식에는 여러 값이 포함되어 있습니다. 측정값은 state
필드의 4개 값 중 하나와 일치하는 모든 행을 집계합니다.
measure: customers_by_state {
type: count
filters: [state: "California, Nevada, Washington, Oregon"]
}
숫자 필터 조건 추가
이 예에서는 필터에 숫자 값이 부여됩니다. 다음과 같이 price
가 100을 초과하는 주문만 추가합니다.
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
고급 필터 구문 사용
이 예에서 필터에 숫자 값의 범위가 부여됩니다. 이 측정은 만 18~25세 연령대 고객의 총 주문 수를 나타냅니다.
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
동적 필터링된 측정 만들기
이 예에서 필터는 사용자가 보기 또는 대시보드 필터에서 선택한 상태별로 필터링된 주문 수를 확인할 수 있습니다.
먼저 사용자가 값을 선택할 수 있는 필터 전용 필드를 만듭니다.
filter: status_filter {
type: string
suggest_dimension: status
}
다음으로 템플릿 필터를 활용하여 이전 필터 전용 필드에서 사용자 선택을 캡처하는 숨겨진 측정기준을 만듭니다. 이 측정기준은 필터 필드에서 값이 선택될 때마다 yes를 반환합니다.
dimension: status_satisfies_filter {
type: yesno
hidden: yes
sql: {% condition status_filter %} ${status} {% endcondition %} ;;
}
마지막으로 type: yesno
측정기준을 필터링하는 측정을 만듭니다.
measure: count_dynamic_status {
type: count
filters: [status_satisfies_filter: "yes"]
}
사용자가 필터 전용 필드의 값을 선택하지 않으면 SQL이 기본값인 1=1로 설정되어 측정값에 영향을 주지 않습니다.
일반 과제
type: number
단위로 filters
를 사용하지 않습니다.
많은 사용자가 다음과 같이 type: number
의 측정값으로 filters
를 사용하려고 합니다.
# Will NOT work
measure: total_food_profit {
type: number
sql: ${total_revenue} - ${total_cost} ;;
filters: [segment: "food"]
}
measure: total_revenue {
type: sum
sql: ${revenue} ;;
}
measure: total_cost {
type: sum
sql: ${cost} ;;
}
대신 다음과 같이 type: number
측정값을 구성하는 개별 측정값에 filters
매개변수를 적용합니다.
# Will work
measure: total_food_profit {
type: number
sql: ${total_food_revenue} - ${total_food_cost} ;;
}
measure: total_food_revenue {
type: sum
sql: ${revenue} ;;
filters: [segment: "food"]
}
measure: total_food_cost {
type: sum
sql: ${cost} ;;
filters: [segment: "food"]
}