conditionally_filter

사용

explore: explore_name {
  conditionally_filter: {
    filters: [field_name: "filter expression", field_name: "filter expression", ...]
    unless: [field_name, field_name, ...]
  }
}
계층 구조
conditionally_filter
기본값
없음

수락
필드 이름과 Looker 필터 표현식의 필터 사양 하나 이상과 unless 섹션의 필드 이름 목록 하나 이상

정의

conditionally_filter 파라미터를 사용하면 사용자가 정의한 두 번째 목록에서 하나 이상의 필터를 적용하는 경우 재정의할 수 있는 기본 필터 집합을 정의할 수 있습니다.

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

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

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

이 Explore에 속하지 않고 조인된 뷰에 속하는 측정기준 또는 측정값을 참조하려면 view_name.field_name를 사용하세요.

예시

다음 예시를 참조하세요.

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 필드를 참조합니다. 사용자가 Explore UI에서 주문 날짜를 설정하지 않는 한 두 필터가 모두 적용됩니다. 이 예에서는 여러 필터를 요구할 수 있음을 보여줍니다.

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

사용자가 주문 날짜 필터를 적용하지 않는 한 주문 ID 필터 (변경 가능한 기본값 '123')를 사용하도록 강제할 수도 있습니다.

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' 기본값)와 고객 도시 필터('Chicago' 기본값)를 사용하도록 강제할 수 있습니다.

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: time 측정기준이 있는 conditionally_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를 고려하세요.

Explore에 모든 사용자가 동일한 필터를 사용하도록 하고 사용자가 필터 값을 변경하지 못하도록 하려면 sql_always_where를 사용하세요.

변경할 수 없는 사용자별 필터를 원하는 경우 access_filter를 고려하세요.

각 사용자에게 고유하지만 삭제하거나 변경할 수 없는 필터가 Explore에 있도록 하려면 access_filter를 사용하세요.