case

용도

view: view_name {
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 = 0pending가 먼저 평가되므로 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"
  }
}