Campaign: Columnas Redshift no visibles en la carga de datos de Campaign (RDBMS)
Cuando Adobe Campaign utiliza la actividad Carga de datos (RDBMS) con una conexión ODBC Amazon Redshift, es posible que las columnas de tabla o vista no aparezcan en el cuadro de diálogo de selección de columnas. El selector de tablas puede funcionar correctamente mientras la lista de columnas permanece vacía.
Descripción description
El problema se produce al configurar una actividad de carga de datos (RDBMS) con una fuente de datos Redshift:
- Seleccione la conexión Redshift.
- Seleccione una tabla o vista.
- Elija Seleccionar las columnas para extraer o abrir el selector de columnas de consulta.
- No se devuelve ninguna columna.
Otras tablas que utilicen la misma conexión pueden mostrar sus columnas correctamente. Las consultas SQL regulares también pueden seguir funcionando, lo que indica que la conexión y el acceso a datos en el nivel de tabla no necesariamente producen errores.
Los objetos afectados en la investigación incluyeron:
- Una tabla Redshift que utiliza definiciones de distribución y de clave de ordenación.
- Vista generada con UNION ALL en varias bases de datos, incluidos los objetos expuestos a través de referencias de tipo datashare.
Resolución resolution
Causa raíz
Los permisos del esquema Redshift ocultan los metadatos de la tabla
La ruta de metadatos ODBC Redshift utilizada por Campaign consulta SVV_COLUMNS para recuperar definiciones de columna.
En el caso afectado:
- Se han realizado consultas regulares en la tabla.
- El usuario de la base de datos tenía acceso a los datos de la tabla.
- La consulta SVV_COLUMNS se ejecutó sin un error SQL.
- SVV_COLUMNS ha devuelto cero filas.
- Por lo tanto, Campaign no recibió metadatos de columna para mostrar.
La causa probable era una asimetría de permisos: el usuario tenía acceso SELECT a la tabla, pero no tenía permiso USAGE en el esquema principal. Redshift puede permitir lecturas de tablas mientras filtra metadatos de SVV_COLUMNS cuando no se concede el uso del esquema.
Las vistas complejas entre bases de datos no se exponen a través de SVV_COLUMNS
Además, la vista afectada combinaba tablas de varias bases de datos y utilizaba referencias de estilo de conjuntos de datos. El mecanismo de metadatos utilizado por el conector ODBC Redshift se basa en SVV_COLUMNS, pero esta vista del sistema no expuso las columnas para ese tipo de vista entre bases de datos.
Como resultado, Campaign no pudo rellenar el selector de columnas aunque la definición de vista en sí misma fuera válida.
Este escenario se consideraba una capacidad de metadatos no admitida o incompleta que requería una mejora para utilizar otra fuente de metadatos Redshift, como una vista del sistema más amplia o la API de metadatos nativa del controlador ODBC.
Resolución para tablas
Pida al administrador de la base de datos Redshift que verifique que el mismo usuario de la base de datos configurado en la cuenta externa de Campaign tenga permiso USAGE en el esquema principal.
Utilice las siguientes comprobaciones de solo lectura con el usuario de la base de datos que falla:
SELECT
current_database(),
current_user;
SELECT
has_schema_privilegio()
current_user,
'< schema_name> ',
‘USO’
) AS has_schema_usage;
SELECT
column_name,
data_type
FROM_svv_columns
WHERE table_schema = '< schema_name> ’
AND nombre_tabla = '< nombre_tabla> ';
Si falta uso del esquema, asígnelo al usuario de la base de datos de Campaign:
CONCEDER USO
EN EL ESQUEMA < schema_name>
PARA < campaign_db_user> ;
El usuario debe conservar los permisos de nivel de tabla necesarios, por ejemplo:
CONCEDER SELECCIÓN
EN LA TABLA < schema_name> .< nombre_de_tabla>
PARA < campaign_db_user> ;
Después del cambio de permiso, vuelva a abrir o actualice la actividad Data Loading (RDBMS) y compruebe que la lista de columnas está rellenada.
La concesión de USAGE en un esquema permite al usuario hacer referencia a los objetos de dicho esquema. No concede, por sí solo, acceso a los datos de la tabla.
Resolución o solución para vistas complejas
Para las vistas que no se representan en SVV_COLUMNS, utilice uno de los siguientes métodos:
- Utilice una tabla base o un esquema compatibles en lugar de la vista compleja.
- Utilice una actividad Query o un mecanismo de consulta externo donde el SQL se pueda proporcionar directamente.
- Pida al equipo de la base de datos que exponga los datos necesarios a través de una tabla compatible o una vista más sencilla.
- Rastree la compatibilidad con vistas respaldadas por conjuntos de datos o entre bases de datos como mejora de producto.
En una prueba de cliente independiente, el uso de una ruta de conexión ODBC genérica permitía que la API de metadatos SQLColumns() nativa del controlador devolviera columnas en las que la ruta del conector específica de Redshift no lo hacía. Puede ser una solución útil de diagnóstico o temporal, pero debe validarse para el entorno específico antes de recomendarse como solución permanente.