용도
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: time
인 conditionally_filter
는 그룹의 다른 측정기준을 unless
하위 매개변수에 넣습니다.
conditionally_filter
내에 지정한 field
가 측정기준 그룹의 일부인 시간 기반 측정기준인 경우 unless
하위 매개변수를 포함하지 않더라도 Looker는 해당 그룹의 다른 모든 측정기준이 unless
하위 매개변수가 적용된 것처럼 취급합니다.
다음 LookML 블록 두 개는 동일하게 해석됩니다. 여기서 conditionally_filter
는 event
측정기준 그룹에 속하는 시간 기반 측정기준 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
를 사용하세요.