용도
dimension field name {
case: }s: {
when: {
sql: SQL 상태 ;;
label: "
계층 구조
case |
가능한 필드 유형
측정기준결제 가능
SQL 조건 및 문자열특수 규칙
알파벳순으로 값을 표시하려면 alpha_sort 매개변수를 사용하세요. |
정의
case
를 사용하면 케이스 로직으로 결과를 버킷화할 수 있습니다. 대신 원시 SQL CASE
문을 작성할 수 있지만 case
를 사용하면 Looker UI에서 사용자를 위한 드롭다운 메뉴가 생성됩니다. SQL CASE
문은 이러한 메뉴를 만들지 않습니다.
case
의 일반적인 형식은 다음과 같습니다.
dimension: status {
case: {
when: {
sql: condition ;;
label: "Label of Condition"
}
# possibly more when statements
else: "Label If No Condition Met"
}
}
이러한 매개변수는 다음과 같이 작동합니다.
when
: 라벨을 제공하려는 각 조건을 표현하고자 하는when
문을 원하는 만큼 사용할 수 있습니다.when
문은 나열된 첫 번째 문에서 나열된 마지막 문까지 순서대로 평가되며 true로 평가된 첫 번째when
문은 연결된 라벨을 할당합니다.sql
-sql
매개변수는 true 또는 false로 평가되는 SQL 조건을 허용합니다.label
- SQL 조건이 true인 경우 할당되는 라벨입니다. 할당된 라벨의 데이터 유형은string
입니다.case
문의 각label
값은 고유해야 합니다. 여러 SQL 조건에 동일한label
값을 사용하는 경우case
문의 마지막 SQL 조건에만label
값이 할당됩니다. 이 페이지의 예시를 참고하세요.else
: 조건이 충족되지 않을 경우 이 라벨이 사용됩니다.
full_suggestions
를 사용할 때 비즈니스 사용자에게case
측정기준에 대한 제안이 제한되지 않습니다.case
매개변수에 포함된 옵션은 모든 사용자에게 표시됩니다.
alpha_sort
를 사용하여 라벨의 정렬 순서 선택
일반적으로 case
값은 작성한 순서대로 표시됩니다. 알파벳순 정렬을 원하면 다음과 같이 alpha_sort: yes
를 사용하면 됩니다.
dimension: status {
alpha_sort: yes
case: { ... }
}
Examples
사람이 읽을 수 있는 여러 라벨을 여러 상태 번호에 할당합니다.
dimension: status {
case: {
when: {
sql: ${TABLE}.status = 0 ;;
label: "pending"
}
when: {
sql: ${TABLE}.status = 1 ;;
label: "complete"
}
when: {
sql: ${TABLE}.status = 2 ;;
label: "returned"
}
else: "unknown"
}
}
동일한 조건이 반복되고 다른 라벨로 평가되면 LookML은 true로 평가되는 첫 번째 조건을 사용합니다. 다음 예에서 ${TABLE}.status = 0
는 pending
가 먼저 평가되므로 returned
가 아닌 pending
로 평가됩니다.
dimension: status {
case: {
when: {
sql: ${TABLE}.status = 0 ;;
label: "pending"
}
when: {
sql: ${TABLE}.status = 1 ;;
label: "complete"
}
when: {
sql: ${TABLE}.status = 0 ;;
label: "returned"
}
else: "unknown"
}
}
여러 라벨이 동일한 라벨로 평가될 경우 LookML은 첫 번째 조건만 사용합니다. 다음 예에서 Looker는 ${TABLE}.status = 2
대신 ${TABLE}.status = 0
를 사용하여 pending
로 평가되는 SQL CASE
문을 생성합니다. ${TABLE}.status = 2
인 경우 CASE
문은 unknown
로 평가됩니다.
view: orders
dimension: status {
case: {
when: {
sql: ${TABLE}.status = 0 ;;
label: "pending"
}
when: {
sql: ${TABLE}.status = 1 ;;
label: "complete"
}
when: {
sql: ${TABLE}.status = 2 ;;
label: "pending"
}
else: "unknown"
}
}