케이스

사용

view: view_name {
  dimension: field_name {
    case: {
      when: {
        sql: SQL condition ;;
        label: "value"
      }
      # Possibly more when statements
      else: "value"
    }
    alpha_sort:  yes
  }
}
계층 구조
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 문이 연결된 라벨을 할당합니다.
  • sqlsql 매개변수는 true 또는 false로 평가되는 SQL 조건을 허용합니다.
  • label - SQL 조건이 true인 경우 할당되는 라벨입니다. 할당된 라벨의 데이터 유형은 string입니다. case 문의 각 label 값은 고유해야 합니다. 여러 SQL 조건에 동일한 label 값을 사용하는 경우 case 문에 있는 마지막 SQL 조건에만 label 값이 할당됩니다. 이 페이지의 를 참고하세요.
  • else: 조건이 충족되지 않는 경우 사용되는 라벨입니다.

alpha_sort로 라벨의 정렬 순서 선택

일반적으로 case 값은 작성한 순서대로 표시됩니다. 알파벳순으로 정렬하려면 다음과 같이 alpha_sort: yes을 사용하면 됩니다.

dimension: status {
  alpha_sort: yes
  case: { ... }
}

예시

여러 사람이 읽을 수 있는 라벨을 다양한 상태 번호에 할당합니다.

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로 평가되는 첫 번째 조건을 사용합니다. 다음 예시에서는 pending 조건이 먼저 평가되므로 ${TABLE}.status = 0returned가 아닌 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"
  }
}

알아 두어야 할 사항

측정기준에 다른 필드를 참조하는 case 매개변수가 포함된 경우 해당 추가 필드가 측정기준이 사용되는 쿼리의 기본 SQL에 추가될 수 있습니다. 참조된 필드가 쿼리의 시각화에 없으며 시각화가 열이 수동으로 재정렬된 표 차트인 경우 다운로드된 일부 형식의 열 순서가 영향을 받을 수 있습니다.