> ## 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.

# Fixed Flow

export const maia = "Maia";

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="None" connectionOutputs="Unlimited" />

The **Fixed Flow** transformation component lets you generate a table of data for use downstream in the pipeline. This data can be hard-coded into the component, or it can be generated from [project and pipeline variables](/docs/guides/variables) at runtime.

When you configure the Fixed Flow component, you first define the columns that the table will have, and then you create as many rows of data as you require in the table. The output of the Fixed Flow component is a table containing the specified data. The output can be joined to any number of downstream components that can then use that data.

### Use case

The Fixed Flow component gives you a versatile tool for introducing data into your {maia} pipelines. Some common uses for this include:

* Testing and debugging downstream components. During pipeline development, you may want to test downstream components (like filters, joins, and transformations) without using live data. The Fixed Flow will allow you to simulate a dataset with a few rows and columns to run your tests before connecting to actual data sources.
* Creating static reference or lookup data. Your downstream components may need reference data that is static or rarely changes. For example, a lookup table of currency codes and country names. You could create this lookup table in a Fixed Flow component, and then it would be available to your pipeline without needing to connect to a separate external data source.

***

## Properties

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

    {/* <!-- param-start:[columns] | warehouses: [snowflake] --> */}

    <ResponseField name="Columns" type="column editor" required>
      **Name:** The name of the input column.

      **Type:** Select from:

      * **[VARCHAR](https://docs.snowflake.net/manuals/sql-reference/data-types.html#varchar):** This type is suitable for strings and text.
      * **[NUMBER](https://docs.snowflake.net/manuals/sql-reference/data-types.html#number):** This type is suitable for whole-number types (no decimals).
      * **[FLOAT](https://docs.snowflake.net/manuals/sql-reference/data-types.html#float-float4-float8):** This type is suitable for numeric types, with or without decimals.
      * **[BOOLEAN](https://docs.snowflake.net/manuals/sql-reference/data-types.html#boolean):** This type is suitable for data that is either true or false.
      * **[DATE](https://docs.snowflake.net/manuals/sql-reference/data-types.html#date):** This type is suitable for dates without times.
      * **[TIMESTAMP](https://docs.snowflake.net/manuals/sql-reference/data-types.html#timestamp-timestamp):** This type is a timestamp left unformatted (exists as Unix/Epoch Time).
      * **[TIME](https://docs.snowflake.net/manuals/sql-reference/data-types.html#time):** This type is a formatted time object without date.
      * **[VARIANT](https://docs.snowflake.com/en/sql-reference/data-types-semistructured#variant):** This is a flexible type that can be used for any purpose.

      **Size:** For Text types, this is the maximum length. This is a limit on the number of bytes, not characters. For Numeric types, this is the total number of digits allowed, whether before or after the decimal point.

      **Scale:** Scale is the number of digits to the right of the decimal point in a Float. For example, the number 123.45 has a scale of 2.

      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).

      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).
    </ResponseField>

    {/* <!-- param-start:[values] | warehouses: [snowflake] --> */}

    <ResponseField name="Values" type="column editor" required>
      A dynamic table of values with one column for each column created above.

      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).

      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).
    </ResponseField>
  </Tab>

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

    {/* <!-- param-start:[columns] | warehouses: [databricks] --> */}

    <ResponseField name="Columns" type="column editor" required>
      * **Name:** The name of the input column.

      * **Type:**
        * [Integer](https://docs.databricks.com/en/sql/language-manual/data-types/int-type.html): This type is a whole number (not a fractional number) that can be positive, negative, or zero.
        * [Number](https://docs.databricks.com/en/sql/language-manual/sql-ref-datatypes.html): This type is suitable for numeric types, with or without decimals.
        * [Float](https://docs.databricks.com/en/sql/language-manual/data-types/float-type.html): For this type, values are approximate numeric values with fractional components.
        * [Text](https://docs.databricks.com/en/sql/language-manual/sql-ref-datatypes.html): This type contains alphanumeric and character strings.
        * [Timestamp](https://docs.databricks.com/en/sql/language-manual/data-types/timestamp-type.html): This type represents values comprising values of fields year, month, day, hour, minute, and second, with the session local time-zone. The timestamp value represents an absolute point in time.
        * [Date](https://docs.databricks.com/en/sql/language-manual/data-types/date-type.html): This type is suitable for dates without times.
        * [Boolean](https://docs.databricks.com/en/sql/language-manual/data-types/boolean-type.html): This type is suitable for data that is either true or false.
        * [Binary](https://docs.databricks.com/en/sql/language-manual/data-types/binary-type.html): This type is byte sequence values.

      * **Size:** For text types, this is the maximum length. This is a limit on the number of bytes, not characters. For numeric types, this is the total number of digits allowed, whether before or after the decimal point.

      * **Scale:** Scale is the number of digits to the right of the decimal point in a float. For example, the number 123.45 has a scale of 2.

      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).

      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).
    </ResponseField>

    {/* <!-- param-start:[values] | warehouses: [databricks] --> */}

    <ResponseField name="Values" type="column editor" required>
      A dynamic table of values with one column for each column created above.

      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).

      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).
    </ResponseField>
  </Tab>

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

    {/* <!-- param-start:[columns] | warehouses: [redshift] --> */}

    <ResponseField name="Columns" type="column editor" required>
      * **Name:** The name of the input column.

      * **Type:**
        * **[Text](http://docs.aws.amazon.com/redshift/latest/dg/r_Character_types.html#r_Character_types-text-and-bpchar-types):** This type can hold any type of data, subject to a maximum size.
        * **[Integer](http://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-integer-types):** This type is suitable for whole-number types (no decimals).
        * **[Numeric](http://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-decimal-or-numeric-type):** This type is suitable for numeric types, with or without decimals.
        * **[Real](http://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-integer-types):** This type is suitable for real-number types (no decimals).
        * **[Double Precision](http://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-decimal-or-numeric-type):** This type is suitable for double-precision numeric types, with or without decimals.
        * **[Boolean](http://docs.aws.amazon.com/redshift/latest/dg/r_Boolean_type.html):** This type is suitable for data that is either true or false.
        * **[Date](http://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-date):** This type is suitable for dates without times.
        * **[DateTime](http://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html):** This type is suitable for dates, times, or timestamps (both date and time).
        * **[SUPER](https://docs.aws.amazon.com/redshift/latest/dg/r_SUPER_type.html):** Use the SUPER data type to store semi-structured data or documents as values.

      * **Size:** For Text types, this is the maximum length. This is a limit on the number of bytes, not characters. For Numeric types, this is the total number of digits allowed, whether before or after the decimal point.

      * **Scale:** Scale is the number of digits to the right of the decimal point in a Float. For example, the number 123.45 has a scale of 2.

      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).

      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).
    </ResponseField>

    {/* <!-- param-start:[values] | warehouses: [redshift] --> */}

    <ResponseField name="Values" type="column editor" required>
      A dynamic table of values with one column for each column created above.

      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).

      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).
    </ResponseField>
  </Tab>

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

    {/* <!-- param-start:[columns] | warehouses: [bigquery] --> */}

    <ResponseField name="Columns" type="column editor" required>
      * **Name:** The name of the input column.
      * **Type:**
        * **[STRING](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#string_type):** This type is suitable for text and character data.
        * **[INT64](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#integer_types):** This type is suitable for whole numbers (no decimals).
        * **[FLOAT64](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#floating_point_types):** This type is suitable for approximate numeric values with fractional components.
        * **[NUMERIC](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#numeric_type):** This type is suitable for exact numeric values with precision and scale.
        * **[BIGNUMERIC](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#bignumeric_type):** This type is suitable for high-precision numeric values.
        * **[BOOL](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#boolean_type):** Boolean. This type is suitable for data that is either true or false.
        * **[DATE](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#date_type):** This type is suitable for dates without times.
        * **[DATETIME](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#datetime_type):** This type is suitable for dates and times without timezone information.
        * **[TIME](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#time_type):** This type is a formatted time object without a date.
        * **[TIMESTAMP](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#timestamp_type):** This type represents an absolute point in time, with microsecond precision.
      * **Mode:**
        * **Nullable:** Used when providing a single value in the column.
        * **Repeated:** Allows you to provide JSON arrays as values (for example `["red","green","blue"]`) for array-typed columns. Each element is individually cast to the column's data type.

      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).

      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).
    </ResponseField>

    {/* <!-- param-start:[values] | warehouses: [bigquery] --> */}

    <ResponseField name="Values" type="column editor" required>
      A dynamic table of values with one column for each column created above.

      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).

      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).
    </ResponseField>
  </Tab>
</Tabs>

***

## Date, DateTime, Time, and Timestamp validation

A variety of Date, Time, DateTime, and Timestamp values can be used. Some of the most common values accepted are listed below. The list of examples is not exhaustive, but covers many of the most commonly accepted formats.

Date values:

* 13/01/2021
* 01/13/2021
* 2021/1/13
* 13/JAN/2021
* 2021
* JAN 13 2021
* 13 January, 2021
* January 13, 2021

Time values:

* 23:12
* 23:12:59
* 23:12:59.123456 (milli/micro/nano are all supported)

Time values with offset:

* 23:12 +01:00
* 23:12:59 +01:00
* 23:12:59.123456 +01:00 (milli/micro/nano are all supported)

DateTime and Timestamp values:

* 13-01-2021 23:12:59.123456 +01:00
* 2021-01-13 23:12:59.123456 +01:00

<Note>
  - To avoid confusion between day and month values, the number 13 is used as the value for day in these examples.
  - The backslash character can be replaced by a dash, underscore, full stop, or colon.
  - Dates cannot contain time values.
  - Times cannot contain date values.
  - The DateTime/Timestamp values can be just the date, but **not** just the time.
  - The DateTime/Timestamp values accepted combine certain date patterns with all the time patterns, split by either a whitespace character or a **T** character.
  - There are a number of exceptions that are accepted, such as BC dates, negative dates, and also month values greater than 12. None of these are listed here, and we advise caution when using these values.
</Note>
