Kampagne: Redshift-Spalten werden beim Laden von Kampagnendaten (RDBMS) nicht angezeigt

Wenn Adobe Campaign die Aktivität Laden (DBMS) mit einer Amazon Redshift ODBC-Verbindung verwendet, werden Tabellen- oder Ansichtsspalten möglicherweise nicht im Spaltenauswahldialogfeld angezeigt. Die Tabellenauswahl kann ordnungsgemäß funktionieren, während die Spaltenliste leer bleibt.

Beschreibung description

Das Problem tritt auf, wenn eine RDBMS-Aktivität (Data Loading) für eine Redshift-Datenquelle konfiguriert wird:

  • Redshift-Verbindung auswählen.
  • Tabelle oder Ansicht auswählen.
  • Wählen Sie die zu extrahierenden Spalten aus oder öffnen Sie die Spaltenauswahl der Abfrage.
  • Keine Spalten zurückgegeben.

Andere Tabellen, die dieselbe Verbindung verwenden, zeigen ihre Spalten möglicherweise korrekt an. Reguläre SQL-Abfragen können auch weiterhin funktionieren. Dies bedeutet, dass die Verbindung und der Datenzugriff auf Tabellenebene nicht unbedingt fehlschlagen.

Die Untersuchung betraf unter anderem folgende Objekte:

  • Eine Redshift-Tabelle unter Verwendung von Verteilungs- und Sortierschlüsseldefinitionen.
  • Eine mit UNION ALL erstellte Ansicht für mehrere Datenbanken, einschließlich Objekten, die über Verweise im Datenfreigabestil verfügbar gemacht werden.

Lösung resolution

Ursache

Tabellenmetadaten werden durch Redshift-Schemaberechtigungen ausgeblendet

Der von Campaign verwendete Redshift ODBC-Metadatenpfad fragt SVV_COLUMNS ab, um Spaltendefinitionen abzurufen.

Im betroffenen Fall:

  • Reguläre Abfragen der Tabelle waren erfolgreich.
  • Der Datenbankbenutzer hatte Zugriff auf die Tabellendaten.
  • Die Abfrage SVV_COLUMNS wird ohne SQL-Fehler ausgeführt.
  • SVV_COLUMNS hat null Zeilen zurückgegeben.
  • Campaign erhielt daher keine anzuzeigenden Spaltenmetadaten.

Die wahrscheinliche Ursache war eine Berechtigungsasymmetrie: Der Benutzer hatte SELECT-Zugriff auf die Tabelle, aber keine Nutzungsberechtigung für das übergeordnete Schema. Redshift kann das Lesen von Tabellen beim Filtern von Metadaten aus SVV_COLUMNS zulassen, wenn die Schemanutzung nicht gewährt wird.

Komplexe datenbankübergreifende Ansichten werden nicht über SVV_COLUMNS verfügbar gemacht

Darüber hinaus kombiniert die betroffene Ansicht Tabellen aus mehreren Datenbanken und verwendet DataShare-Stilverweise. Der vom Redshift ODBC-Connector verwendete Metadatenmechanismus beruht auf SVV_COLUMNS, aber diese Systemansicht hat die Spalten für diesen Typ der datenbankübergreifenden Ansicht nicht verfügbar gemacht.

Daher konnte Campaign die Spaltenauswahl nicht mit Daten füllen, obwohl die Ansichtsdefinition selbst gültig war.

Dieses Szenario wurde als nicht unterstützte oder unvollständige Metadatenfunktionalität betrachtet, die eine Verbesserung zur Verwendung einer anderen Redshift-Metadatenquelle erforderte, z. B. eine umfassendere Systemansicht oder die native Metadaten-API des ODBC-Treibers.

Auflösung für Tabellen

Bitten Sie den Redshift-Datenbankadministrator, sicherzustellen, dass derselbe Datenbankbenutzer, der im externen Campaign-Konto konfiguriert ist, über die Berechtigung NUTZUNG für das übergeordnete Schema verfügt.

Verwenden Sie die folgenden schreibgeschützten Prüfungen mit dem fehlerhaften Datenbankbenutzer:

AUSWÄHLEN
    current_database(),
    current_user;

AUSWÄHLEN
    has_schema_privilege(
        current_user,
        '< schema_name> ',
        ‘NUTZUNG’
    ) as a_schema_usage;

AUSWÄHLEN
    column_name,
    data_type
FROM svv_columns
WHERE table_schema = '< schema_name> ’
  AND table_name = '< table_name> ';

Wenn die Schemanutzung fehlt, gewähren Sie sie dem Campaign-Datenbankbenutzer:

NUTZUNG GEWÄHREN
ON SCHEMA < schema_name>
< von campaign_db_user> ;

Der Benutzer muss weiterhin die erforderlichen Berechtigungen auf Tabellenebene beibehalten, z. B.:

AUSWAHL ERTEILEN
ON TABLE < schema_name> .< table_name>
< von campaign_db_user> ;

Öffnen oder aktualisieren Sie nach der Berechtigungsänderung die Aktivität Laden (DBMS) erneut und überprüfen Sie, ob die Spaltenliste ausgefüllt ist.

Durch die Gewährung der Nutzung für ein Schema kann der Benutzer auf Objekte in diesem Schema verweisen. Sie allein gewährt keinen Zugriff auf Tabellendaten.

Auflösung oder Problemumgehung für komplexe Ansichten

Verwenden Sie für Ansichten, die nicht in SVV_COLUMNS dargestellt werden, einen der folgenden Ansätze:

  • Verwenden Sie eine unterstützte Basistabelle oder ein unterstütztes Schema anstelle der komplexen Ansicht.
  • Verwenden Sie eine Abfrageaktivität oder einen externen Abfragemechanismus, bei dem die SQL direkt bereitgestellt werden kann.
  • Bitten Sie das Datenbank-Team, die erforderlichen Daten über eine unterstützte Tabelle oder eine einfachere Ansicht anzuzeigen.
  • Tracking der Unterstützung für datenbankübergreifende oder datenfreigabegestützte Ansichten als Produktverbesserung.

In einem separaten Kundentest ermöglichte die Verwendung eines generischen ODBC-Verbindungspfads der nativen SQLColumns()-Metadaten-API des Treibers, Spalten zurückzugeben, bei denen der Redshift-spezifische Connector-Pfad nicht zurückgegeben wurde. Dies kann eine nützliche Diagnose oder vorübergehende Problemumgehung sein, sollte jedoch für die jeweilige Umgebung validiert werden, bevor sie als dauerhafte Lösung empfohlen wird.

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