ケース

用途

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 ステートメントが、関連付けられたラベルを割り当てます。
  • sql - sql パラメータは、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 に追加されることがあります。参照されるフィールドがクエリのビジュアリゼーションに存在せず、ビジュアリゼーションが列を手動で並べ替えたテーブルグラフである場合、ダウンロードした一部の形式の列の順序が影響を受ける可能性があります。