> ## Documentation Index
> Fetch the complete documentation index at: https://docs.maia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Split field

export const ComponentMetadata = ({warehouses, unsupportedWarehouses = [], componentType, connectionInputs, connectionOutputs}) => {
  const allWarehouses = [...warehouses.map(w => ({
    name: w,
    supported: true
  })), ...unsupportedWarehouses.map(w => ({
    name: w,
    supported: false
  }))];
  return <div style={{
    background: 'var(--colors-background-light, #f9fafb)',
    border: '1px solid var(--colors-border-default, #e5e7eb)',
    borderRadius: '12px',
    padding: '20px 28px',
    marginBottom: '28px',
    boxShadow: '0 1px 4px rgba(0,0,0,0.10)'
  }}>
      <table style={{
    width: '100%',
    borderCollapse: 'collapse'
  }}>
        <tbody>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle',
    width: '180px'
  }}>Project Availability</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>
              <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '8px'
  }}>
                {allWarehouses.map((w, i) => <span key={i} style={{
    background: w.supported ? '#dcfce7' : '#fee2e2',
    color: w.supported ? '#15803d' : '#b91c1c',
    border: `1px solid ${w.supported ? '#bbf7d0' : '#fca5a5'}`,
    borderRadius: '9999px',
    padding: '3px 12px',
    fontSize: '0.85rem',
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
                    {w.name} {w.supported ? '✅' : '❌'}
                  </span>)}
              </div>
            </td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Component Type</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{componentType}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Inputs</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{connectionInputs}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Outputs</td>
            <td style={{
    verticalAlign: 'middle'
  }}>{connectionOutputs}</td>
          </tr>
        </tbody>
      </table>
    </div>;
};

<ComponentMetadata warehouses={["Snowflake", "Databricks", "Amazon Redshift", "Google BigQuery"]} componentType="Transformation" connectionInputs="One" connectionOutputs="Unlimited" />

The **Split Field** transformation component lets you split the contents of a selected column at the position of a specified delimiter, and output the separate parts to new columns. The delimiter can be any valid character or sequence of characters. For example, an input field of `ABC-DEF` split on the delimiter `-` will output the values `ABC` and `DEF` to two new columns.

This component is equivalent to using the SQL **SPLIT\_PART** function.

This component works on columns with numeric or date data, as well as on columns of text data, with numbers and dates being split as if they were strings. For example, given a numeric column with the value `1234`, splitting this column on a delimiter of `2` will produce output values of `1` and `34`. Be aware of the regional date format when splitting dates, as it may give unexpected results. Sampling the input dataset to see how the date looks as a string may be helpful here. An alternative way of splitting dates would be to use a DATE\_PART function in the [Calculator](/docs/components/calculator) component.

The output of this operation will always be string data, but you can subsequently use the [Convert Type](/docs/components/convert-type) component to cast the data type appropriately.

### Use case

This component is especially useful when dealing with semi-structured or loosely formatted data output by a source system. Some common uses of this are:

* Splitting CSV or other delimited strings into columns. For example, splitting an address string on commas into separate columns for city, state, and ZIP code.
* Splitting personal names into separate columns for first name and last name, by splitting the full name at the space character.
* Parsing data that contains rows with predictable patterns, for example, log data that shows a date, time, and message.
* Splitting a date into its component parts (day, month, year), for example, to allow trend analysis on a monthly basis.

***

## Properties

<ResponseField name="Name" type="string" required>
  A human-readable name for the component.
</ResponseField>

{/* <!-- param-start:[inputColumn] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Input column" type="drop-down" required>
  The input field to split.
</ResponseField>

{/* <!-- param-start:[delimiter] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Delimiter" type="string">
  The delimiter to split on. The delimiter can be a string of several characters. For example, in a string of values enclosed in quotation marks and delimited by commas, you could split on `","`, which would remove the quotes that would otherwise be included if you split only on commas.
</ResponseField>

{/* <!-- param-start:[outputColumns] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Output columns" type="column editor" required>
  Define the new columns that the split values will be put into.

  * **Position:** The index number of the split field fragment that will go into this column. This index starts at **1**. For example, when splitting an input of `ABC-DEF` on the delimiter `-`, `ABC` is in position 1 and `DEF` is in position 2.
  * **Output Column Name:** The output column is the new column that will hold the extracted data from the specified position. The column will be a string data type, but you can use the [Convert Type](/docs/components/convert-type) component later to cast the data type appropriately if required.

  Click the **Text mode** toggle at the bottom of the dialog to open a multi-line editor that lets you add items in a single block. For more information, read [Text mode](/docs/guides/components-overview#text-mode).

  To use grid variables, toggle **Use Grid Variable** on at the bottom of the dialog. For more information, read [Grid variables](/docs/guides/grid-variables).
</ResponseField>

{/* <!-- param-start:[includeInputColumn] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Include input column" type="boolean" required>
  Select whether to keep the original field in the output or not. If you have extracted all the parts of the field, you may not need to also keep the original.
</ResponseField>
