# switch

> For the complete documentation index, see [llms.txt](https://docs.redpanda.com/llms.txt). Component-specific: [cloud-data-platform-full.txt](https://docs.redpanda.com/cloud-data-platform-full.txt)

---
title: switch
latest-operator-version: v26.1.4
latest-console-tag: v3.7.3
latest-connect-version: 4.93.0
latest-redpanda-tag: v26.1.9
docname: connect/components/scanners/switch
page-component-name: cloud-data-platform
page-version: master
page-component-version: master
page-component-title: Cloud
page-relative-src-path: connect/components/scanners/switch.adoc
page-edit-url: https://github.com/redpanda-data/cloud-docs/edit/main/modules/develop/pages/connect/components/scanners/switch.adoc
page-git-created-date: "2024-09-09"
page-git-modified-date: "2026-05-26"
---

<!-- Source: https://docs.redpanda.com/cloud-data-platform/develop/connect/components/scanners/switch.md -->

**Type:** Scanner ▼

[Scanner](https://docs.redpanda.com/cloud-data-platform/develop/connect/components/scanners/switch/)[Output](https://docs.redpanda.com/cloud-data-platform/develop/connect/components/outputs/switch/)[Processor](https://docs.redpanda.com/cloud-data-platform/develop/connect/components/processors/switch/)

**Available in:** Cloud, [Self-Managed](https://docs.redpanda.com/connect/components/scanners/switch/%20%22View%20the%20Self-Managed%20version%20of%20this%20component%22)

Select a child scanner dynamically for source data based on factors such as the filename.

```yml
# Config fields, showing default values
switch: [] # No default (required)
```

This scanner outlines a list of potential child scanner candidates to be chosen, and for each source of data the first candidate to pass will be selected. A candidate without any conditions acts as a catch-all and will pass for every source, it is recommended to always have a catch-all scanner at the end of your list. If a given source of data does not pass a candidate an error is returned and the data is rejected.

## [](#fields)Fields

### [](#re_match_name)`re_match_name`

A regular expression to test against the name of each source of data fed into the scanner (filename or equivalent). If this pattern matches the child scanner is selected.

**Type**: `string`

### [](#scanner)`scanner`

The scanner to activate if this candidate passes.

**Type**: `scanner`

## [](#examples)Examples

### [](#switch-based-on-file-name)Switch based on file name

In this example a file input chooses a scanner based on the extension of each file

```yaml
input:
  file:
    paths: [ ./data/* ]
    scanner:
      switch:
        - re_match_name: '\.avro$'
          scanner: { avro: {} }

        - re_match_name: '\.csv$'
          scanner: { csv: {} }

        - re_match_name: '\.csv.gz$'
          scanner:
            decompress:
              algorithm: gzip
              into:
                csv: {}

        - re_match_name: '\.tar$'
          scanner: { tar: {} }

        - re_match_name: '\.tar.gz$'
          scanner:
            decompress:
              algorithm: gzip
              into:
                tar: {}

        - scanner: { to_the_end: {} }
```