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

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

The **Assert Table Values** test component lets you verify that the data in a specified table matches a fixed set of expected values defined in the component. It checks that all expected columns exist in the target table with matching data types (additional table columns are allowed), then compares all rows against the expected dataset. Any differences are written to another table.

<Note>
  This component is only available in [Tests](/docs/components/test-pipelines).
</Note>

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

    <ResponseField name="Table" type="drop-down" required>
      Select the table whose values you want to verify.
    </ResponseField>

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

    <ResponseField name="Expected columns" type="column editor" required>
      Enter the following details for each table column expected to be present in the table specified in the `Table` property:

      * **Name:** The name of the column.
      * **Type:** The data type of the column. Select from the available Snowflake data types:
        * [VARCHAR](https://docs.snowflake.com/en/sql-reference/functions/as_char-varchar): 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): 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 is suitable for approximate numeric values with fractional components.
        * [BOOLEAN](https://docs.snowflake.com/en/sql-reference/operators-logical): 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.
        * [TIMESTAMP](https://docs.snowflake.com/en/sql-reference/data-types-datetime#timestamp): This type is suitable for column data values entered as a comma-separated list in the format `YYYY-MM-DD HH:MI:SS`.
        * [TIMESTAMP\_NTZ](https://docs.snowflake.com/en/sql-reference/data-types-datetime#label-datatypes-timestamp-variations): This type is suitable for column data values entered as a comma-separated list in the format `YYYY-MM-DD HH:MI:SS`.
        * [TIMESTAMP\_LTZ](https://docs.snowflake.com/en/sql-reference/data-types-datetime#label-datatypes-timestamp-variations): This type is suitable for column data values entered as a comma-separated list in the format `YYYY-MM-DD HH:MI:SS`.
        * [TIMESTAMP\_TZ](https://docs.snowflake.com/en/sql-reference/data-types-datetime#label-datatypes-timestamp-variations): This type is suitable for column data values entered as a comma-separated list in the format `YYYY-MM-DD HH:MI:SS +TZ`.
        * [TIME](https://docs.snowflake.com/en/sql-reference/data-types-datetime#label-datatypes-time): This type is suitable for column data values entered as a comma-separated list in the format `HH:MI:SS`.
        * [VARIANT](https://docs.snowflake.com/en/sql-reference/data-types-semistructured#variant): This type is suitable for column data values entered as a comma-separated list in JSON format.
      * **Size:** For `VARCHAR` 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.

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

    <ResponseField name="Expected values" type="column editor" required>
      Specify the values you expect to find in the table defined in the `Table` property. A dynamic table of values is generated, with one column for each column defined above.

      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>
  </Tab>

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

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

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

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

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

    <ResponseField name="Table" type="drop-down" required>
      Select the table whose values you want to verify.
    </ResponseField>

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

    <ResponseField name="Expected columns" type="column editor" required>
      Enter the following details for each table column expected to be present in the table specified in the `Table` property:

      * **Name:** The name of the column.
      * **Type:** The data type of the column. Select from the available Databricks 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.

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

    <ResponseField name="Expected values" type="column editor" required>
      Specify the values you expect to find in the table defined in the `Table` property. A dynamic table of values is generated, with one column for each column defined above.

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

    <ResponseField name="Table" type="drop-down" required>
      Select the table whose values you want to verify.
    </ResponseField>

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

    <ResponseField name="Expected columns" type="column editor" required>
      Enter the following details for each table column expected to be present in the table specified in the `Table` property:

      * **Name:** The name of the column.
      * **Type:** The data type of the column. Select from the available Amazon Redshift data types:
        * [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.
        * [GEOMETRY](https://docs.aws.amazon.com/redshift/latest/dg/geospatial-overview.html): Use the GEOMETRY data type to store two-dimensional geospatial features in a projected coordinate system, such as points, lines, and polygons.
        * [GEOGRAPHY](https://docs.aws.amazon.com/redshift/latest/dg/geospatial-overview.html): Use the GEOGRAPHY data type to store geospatial features referenced against a geodetic (spheroidal) coordinate system, such as latitude and longitude 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 two 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.

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

    <ResponseField name="Expected values" type="column editor" required>
      Specify the values you expect to find in the table defined in the `Table` property. A dynamic table of values is generated, with one column for each column defined above.

      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>
  </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="drop-down" required>
      Select the table whose values you want to verify.
    </ResponseField>

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

    <ResponseField name="Expected columns" type="column editor" required>
      Enter the following details for each table column expected to be present in the table specified in the `Table` property:

      * **Name:** The name of the column.
      * **Type:** The data type of the column. Select from the available BigQuery data types:
        * [STRING](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#string_type): Variable-length character (Unicode) data.
        * [INT64](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#integer_types): A whole number without a fractional component.
        * [FLOAT64](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#floating_point_types): An approximate numeric value with fractional components.
        * [NUMERIC](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#decimal_types): An exact numeric value with a fixed precision and scale.
        * [BIGNUMERIC](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#decimal_types): An exact numeric value with higher precision and scale than `NUMERIC`, suitable for very large or highly precise decimal values.
        * [BOOL](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#boolean_type): Data that is either "true" or "false".
        * [BYTES](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#bytes_type): Variable-length binary data.
        * [DATE](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#date_type): A calendar date, independent of time zone.
        * [DATETIME](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#datetime_type): A year, month, day, hour, minute, second, and subsecond value, without a time zone.
        * [TIME](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#time_type): A time of day, independent of a specific date and time zone.
        * [TIMESTAMP](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#timestamp_type): An absolute point in time, independent of any time zone or convention.
        * [INTERVAL](https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/data-types#interval_type): A duration of time, independent of any specific point in time or time zone.
      * **Size:** For `STRING` 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:** The number of digits to the right of the decimal point. Will be 0 (zero) for non-applicable types.

      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:[expectedValues] | warehouses: [bigquery] --> */}

    <ResponseField name="Expected values" type="column editor" required>
      Specify the values you expect to find in the table defined in the `Table` property. A dynamic table of values is generated, with one column for each column defined above.

      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>
  </Tab>
</Tabs>
