filters(필드)

이 페이지에서는 측정항목에 포함된 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: count
  • type: count_distinct
  • type: sum
  • type: 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"]
}