跳转至

Case

Supported in: Batch, Faster, Streaming

Choose between different branches based on conditions.

Expression categories: Popular

Declared arguments

  • Default: This value is chosen if all branches evaluate to false.
    Expression\
  • optional Branches: Branches to evaluate before returning default value.
    List\, Expression\\>>

Type variable bounds: T accepts AnyType

Output type: T

Examples

Example 1: Base case

Argument values:

  • Default: Yes
  • Branches: [(
    lessThan(
     left: miles,
     right: 15000,
    ), No)]
miles Output
20053 Yes
10210 No
34120 Yes

Example 2: Edge case

Description: When multiple branches output decimals of differing types, we widen the type to fit all.

Argument values:

  • Default: decimalThree
  • Branches: [(
    equals(
     left: value,
     right: 1,
    ), decimalOne), (
    equals(
     left: value,
     right: 2,
    ), decimalTwo)]
value decimalOne decimalTwo decimalThree Output
1 111.11 2.2222 3333333.333 111.1100
2 111.11 2.2222 3333333.333 2.2222
3 111.11 2.2222 3333333.333 3333333.3330

Example 3: Edge case

Description: When the wider type is too large, we truncate the type and overflows become null.

Argument values:

  • Default: decimalThree
  • Branches: [(
    equals(
     left: value,
     right: 1,
    ), decimalOne), (
    equals(
     left: value,
     right: 2,
    ), decimalTwo)]
value decimalOne decimalTwo decimalThree Output
1 111111111111111111111111111111111111.11 2222222222222222222222222222.2222222222 333333333333333333.33333333333333333333 null
2 111111111111111111111111111111111111.11 2222222222222222222222222222.2222222222 333333333333333333.33333333333333333333 null
3 111111111111111111111111111111111111.11 2222222222222222222222222222.2222222222 333333333333333333.33333333333333333333 333333333333333333.33333333333333333333
3 111111111111111111111111111111111111.11 2222222222222222222222222222.2222222222 100.33333333333333333333 100.33333333333333333333
1 111.11 2222222222222222222222222222.2222222222 333333333333333333.33333333333333333333 111.11000000000000000000


中文翻译

Case

支持:批处理(Batch)、快速处理(Faster)、流处理(Streaming)

根据条件在不同分支之间进行选择。

表达式类别: 常用

声明参数

  • 默认值(Default): 当所有分支条件均评估为 false 时选择此值。
    表达式\
  • 可选 分支(Branches): 在返回默认值之前评估的分支。
    列表\<元组\<表达式\<布尔值>, 表达式\>>

类型变量约束: T 接受任意类型(AnyType)

输出类型: T

示例

示例 1:基本用例

参数值:

  • 默认值: Yes
  • 分支: [(
    lessThan(
     left: miles,
     right: 15000,
    ), No)]
miles 输出
20053 Yes
10210 No
34120 Yes

示例 2:边界情况

描述: 当多个分支输出不同类型的小数时,我们会扩展类型以容纳所有值。

参数值:

  • 默认值: decimalThree
  • 分支: [(
    equals(
     left: value,
     right: 1,
    ), decimalOne), (
    equals(
     left: value,
     right: 2,
    ), decimalTwo)]
value decimalOne decimalTwo decimalThree 输出
1 111.11 2.2222 3333333.333 111.1100
2 111.11 2.2222 3333333.333 2.2222
3 111.11 2.2222 3333333.333 3333333.3330

示例 3:边界情况

描述: 当扩展后的类型过大时,我们会截断类型,溢出部分变为 null。

参数值:

  • 默认值: decimalThree
  • 分支: [(
    equals(
     left: value,
     right: 1,
    ), decimalOne), (
    equals(
     left: value,
     right: 2,
    ), decimalTwo)]
value decimalOne decimalTwo decimalThree 输出
1 111111111111111111111111111111111111.11 2222222222222222222222222222.2222222222 333333333333333333.33333333333333333333 null
2 111111111111111111111111111111111111.11 2222222222222222222222222222.2222222222 333333333333333333.33333333333333333333 null
3 111111111111111111111111111111111111.11 2222222222222222222222222222.2222222222 333333333333333333.33333333333333333333 333333333333333333.33333333333333333333
3 111111111111111111111111111111111111.11 2222222222222222222222222222.2222222222 100.33333333333333333333 100.33333333333333333333
1 111.11 2222222222222222222222222222.2222222222 333333333333333333.33333333333333333333 111.11000000000000000000