Case

Supported in: Batch, 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<T>
  • optional Branches - Branches to evaluate before returning default value.
    List<Tuple<Expression<Boolean>, Expression<T>>>

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)]
milesOutput
20053Yes
10210No
34120Yes

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)]
valuedecimalOnedecimalTwodecimalThreeOutput
1111.112.22223333333.333111.1100
2111.112.22223333333.3332.2222
3111.112.22223333333.3333333333.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)]
valuedecimalOnedecimalTwodecimalThreeOutput
1111111111111111111111111111111111111.112222222222222222222222222222.2222222222333333333333333333.33333333333333333333null
2111111111111111111111111111111111111.112222222222222222222222222222.2222222222333333333333333333.33333333333333333333null
3111111111111111111111111111111111111.112222222222222222222222222222.2222222222333333333333333333.33333333333333333333333333333333333333.33333333333333333333
3111111111111111111111111111111111111.112222222222222222222222222222.2222222222100.33333333333333333333100.33333333333333333333
1111.112222222222222222222222222222.2222222222333333333333333333.33333333333333333333111.11000000000000000000