用途
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 = 0 は 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"
}
}
知っておくべきこと
ディメンションに別のフィールドを参照する case パラメータが含まれている場合、その追加フィールドは、ディメンションが使用されているクエリの基盤となる SQL に追加されることがあります。参照されるフィールドがクエリのビジュアリゼーションに存在せず、ビジュアリゼーションが列を手動で並べ替えたテーブルグラフである場合、ダウンロードした一部の形式の列の順序が影響を受ける可能性があります。