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

# Assert Table

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="Orchestration, Test" connectionInputs="One" connectionOutputs="Unlimited" />

The Assert Table orchestration component empowers users to confirm that a target table has been created with the correct metadata. This component asserts a row count using various methods such as "Equal to", "Greater than", "Less than", and "Range"; these comparator options allow users to set the upper and lower values of row counts.

## Properties

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

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

    <ResponseField name="Database" type="drop-down" required>
      The Snowflake database. The special value `[Environment Default]` uses the database defined in the environment. Read [Databases, Tables and Views - Overview](https://docs.snowflake.com/en/guides-overview-db) to learn more.
    </ResponseField>

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

    <ResponseField name="Schema" type="drop-down" required>
      The Snowflake schema. The special value `[Environment Default]` uses the schema defined in the environment. Read [Database, Schema, and Share DDL](https://docs.snowflake.com/en/sql-reference/ddl-database.html) to learn more.
    </ResponseField>

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

    <ResponseField name="Table name" type="drop-down" required>
      Select the table to assert.
    </ResponseField>

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

    <ResponseField name="Exists" type="boolean" required>
      This property asserts that the table exists within the database. Set to "Yes" or "No".
    </ResponseField>

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

    <ResponseField name="Table metadata" type="column editor">
      Enter the following details for each table column.

      * **Column Name:** The name of the new column.
      * **Data Type:** Select one of:
        * [Varchar](https://docs.snowflake.com/en/sql-reference/functions/as_char-varchar.html): This type is suitable for numbers and letters. A varchar or Variable Character Field is a set of character data of indeterminate length.
        * [Number](https://docs.snowflake.com/en/sql-reference/data-types-numeric.html): This type is suitable for numeric types, with or without decimals.
        * [Float](https://docs.snowflake.com/en/sql-reference/data-types-numeric#data-types-for-floating-point-numbers): This type of values are approximate numeric values with fractional components.
        * [Boolean](https://docs.snowflake.com/en/sql-reference/operators-logical.html): This type is suitable for data that is either "true" or "false".
        * [Date](https://docs.snowflake.com/en/sql-reference/data-types-datetime#date): This type is suitable for dates without times.
        * [Time](https://docs.snowflake.com/en/sql-reference/data-types-datetime.html#time): This type is suitable for time, independent of a specific date and timezone.
        * [Timestamp](https://docs.snowflake.com/en/sql-reference/data-types-datetime.html#timestamp): This type is a timestamp left unformatted (exists as Unix/Epoch Time).
        * [Variant](https://docs.snowflake.com/en/sql-reference/functions/to_variant.html): Variant is a tagged universal type that can hold up to 16 MB of any data type supported by Snowflake.
      * **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.
      * **Precision:** The precision of the data in the column. Will be 0 (zero) for non-applicable types.

      You can specify table metadata using [text mode](/docs/guides/components-overview#text-mode).

      This property is only available when **Exists** is set to "Yes".

      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:[rowCountComparisonType] | warehouses: [snowflake] --> */}

    <ResponseField name="Row count comparison type" type="drop-down" required>
      Select how row count values are compared. Possible comparison operators include:

      * **Equal To:** The value in the Input Column must be equal to that specified in the Value Column. This is the default comparison operator.
      * **Greater Than or Equal To:** The value in the Input Column must be greater than or equal to the value in the Value Column.
      * **Less Than or Equal To:** The value in the Input Column must be less than or equal to the value in the Value Column.
      * **Range:** This allows users to specify the range for the value of the row counts.

      Not all data sources support all comparison operators; thus, it is likely that only a subset of the above comparison operators will be available to choose from.

      This property is only available when **Exists** is set to "Yes".
    </ResponseField>

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

    <ResponseField name="Lower value" type="integer">
      Set the lower value. This property is only applicable when Row count comparison type is set to "Range".
    </ResponseField>

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

    <ResponseField name="Upper value" type="integer">
      Set the upper value. This property is only applicable when Row count comparison type is set to "Range".
    </ResponseField>

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

    <ResponseField name="Row count value" type="integer">
      Specify the number of rows.

      This property is only available when **Exists** is set to "Yes".
    </ResponseField>
  </Tab>

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

    <ResponseField name="Catalog" type="drop-down" required>
      Select a [Databricks Unity Catalog](https://docs.databricks.com/en/data-governance/unity-catalog/index.html). The special value `[Environment Default]` uses the catalog defined in the environment. Selecting a catalog will determine which databases are available in the next parameter.
    </ResponseField>

    <ResponseField name="Schema (Database)" type="drop-down" required>
      The Databricks schema. The special value `[Environment Default]` uses the schema defined in the environment. Read [Create and manage schemas](https://docs.databricks.com/en/data-governance/unity-catalog/create-schemas.html) to learn more.
    </ResponseField>

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

    <ResponseField name="Table" type="string" required>
      The name of the table to be created.
    </ResponseField>

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

    <ResponseField name="Exists" type="boolean" required>
      This property asserts that the table exists within the database. Set to "Yes" or "No".
    </ResponseField>

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

    <ResponseField name="Table metadata" type="column editor">
      Enter the following details for each table column.

      * **Name:** The name of the new column.
      * **Type:** Select one of the following data types:
        * [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): Suitable for numeric types, with or without decimals.
        * [FLOAT](https://docs.databricks.com/en/sql/language-manual/data-types/float-type.html): Values are approximate numeric values with fractional components.
        * [TEXT](https://docs.databricks.com/en/sql/language-manual/data-types/string-type.html): Alphanumeric and character strings.
        * [TIMESTAMP](https://docs.databricks.com/en/sql/language-manual/data-types/timestamp-type.html): 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): Represents values comprising values of fields year, month and day, without a time-zone.
        * [BOOLEAN](https://docs.databricks.com/en/sql/language-manual/data-types/boolean-type.html): Represents data that is either "true" or "false".
        * [BINARY](https://docs.databricks.com/en/sql/language-manual/data-types/binary-type.html): Represents byte sequence values.
      * **Size:** For Text types, this is the maximum length. This is a limit on the number of bytes, not characters. For Number 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.

      You can specify table metadata using [text mode](/docs/guides/components-overview#text-mode).

      This property is only available when **Exists** is set to "Yes".

      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:[rowCountComparisonType] | warehouses: [databricks] --> */}

    <ResponseField name="Row count comparison type" type="drop-down" required>
      Select how row count values are compared. Possible comparison operators include:

      * **Equal To:** The value in the Input Column must be equal to that specified in the Value Column. This is the default comparison operator.
      * **Greater Than or Equal To:** The value in the Input Column must be greater than or equal to the value in the Value Column.
      * **Less Than or Equal To:** The value in the Input Column must be less than or equal to the value in the Value Column.
      * **Range:** This allows users to specify the range for the value of the row counts.

      Not all data sources support all comparison operators; thus, it is likely that only a subset of the above comparison operators will be available to choose from.

      This property is only available when **Exists** is set to "Yes".
    </ResponseField>

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

    <ResponseField name="Lower value" type="integer">
      Set the lower value. This property is only applicable when **Row count comparison type** is set to "Range".
    </ResponseField>

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

    <ResponseField name="Upper value" type="integer">
      Set the upper value. This property is only applicable when **Row count comparison type** is set to "Range".
    </ResponseField>

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

    <ResponseField name="Row count value" type="integer">
      Specify the number of rows.

      This property is only available when **Exists** is set to "Yes".
    </ResponseField>
  </Tab>

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

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

    <ResponseField name="Schema" type="drop-down" required>
      Select the table schema. The special value `[Environment Default]` uses the schema defined in the environment. For more information on using multiple schemas, read [Schemas](https://docs.aws.amazon.com/redshift/latest/dg/r_Schemas_and_tables.html).
    </ResponseField>

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

    <ResponseField name="Table name" type="drop-down" required>
      The table to assert.
    </ResponseField>

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

    <ResponseField name="Exists" type="boolean" required>
      This property asserts that the table exists within the database. Set to "Yes" or "No".
    </ResponseField>

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

    <ResponseField name="Table metadata" type="column editor">
      Enter the following details for each table column.

      * **Column Name:** The name of the column.
      * **Data Type:** Select the data type.
        * [Text](https://docs.aws.amazon.com/redshift/latest/dg/r_Character_types.html#r_Character_types-text-and-bpchar-types): A string can hold any kind of data, subject to a maximum size.
        * [Integer](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-integer-types): An integer data type is suitable for whole numbers (no decimals).
        * [Numeric](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-decimal-or-numeric-type): The numeric data type accepts numbers, with or without decimals.
        * [Real](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html): This type is suitable for data of a single precision floating-point number.
        * [Double Precision](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html): This type is suitable for data of a double precision floating-point number.
        * [Boolean](https://docs.aws.amazon.com/redshift/latest/dg/r_Boolean_type.html): Data with a Boolean data type can be either "true" or "false".
        * [Date](https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-date): This type is suitable for dates without times.
        * [DateTime](https://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 Redshift, since all data is stored using UTF-8, any non-ASCII character will count as 2 or more bytes. For Numeric types, this is the total number of digits allowed, whether before or after the decimal point.
      * **Decimal Places:** Relevant only for "Numeric" data, it is the maximum number of digits that may appear to the right of the decimal point.

      You can specify table metadata using [text mode](/docs/guides/components-overview#text-mode).

      This property is only available when **Exists** is set to "Yes".

      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:[rowCountComparisonType] | warehouses: [redshift] --> */}

    <ResponseField name="Row count comparison type" type="drop-down" required>
      Select how row count values are compared. Possible comparison operators include:

      * **Equal To:** The value in the Input Column must be equal to that specified in the Value Column. This is the default comparison operator.
      * **Greater Than or Equal To:** The value in the Input Column must be greater than or equal to the value in the Value Column.
      * **Less Than or Equal To:** The value in the Input Column must be less than or equal to the value in the Value Column.
      * **Range:** This allows users to specify the range for the value of the row counts.

      Selecting "Range" makes the Upper value and Lower value properties available.

      Not all data sources support all comparison operators; thus, it is likely that only a subset of the above comparison operators will be available to choose from.

      This property is only available when **Exists** is set to "Yes".
    </ResponseField>

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

    <ResponseField name="Lower value" type="integer">
      Set the lower value. This property is only applicable when **Row count comparison type** is set to "Range".
    </ResponseField>

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

    <ResponseField name="Upper value" type="integer">
      Set the upper value. This property is only applicable when **Row count comparison type** is set to "Range".
    </ResponseField>

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

    <ResponseField name="Row count value" type="integer">
      Specify the number of rows.

      This property is only available when **Exists** is set to "Yes".
    </ResponseField>
  </Tab>

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

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

    <ResponseField name="GCP project ID" type="drop-down" required>
      The Google Cloud project that owns the BigQuery dataset. The special value `[Environment Default]` uses the Google Cloud project defined in the environment. For more information, read [Creating projects](https://docs.cloud.google.com/resource-manager/docs/creating-managing-projects).
    </ResponseField>

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

    <ResponseField name="Dataset" type="drop-down" required>
      The Google BigQuery dataset containing the table to query. The special value `[Environment Default]` uses the dataset defined in the environment.
    </ResponseField>

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

    <ResponseField name="Table" type="string" required>
      Select the table to assert in the dataset.
    </ResponseField>

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

    <ResponseField name="Exists" type="boolean" required>
      This property asserts that the table exists within the dataset. Set to "Yes" or "No".
    </ResponseField>

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

    <ResponseField name="Table metadata" type="column editor">
      Enter the following details for each table column.

      * **Name:** The name of the column.
      * **Type:** Select one of the following BigQuery data types:
        * [STRING](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#string_type)
        * [INT64](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#integer_types)
        * [FLOAT64](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#numeric_types)
        * [NUMERIC](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#numeric_types)
        * [BIGNUMERIC](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#numeric_types)
        * [BOOL](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#boolean_type)
        * [BYTES](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#bytes_type)
        * [DATE](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#date_type)
        * [DATETIME](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#datetime_type)
        * [TIME](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#time_type)
        * [TIMESTAMP](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#timestamp_type)
        * [INTERVAL](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#interval_type)

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

      This property is only available when **Exists** is set to "Yes".
    </ResponseField>

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

    <ResponseField name="Row count comparison type" type="drop-down" required>
      Select how row count values are compared. Possible comparison operators include:

      * **Equal To:** The value in the Input Column must be equal to that specified in the Value Column. This is the default comparison operator.
      * **Greater Than or Equal To:** The value in the Input Column must be greater than or equal to the value in the Value Column.
      * **Less Than or Equal To:** The value in the Input Column must be less than or equal to the value in the Value Column.
      * **Range:** This allows users to specify the range for the value of the row counts.

      Not all data sources support all comparison operators; thus, it is likely that only a subset of the above comparison operators will be available to choose from.

      This property is only available when **Exists** is set to "Yes".
    </ResponseField>

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

    <ResponseField name="Lower value" type="integer">
      Set the lower value. This property is only applicable when **Row count comparison type** is set to "Greater Than or Equal To", and "Range".
    </ResponseField>

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

    <ResponseField name="Upper value" type="integer">
      Set the upper value. This property is only applicable when **Row count comparison type** is set to "Less Than or Equal To", and "Range".
    </ResponseField>

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

    <ResponseField name="Row count value" type="integer">
      Specify the number of rows.

      This property is only available when **Exists** is set to "Yes", and **Row count comparison type** is set to "Equal To".
    </ResponseField>
  </Tab>
</Tabs>
