filters(필드)

이 페이지에서는 측정항목에 포함된 filters 매개변수를 참조합니다.

filtersexplore_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의 필터 표기법을 참고하세요. 다음 예와 같이 전체 필터 표현식을 따옴표로 묶습니다.

filtersLiquid 매개변수템플릿 필터와 함께 사용하여 대시보드 또는 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"]
}