用量
。
层次结构
case |
可能的字段类型
维度接受
SQL 条件和字符串特殊规则
如果您希望按字母顺序排列值,请使用 alpha_sort 参数 |
定义
case
可让您使用大小写逻辑对结果进行分桶。虽然您可以编写原始 SQL CASE
语句,但使用 case
可在 Looker 界面中为您的用户创建下拉菜单。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 的条件。在以下示例中,${TABLE}.status = 0
的求值结果为 pending
,而不是 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 = 0
而不是 ${TABLE}.status = 2
来生成计算结果为 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"
}
}