case

使用状況

view: view_name {
dimension: field_name {
case:
when: [
sql: SQL 条件 ;;
}
階層
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: { ... }
}

人が読める形式のラベルを複数のステータス番号に割り当てる:

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"
  }
}