# Switch-Case

This step implements switch/case statements found in popular programming languages like Java.

The PDI implementation routes an incoming row to a **target step** based on a comparison **value** in a specified field.

### Options

The Switch / Case step includes the following options:

| Option                             | Description                                                                                                                                                                                                              |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Step name**                      | Specify the unique name of the Switch / Case step on the canvas. You can customize the name or leave it as the default.                                                                                                  |
| **Field name to switch**           | Specify the field name that contains the value used as the basis for routing. Values are specified in the **Case values** table.                                                                                         |
| **Use string contains comparison** | If selected, the comparison is true if the **Value** is found anywhere in the field being tested. If cleared, the **Value** must exactly match the field.                                                                |
| **Case value data type**           | Specify the data type of the values listed in the **Case values** table.                                                                                                                                                 |
| **Case value conversion mask**     | Specify the conversion mask for values listed in **Case values** (numeric and date values).                                                                                                                              |
| **Case value decimal symbol**      | Specify the decimal symbol for values listed in **Case values** (numeric values).                                                                                                                                        |
| **Case value grouping symbol**     | Specify the grouping symbol for values listed in **Case values** (numeric values).                                                                                                                                       |
| **Case values**                    | In the table, for each row, specify a **Value** and **Target step** pair. You can specify the same **Target step** in more than one row. To specify a null value, leave the **Value** blank and enter a **Target step**. |
| **Default target step**            | Specify the target step to receive unmatched rows.                                                                                                                                                                       |

### Example

A sample transformation demonstrating the capabilities of this step is available in the `data-integration/samples` folder included with the Pentaho distribution package.

```
data-integration/samples/transformations/files/Switch-Case - basic sample.ktr
```

### Metadata injection support

This step supports metadata injection. You can use it with [ETL metadata injection](https://docs.pentaho.com/pdia-data-integration/pdi-transformation-steps-reference-overview/etl-metadata-injection) to pass metadata to your transformation at runtime.
