조건부_필터

용도

Explore: Explore_name {
conditionally_filter: {
filters: [field_name: "filterexpression", field_name: "filterexpression", ...]
다지: [field_name, },}}
계층 구조
conditionally_filter
기본값
없음

결제 가능
unless에 있는 하나 이상의 필드 이름 및 Looker 필터 표현식의 필터 사양과 하나 이상의 필드 이름 목록

정의

conditionally_filter 매개변수를 사용하면 관리자가 정의한 두 번째 목록에서 필터를 하나 이상 적용하는 경우 사용자가 재정의할 수 있는 기본 필터 세트를 정의할 수 있습니다.

이 매개변수는 일반적으로 사용자가 데이터베이스에서 실행하기에는 비용이 너무 많이 들 수 있는 매우 큰 쿼리를 실수로 생성하지 않도록 하는 데 사용됩니다. 예를 들어 사용자가 더 긴 기간을 명시적으로 요청하지 않은 경우 쿼리를 지난주로 제한하도록 강요할 수 있습니다.

conditionally_filter에 적용된 필터는 사용자가 쿼리를 실행한 후에 표시됩니다. 관리자가 설정된 기본 value을 사용자가 변경할 수 있지만 관리자가 unless 하위 매개변수에 지정된 필터를 하나 이상 적용하지 않는 한 필터를 완전히 삭제할 수 없습니다.

사용하는 필드 이름은 dimension 또는 measure의 이름일 수 있습니다.

이 탐색 분석이 아닌 조인된 뷰의 일부인 측정기준 또는 측정값을 참조하려면 view_name.field_name를 사용하세요.

Examples

다음 예시를 참조하세요.

explore: order {
  conditionally_filter: {
    filters: [id: "123", customer.id: "678,789"]
    unless: [date]
  }

  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

이 경우 id 필터는 order라는 Explore의 id 필드를 참조합니다. customer.id 필터는 customer라는 뷰에서 id 필드를 참조합니다. 사용자가 탐색 UI에서 주문 날짜를 설정하지 않는 한 두 필터가 모두 적용됩니다. 또한 이 예는 여러 필터를 요구할 수 있음을 보여줍니다.

지정한 기본값은 이러한 유형의 표현식을 허용할 수 있습니다.

사용자가 Order Date 필터를 적용하지 않는 경우 기본값인 '123'으로 Order ID 필터를 사용하도록 강제할 수 있습니다.

explore: order {
  conditionally_filter: {
    filters: [id: "123"]
    unless: [date]
  }
}

또는 사용자가 주문 날짜 또는 주문 시간 필터를 적용하지 않는 한 주문 ID 필터 (기본값은 '123' 또는 '234'로 변경 가능)를 사용하도록 안내합니다.

explore: order {
  conditionally_filter: {
    filters: [id: "123,234"]
    unless: [date, time]
  }
}

또는 주문 날짜 또는 고객 날짜 필터를 적용하지 않는 경우 사용자가 주문 ID 필터 (기본값: '123') 및 고객 도시 필터 (기본값: '시카고')를 사용하도록 안내합니다.

explore: order {
  conditionally_filter: {
    filters: [id: "123", customer.city: "Chicago"]
    unless: [date, customer.date]
  }

  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

일반 과제

conditionally_filter 사용 시 사용자는 모든 필터를 삭제할 수 없습니다.

conditionally_filter가 사용되는 경우 어떤 필터도 없이 쿼리를 실행할 수 없습니다. 사용자는 지정한 조건부 필터를 사용하거나 unless 목록에서 자신의 필터를 사용해야 합니다.

그룹의 측정기준이 type: timeconditionally_filter는 그룹의 다른 측정기준을 unless 하위 매개변수에 넣습니다.

conditionally_filter 내에 지정한 field측정기준 그룹의 일부인 시간 기반 측정기준인 경우 unless 하위 매개변수를 포함하지 않더라도 Looker는 해당 그룹의 다른 모든 측정기준이 unless 하위 매개변수가 적용된 것처럼 취급합니다.

다음 LookML 블록 두 개는 동일하게 해석됩니다. 여기서 conditionally_filterevent 측정기준 그룹에 속하는 시간 기반 측정기준 event_date에 적용됩니다. unless 조건은 지정되지 않지만, Looker는 event 그룹의 다른 측정기준을 unless 하위 매개변수로 지정된 것처럼 취급합니다.

LookML 블록 1:

explore: logs {
  # Make sure there is always a filter on event_date, event_week, event_month or event_year
  # Default to the last complete day of data
  conditionally_filter: {
    filters: [logs.event_date: "1 days ago for 1 day"]
  }

view: logs {
  # Combine the partition date filters and the time filters into a single field group.
  dimension_group: event {
    type: time
    timeframes: [date,week,month,year]
    sql: _PARTITIONTIME ;;
  }
}

LookML 블록 2:

explore: logs {
  # Make sure there is always a filter on event_date, event_week, event_month or event_year
  # Default to the last complete day of data
  conditionally_filter: {
    filters: [logs.event_date: "1 days ago for 1 day"]
    unless: [event_week, event_month, event_year]
  }

view: logs {
  # Combine the partition date filters and the time filters into a single field group.
  dimension_group: event {
    type: time
    timeframes: [date,week,month,year]
    sql: _PARTITIONTIME ;;
  }
}

두 번째 LookML 블록만 unless 하위 매개변수를 event 그룹의 다른 측정기준에 명시적으로 적용하더라도 Looker는 두 LookML 블록을 같은 방식으로 해석합니다.

알아두어야 할 사항

일부 사용자에게 conditionally_filter를 적용하는 메서드가 있습니다.

일부 사용자에 대해서만 조건부 필터를 적용하려면 모델 권한을 사용하면 됩니다. conditionally_filter을 사용하는 모델과 사용하지 않는 모델을 만들어야 합니다. 그런 다음 사용자별로 적절한 모델에 대한 액세스 권한을 부여할 수 있습니다.

unless 없이 conditionally_filter를 사용하려면 대신 always_filter를 사용하면 됩니다.

사용자가 무엇이든 상관없이 특정 필터 세트를 사용하도록 강제하되 기본값을 변경하도록 하려면 대신 always_filter를 사용하세요.

전혀 변경할 수 없는 필터를 원한다면 sql_always_where 사용을 고려해 보세요.

탐색에서 모든 사용자에게 동일한 필터를 적용하고 사용자가 필터 값을 변경하지 않도록 하려면 sql_always_where를 사용합니다.

변경할 수 없는 사용자별 필터를 원하는 경우 access_filter를 사용하는 것이 좋습니다.

탐색에 각 사용자별로 적용되지만 삭제하거나 변경할 수 없는 필터가 있으면 access_filter를 사용하세요.