이 페이지에서는 측정항목에 포함된
filters매개변수를 참조합니다.
filters는explore_source매개변수 문서 페이지에 설명된 기본 파생 테이블의 일부로도 사용할 수 있습니다.
filters는 대시보드 매개변수 문서 페이지에 설명된 대로 대시보드의 일부로도 사용할 수 있습니다.
filters는 대시보드 요소의 일부로도 사용할 수 있습니다. 열 차트 요소 문서 페이지에 사용 사례의 대표적인 예가 나와 있습니다.
사용
view: view_name {
measure: field_name {
filters: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
}
}
|
계층 구조
filters |
가능한 필드 유형
측정
수락
측정기준 이름과 해당 Looker 필터 표현식의 집합
|
정의
filters는 측정값 계산에 적용되는 필터 표현식의 선택적 목록입니다. 집계를 실행하는 다음 측정 유형에서만 작동합니다.
type: counttype: count_distincttype: sumtype: average
필터의 문법은 다음과 같습니다.
filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]
유효한 필터 표현식을 작성하는 방법에 대한 자세한 내용은 Looker의 필터 표기법을 참고하세요. 다음 예와 같이 전체 필터 표현식을 따옴표로 묶습니다.
filters를 Liquid 매개변수 및 템플릿 필터와 함께 사용하여 대시보드 또는 Look의 사용자 입력에 따라 동적으로 변경될 수 있는 필터 값을 사용하여 동적 필터링된 측정값을 만들 수도 있습니다. 이 방식을 사용하면 사용자가 전역 WHERE 절에서 전체 쿼리를 필터링하지 않고 특정 측정에만 적용되는 필터 값을 선택할 수 있습니다. 자세한 내용은 이 페이지 뒷부분의 동적 필터링된 측정값 만들기 섹션을 참고하세요.
예시
측정항목에 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 측정기준을 기준으로 필터링
또 다른 예로 정규 직원 또는 계약직 직원의 각 행이 포함된 데이터를 생각해 보겠습니다. yesno 유형의 is_contractor 필드가 있으며, 이 필드에는 해당 사용자가 계약자인 경우 yes이 포함됩니다. 이 측정값은 계약업체의 행만 집계합니다.
measure: contractor_count {
type: count
filters: [is_contractor: "yes"]
}
여러 필터 값 추가
다음 예에서는 filters 표현식에 여러 값이 포함되어 있습니다. 이 측정항목은 state 필드의 다음 네 가지 값 중 하나와 일치하는 모든 행을 집계합니다.
measure: customers_by_state {
type: count
filters: [state: "California, Nevada, Washington, Oregon"]
}
NULL 값 필터링
이 예에서 측정항목은 지난 7일 동안 생성된 고유 ID를 집계하고 NULL이 아닌 user.email_address 필드의 값을 포함합니다.
measure: this_week_count_with_email {
type: count_distinct
sql: ${TABLE}.id ;;
filters: [created_date: "7 days", user.email_address: "-NULL"]
}
user.email_address 필드는 string 유형이므로 "-NULL" 문법이 사용됩니다. 자세한 내용은 Looker 필터 표현식 문서 페이지를 참고하세요.
숫자 필터 조건 추가
이 예시에서는 필터에 숫자 값이 지정됩니다. 이 측정항목은 price이 100을 초과하는 주문만 추가합니다.
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
AND를 사용하여 조건 결합
이 예에서 측정항목은 AND 연산자와 함께 필터 표현식을 사용하여 18~25세 고객의 총 주문을 계산합니다.
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
쉼표를 사용하여 조건 결합
이 예에서 측정항목은 , 연산자와 함께 필터 표현식을 사용하여 25세 미만 또는 65세 이상인 고객의 총 주문 수를 계산합니다.
measure: sales_less_25_or_greater_65 {
type: sum
filters: [customers.age: "<25, >65"]
sql: ${orders.price} ;;
}
동적 필터 적용 측정 만들기
이 예에서 필터를 사용하면 사용자가 선택한 상태로 필터링된 주문 수를 Look 또는 대시보드 필터에서 확인할 수 있습니다.
먼저 사용자가 값을 선택할 수 있는 필터 전용 필드를 만듭니다.
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"]
}