switch - Amazon QuickSight

switch

switch 在一组文本标签和 return-expression 配对中,将 condition-expression 与文本标签进行比较。然后,它返回与第一个等于 condition-expression 的文本标签相对应的 return-expression。如果没有等于 condition-expression 的标签,则 switch 返回 default-expression。每个 return-expressiondefault-expression 必须具有相同的数据类型。

语法

switch(condition-expression, label-1, return-expression-1 [, label-n, return-expression-n ...], default-expression)

Arguments

switch 需要一个或多个 if/then 表达式对,else 参数只需要一个表达式。

condition-expression

要与标签文本进行比较的表达式。它可以是字段名称(如 address)、文本值(如“Unknown”)或其他函数(如 toString(salesAmount))。

label

要与 condition-expression 参数进行比较的文本,所有文本的数据类型都必须与 condition-expression 参数相同。switch 最多可接受 5000 个标签。

return-expression

其标签的值等于 condition-expression 的值时返回的表达式。它可以是字段名称(如 address)、文本值(如“Unknown”)或其他函数(如 toString(salesAmount))。所有 return-expression 参数必须与 default-expression 具有相同的数据类型。

default-expression

任何标签参数的值都不等于 condition-expression 的值时返回的表达式。它可以是字段名称(如 address)、文本值(如“Unknown”)或其他函数(如 toString(salesAmount))。default-expression 必须与所有 return-expression 参数具有相同的数据类型。

返回类型

switch 返回与 return-expression 中的值具有相同数据类型的值。return-expressiondefault-expression 返回的所有数据都必须是相同的数据类型或转换为相同的数据类型。

一般示例

以下示例返回输入区域名称的 AWS 区域 代码。

switch(region_name, "US East (N. Virginia)", "us-east-1", "Europe (Ireland)", "eu-west-1", "US West (N. California)", "us-west-1", "other regions")

以下是给定的字段值。

"US East (N. Virginia)" "US West (N. California)" "Asia Pacific (Tokyo)"

对于这些字段值,将返回以下值。

"us-east-1" "us-west-1" "other regions"

使用 switch 替换 ifelse

以下 ifelse 用例等同于前面的示例,当 ifelse 评估一个字段的值是否等于不同的文本值时,改用 switch 是更好的选择。

ifelse(region_name = "US East (N. Virginia)", "us-east-1", region_name = "Europe (Ireland)", "eu-west-1", region_name = "US West (N. California)", "us-west-1", "other regions")

表达式作为返回值

以下示例在 return-expressions 中使用表达式:

switch({origin_city_name}, "Albany, NY", {arr_delay} + 20, "Alexandria, LA", {arr_delay} - 10, "New York, NY", {arr_delay} * 2, {arr_delay})

前面的示例更改了从特定城市起飞的每个航班的预期延误时间。

函数示例结果的图像,以表格形式显示。