사용
explore: explore_name {
sql_always_having: ${count} >= 100 ;;
}
|
계층 구조
sql_always_having |
기본값
없음
수락
측정항목 이름 및/또는 SQL 열 이름을 사용하는 SQL HAVING 조건
특별 규칙
Explore의 일부가 아닌 조인된 뷰의 일부인 SQL 열 이름을 sql_always_having에서 참조하는 경우 always_join 매개변수를 사용하거나 필드 이름을 대신 참조하는 것이 중요합니다.
|
정의
sql_always_having를 사용하면 사용자가 변경할 수 없는 쿼리 제한을 적용할 수 있습니다. 이 제한사항은 sql_always_having가 사용되는 Explore의 모든 쿼리에 대해 Looker가 생성하는 기본 SQL의 HAVING 절에 삽입됩니다. 이러한 제한사항은 실제 사용자가 실행하는 쿼리 외에도 대시보드, 예약된 Look, 해당 Explore를 사용하는 삽입된 정보에 적용됩니다.
조건은 데이터베이스의 실제 테이블 및 열 이름을 사용하여 순수 SQL로 작성할 수 있습니다. 다음과 같은 Looker 참조도 사용할 수 있습니다.
${view_name.SQL_TABLE_NAME}: 다른 Looker 뷰 또는 파생 테이블을 참조합니다. 이 참조의SQL_TABLE_NAME은 리터럴 문자열입니다. 아무 것도 바꿀 필요가 없습니다.- Looker 필드를 참조하는
${view_name.field_name}이 방법을 사용하면 Looker가 필요한 조인을 자동으로 포함할 수 있으므로 SQL 열을 직접 참조하는 것보다 낫습니다.
사용자가 만든 쿼리의 기본 SQL을 확인하지 않는 한 sql_always_having 조건은 사용자에게 표시되지 않습니다.
예시
사용자가 주문이 100개 미만인 그룹을 볼 수 없도록 합니다.
# Using Looker references
explore: order {
sql_always_having: ${count} >= 100 ;;
}
# Using raw SQL
explore: order {
sql_always_having: COUNT(*) >= 100 ;;
}
수입이 1,000달러 미만인 그룹을 사용자가 보지 못하도록 합니다.
explore: customer {
sql_always_having: ${total_revenue} >= 1000 ;;
}
사용자가 고객 수가 100명 미만인 그룹을 보지 못하도록 방지합니다.
explore: order {
sql_always_having: ${customer.count} >= 100 ;;
join: customer {
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
일반 과제
원시 SQL을 사용하는 경우 always_join을 사용해야 할 수 있습니다.
Explore에 속하지 않고 조인된 뷰에 속하는 SQL 열 이름을 sql_always_having에서 참조하는 경우 always_join 매개변수를 사용하는 것이 중요합니다. 다음 예를 참조하세요.
explore: order {
sql_always_having: SUM(customer.visits) >= 100 ;;
join: customer {
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
이 경우 sql_always_having는 order Explore 대신 조인된 customer 뷰의 열을 참조합니다. sql_always_having는 모든 쿼리에 적용되므로 customer도 모든 쿼리에 조인해야 합니다.
Looker는 쿼리에 대한 SQL을 생성할 때 가능한 가장 깔끔한 SQL을 만들려고 시도하며 사용자가 선택한 필드에 필요한 조인만 사용합니다. 이 경우 사용자가 고객 필드를 선택한 경우에만 Looker가 customer에 조인합니다. always_join를 사용하면 어떤 경우에도 조인이 강제로 발생하도록 할 수 있습니다.
sql_always_having: SUM(customer.visits) >= 100 대신 sql_always_having: ${customer.total_visits} >= 100를 사용하면 Looker가 always_join를 사용하지 않아도 customer 조인을 만들 수 있습니다. 따라서 가능한 경우 원시 SQL 참조 대신 Looker 필드 참조를 사용하는 것이 좋습니다.
탐색 분석당 하나의 sql_always_having만 사용
explore 정의에는 sql_always_having가 하나만 있어야 합니다. 필요에 따라 AND 및 OR를 사용하여 원하는 동작을 단일 sql_always_having에 넣습니다.
알아 두어야 할 사항
SQL WHERE 절에 대한 유사한 매개변수가 있습니다.
sql_always_having와 매우 유사한 매개변수(sql_always_where)가 있습니다. 이 매개변수는 동일한 방식으로 작동하지만 HAVING 절 대신 WHERE 절에 조건을 적용합니다.
사용자가 변경할 수는 있지만 삭제할 수는 없는 필터를 원하는 경우 always_filter를 고려하세요.
사용자가 특정 필터 집합을 사용하도록 강제하되 기본값을 변경할 수 있도록 하려면 always_filter를 대신 사용하세요.
변경할 수 없는 사용자별 필터를 원하는 경우 access_filter를 고려하세요.
각 사용자에게 고유하고 어떤 방식으로도 변경할 수 없는 필터가 Explore에 있도록 하려면 access_filter를 사용하면 됩니다.