Campaign: Redshift Columns Not Visible in Campaign Data Loading (RDBMS)

When Adobe Campaign uses the Data Loading (RDBMS) activity with an Amazon Redshift ODBC connection, table or view columns might not appear in the column-selection dialog. The table picker can work correctly while the column list remains empty.

Description description

The issue occurs when configuring a Data Loading (RDBMS) activity against a Redshift data source:

  • Select the Redshift connection.
  • Select a table or view.
  • Choose Select the columns to extract or open the query column picker.
  • No columns are returned.

Other tables using the same connection may display their columns correctly. Regular SQL queries can also continue to work, which indicates that the connection and table-level data access are not necessarily failing.

The affected objects in the investigation included:

  • A Redshift table using distribution and sort-key definitions.
  • A view built with UNION ALL across multiple databases, including objects exposed through datashare-style references.

Resolution resolution

Root Cause

Table metadata is hidden by Redshift schema permissions

The Redshift ODBC metadata path used by Campaign queries SVV_COLUMNS to retrieve column definitions.

In the affected case:

  • Regular queries against the table succeeded.
  • The database user had access to the table data.
  • The SVV_COLUMNS query executed without a SQL error.
  • SVV_COLUMNS returned zero rows.
  • Campaign therefore received no column metadata to display.

The likely cause was a permissions asymmetry: the user had SELECT access to the table but did not have USAGE permission on the parent schema. Redshift can allow table reads while filtering metadata from SVV_COLUMNS when schema usage is not granted.

Complex cross-database views are not exposed through SVV_COLUMNS

Additionally the affected view combined tables from multiple databases and used datashare-style references. The metadata mechanism used by the Redshift ODBC connector relies on SVV_COLUMNS, but this system view did not expose the columns for that type of cross-database view.

As a result, Campaign could not populate the column picker even though the view definition itself was valid.

This scenario was considered an unsupported or incomplete metadata capability requiring an enhancement to use another Redshift metadata source, such as a broader system view or the ODBC driver’s native metadata API.

Resolution for tables

Ask the Redshift database administrator to verify that the same database user configured on the Campaign external account has USAGE permission on the parent schema.

Use the following read-only checks with the failing database user:

SELECT
    current_database(),
    current_user;

SELECT
    has_schema_privilege(
        current_user,
        '< schema_name> ',
        ‘USAGE’
    ) AS has_schema_usage;

SELECT
    column_name,
    data_type
FROM svv_columns
WHERE table_schema = '< schema_name>
  AND table_name = '< table_name> ';

If schema usage is missing, grant it to the Campaign database user:

GRANT USAGE
ON SCHEMA < schema_name>
TO < campaign_db_user> ;

The user must still retain the required table-level permissions, for example:

GRANT SELECT
ON TABLE < schema_name> .< table_name>
TO < campaign_db_user> ;

After the permission change, reopen or refresh the Data Loading (RDBMS) activity and verify that the column list is populated.

Granting USAGE on a schema allows the user to reference objects in that schema. It does not, by itself, grant access to table data.

Resolution or workaround for complex views

For views that are not represented in SVV_COLUMNS, use one of the following approaches:

  • Use a supported base table or schema instead of the complex view.
  • Use a Query activity or external query mechanism where the SQL can be supplied directly.
  • Ask the database team to expose the required data through a supported table or simpler view.
  • Track support for cross-database or datashare-backed views as a product enhancement.

In a separate customer test, using a generic ODBC connection path allowed the driver’s native SQLColumns() metadata API to return columns where the Redshift-specific connector path did not. This may be a useful diagnostic or temporary workaround, but it should be validated for the specific environment before being recommended as a permanent solution.

recommendation-more-help
experience-cloud-kcs-help-kbarticles