Campaign : les colonnes Redshift ne sont pas visibles dans le chargement des données de Campaign (SGBD)

Lorsqu’Adobe Campaign utilise l’activité Chargement de données (SGBD) avec une connexion ODBC Amazon Redshift, les colonnes du tableau ou de la vue peuvent ne pas apparaître dans la boîte de dialogue de sélection des colonnes. Le sélecteur de tableau peut fonctionner correctement tant que la liste des colonnes reste vide.

Description description

Le problème se produit lors de la configuration d’une activité Chargement de données (SGBD) par rapport à une source de données Redshift :

  • Sélectionnez la connexion Redshift.
  • Sélectionnez une table ou une vue.
  • Choisissez Sélectionner les colonnes à extraire ou ouvrez le sélecteur de colonnes de la requête.
  • Aucune colonne n’est renvoyée.

D’autres tableaux utilisant la même connexion peuvent afficher correctement leurs colonnes. Les requêtes SQL standard peuvent également continuer à fonctionner, ce qui indique que la connexion et l’accès aux données au niveau de la table n’échouent pas nécessairement.

Parmi les objets touchés par l’enquête, mentionnons :

  • Tableau Redshift utilisant des définitions de distribution et de clé de tri.
  • Une vue créée avec UNION ALL sur plusieurs bases de données, y compris les objets exposés par le biais de références de type partage de données.

Résolution resolution

Cause première

Les métadonnées de table sont masquées par les autorisations de schéma Redshift

Le chemin d’accès aux métadonnées ODBC Redshift utilisé par Campaign interroge SVV_COLUMNS pour récupérer les définitions de colonne.

Dans le cas concerné :

  • Les requêtes régulières sur la table ont réussi.
  • L’utilisateur de la base de données avait accès aux données de la table.
  • La requête SVV_COLUMNS s’est exécutée sans erreur SQL.
  • SVV_COLUMNS a renvoyé zéro ligne.
  • Campaign n’a donc reçu aucune métadonnée de colonne à afficher.

La cause probable en était une asymétrie des autorisations : l’utilisateur avait un accès SELECT à la table mais ne disposait pas de l’autorisation USAGE sur le schéma parent. Redshift peut autoriser les lectures de tableau lors du filtrage des métadonnées de SVV_COLUMNS lorsque l’utilisation du schéma n’est pas autorisée.

Les vues complexes inter-bases de données ne sont pas exposées via SVV_COLUMNS

En outre, les tables combinées de vues affectées de plusieurs bases de données et les références de style de partage de données utilisées. Le mécanisme de métadonnées utilisé par le connecteur ODBC Redshift repose sur SVV_COLUMNS, mais cette vue système n’a pas exposé les colonnes pour ce type de vue entre bases de données.

Par conséquent, Campaign n’a pas pu remplir le sélecteur de colonnes même si la définition de vue elle-même était valide.

Ce scénario a été considéré comme une fonctionnalité de métadonnées non prise en charge ou incomplète nécessitant une amélioration pour utiliser une autre source de métadonnées Redshift, telle qu’une vue système plus large ou l’API de métadonnées native du pilote ODBC.

Résolution pour les tableaux

Demandez à l’administrateur de la base de données Redshift de vérifier que le même utilisateur de la base de données configuré sur le compte externe Campaign dispose de l’autorisation USAGE sur le schéma parent.

Utilisez les vérifications en lecture seule suivantes avec l’utilisateur de base de données défaillant :

SÉLECTIONNER
    current_database(),
    current_user;

SÉLECTIONNER
    has_schema_privilege(
        current_user,
        '< nom_schéma> ',
        ‘UTILISATION’
    ) AS has_schema_usage ;

SÉLECTIONNER
    column_name,
    data_type
FROM svv_columns
OÙ table_schema = '< schema_name> ’
  AND table_name = '< table_name> ';

Si l’utilisation du schéma est manquante, accordez-la à l’utilisateur de la base de données Campaign :

UTILISATION DES SUBVENTIONS
SUR LE SCHÉMA < schema_name>
POUR < campaign_db_user > ;

L’utilisateur doit toujours conserver les autorisations requises au niveau de la table, par exemple :

ACCORDER LA SÉLECTION
ON TABLE < schema_name> .< table_name>
POUR < campaign_db_user > ;

Après le changement d’autorisation, rouvrez ou actualisez l’activité Chargement des données (SGBD) et vérifiez que la liste des colonnes est renseignée.

L’octroi de l’utilisation sur un schéma permet à l’utilisateur de référencer des objets dans ce schéma. Il n’accorde pas, en lui-même, l’accès aux données des tables.

Résolution ou solution pour les vues complexes

Pour les vues qui ne sont pas représentées dans SVV_COLUMNS, utilisez l’une des méthodes suivantes :

  • Utilisez une table de base ou un schéma pris en charge au lieu de la vue complexe.
  • Utilisez une activité Requête ou un mécanisme de requête externe dans lequel le code SQL peut être fourni directement.
  • Demandez à l’équipe de la base de données d’exposer les données requises par le biais d’un tableau pris en charge ou d’une vue plus simple.
  • Effectuez le suivi de la prise en charge des vues entre bases de données ou partagées comme amélioration du produit.

Dans un test client distinct, l’utilisation d’un chemin de connexion ODBC générique a permis à l’API de métadonnées SQLColumns() native du pilote de renvoyer des colonnes pour lesquelles le chemin de connecteur spécifique à Redshift ne l’était pas. Il peut s’agir d’un diagnostic utile ou d’une solution temporaire, mais elle doit être validée pour l’environnement spécifique avant d’être recommandée en tant que solution permanente.

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