用法
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 界面中为用户创建一个下拉菜单。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语句到最后一个列出的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 的第一个条件。在以下示例中,${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 来生成 SQL CASE 语句,该语句的计算结果为 pending。当值为 ${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 中可能会添加该额外字段。如果引用的字段未显示在查询的可视化图表中,并且该可视化图表是手动重新排列列的表格图表,则某些下载格式中的列顺序可能会受到影响。