Validating Data from Amazon Redshift

This page covers Amazon Redshift-specific setup for Data validation. For workflow field definitions, see Data validation configuration reference.

Prerequisites

  • ODBC connectivity to Redshift from Worker hosts (standard or IAM auth; same TOML as Migrating Data from Amazon Redshift).
  • Live Redshift access for L2/L3: validation runs SQL against live Redshift even when tables were loaded via UNLOAD to S3.

Connectivity

Reuse the same [connections.source.redshift] Worker TOML as Migrating Data from Amazon Redshift.

Standard authentication example:

[connections.source.redshift]
username = "myuser"
password = "mypassword"
database = "mydatabase"
host = "my-cluster.abcdef123456.us-west-2.redshift.amazonaws.com"
port = 5439
auth_method = "standard"

Validation behavior

  • After UNLOAD migrations: Validation still runs SQL against live Redshift for source-side metrics and row checks. Ensure the Worker can reach the cluster and that large partition result sets stay within timeout and spool limits.
  • Iceberg targets: Validation compares whatever is in Snowflake (native or Iceberg). Iceberg targets don’t change L2/L3 SQL on the Redshift side.

For partitioning and index_column_list, see Data validation configuration reference.

Example workflow excerpt:

source_platform: redshift
target_database: TARGET_DB
validation_configuration:
  schema_validation: true
  metrics_validation: true
  row_validation: false
tables:
  - fully_qualified_name: snowconvert_demo.ecommerce_raw.customers
    column_names_to_partition_by:
      - customer_id
  - fully_qualified_name: snowconvert_demo.ecommerce_raw.orders
    column_names_to_partition_by:
      - order_id
    index_column_list:
      - order_id
    validation_configuration:
      row_validation: true

Data type mappings

Redshift typeSnowflake target typeSupported for validationNotes
SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, DOUBLE PRECISIONNUMBER / FLOATYes
BOOLEAN, DATE, TIMESTAMPBOOLEAN / DATE / TIMESTAMP_NTZYes
CHAR, VARCHARVARCHARYes
VARBYTE / BINARY VARYINGBINARYYes
TIMESTAMPTZTIMESTAMP_TZNo
TIME, TIMETZTIMENo
INTERVALY2M, INTERVALD2SINTERVALYesNative INTERVAL comparison by default. See INTERVAL data type handling.
GEOMETRY, GEOGRAPHYGEOGRAPHYNoSchema-level comparison only
HLLSKETCHVARCHARNoNo Snowflake equivalent
SUPERVARIANTNo

Platform-specific considerations

  • Starting validation: Ask the agent to generate a validation workflow with the depth you need (L1/L2/L3 per table).

    Prompt:

    Run cloud data validation for my Redshift tables, with schema and metrics validation on all tables and row-level validation on orders
    
  • For tables migrated via UNLOAD, confirm the live Redshift source still reflects the data snapshot you expect to compare.

    Prompt:

    Validate the customers and orders tables that were migrated with UNLOAD extraction
    
  • Keep large partition result sets within Redshift timeout and spool limits when running L2/L3 against wide tables.

  • Anti-locking: No automatic hint is added on Redshift. Set queryModifiers only when you need custom source SQL hints. See Anti-locking and query modifiers.