Campaign: colonne Redshift non visibili nel caricamento dei dati di Campaign (RDBMS)
Quando Adobe Campaign utilizza l’attività Caricamento dati (RDBMS) con una connessione ODBC Redshift di Amazon, è possibile che le colonne di tabella o vista non vengano visualizzate nella finestra di dialogo di selezione delle colonne. Il selettore tabelle può funzionare correttamente mentre l’elenco delle colonne rimane vuoto.
Descrizione description
Il problema si verifica durante la configurazione di un’attività di caricamento dati (RDBMS) rispetto a un’origine dati Redshift:
- Selezionare la connessione Redshift.
- Selezionare una tabella o una vista.
- Scegliere Seleziona le colonne per estrarre o aprire il selettore colonne query.
- Nessuna colonna restituita.
Altre tabelle che utilizzano la stessa connessione potrebbero visualizzare correttamente le colonne. Anche le query SQL regolari possono continuare a funzionare, il che indica che la connessione e l’accesso ai dati a livello di tabella non hanno necessariamente esito negativo.
Gli oggetti interessati dall’indagine includevano:
- Una tabella Redshift che utilizza la distribuzione e le definizioni dei tasti di ordinamento.
- Una vista creata con UNION ALL su più database, inclusi gli oggetti esposti tramite riferimenti in stile area dati.
Risoluzione resolution
Causa principale
I metadati della tabella sono nascosti dalle autorizzazioni dello schema Redshift
Il percorso dei metadati ODBC Redshift utilizzato da Campaign interroga SVV_COLUMNS per recuperare le definizioni delle colonne.
Nel caso in questione:
- Query regolari sulla tabella completate.
- L’utente del database ha accesso ai dati della tabella.
- Query SVV_COLUMNS eseguita senza un errore SQL.
- SVV_COLUMNS ha restituito zero righe.
- Campaign non ha pertanto ricevuto metadati di colonna da visualizzare.
La causa probabile era un’asimmetria delle autorizzazioni: l’utente disponeva dell’accesso SELECT alla tabella ma non dell’autorizzazione USAGE per lo schema padre. Redshift può consentire letture di tabelle mentre filtra i metadati da SVV_COLUMNS quando non è consentito l’utilizzo dello schema.
Le viste tra database complesse non sono esposte tramite SVV_COLUMNS
Inoltre, la vista interessata combinava tabelle provenienti da più database e utilizzava riferimenti in stile area dati. Il meccanismo di metadati utilizzato dal connettore ODBC Redshift si basa su SVV_COLUMNS, ma questa vista di sistema non ha esposto le colonne per quel tipo di vista tra database.
Di conseguenza, Campaign non è riuscito a popolare il selettore colonne anche se la definizione di visualizzazione stessa era valida.
Questo scenario era considerato una funzionalità metadati non supportata o incompleta che richiedeva un miglioramento per utilizzare un’altra origine metadati Redshift, ad esempio una vista di sistema più ampia o l’API metadati nativa del driver ODBC.
Risoluzione per tabelle
Chiedere all’amministratore del database Redshift di verificare che lo stesso utente del database configurato sull’account esterno Campaign disponga dell’autorizzazione di UTILIZZO per lo schema padre.
Utilizzare i controlli di sola lettura seguenti con l’utente del database che ha avuto esito negativo:
SELEZIONA
current_database(),
current_user;
SELEZIONA
has_schema_privilege(
current_user,
'< nome_schema> ',
‘UTILIZZO’
) AS has_schema_usage;
SELEZIONA
nome_colonna,
data_type
FROM svv_columns
WHERE schema_tabella = '< nome_schema> ’
AND nome_tabella = '< nome_tabella> ';
Se manca l’utilizzo dello schema, concedilo all’utente del database Campaign:
UTILIZZO DELLA SOVVENZIONE
NELLO SCHEMA < nome_schema>
A < campaign_db_user> ;
L’utente deve comunque mantenere le autorizzazioni a livello di tabella richieste, ad esempio:
CONCEDI SELEZIONE
NELLA TABELLA < nome_schema> .< nome_tabella>
A < campaign_db_user> ;
Dopo la modifica delle autorizzazioni, riapri o aggiorna l’attività di caricamento dati (RDBMS) e verifica che l’elenco delle colonne sia popolato.
La concessione dell’UTILIZZO su uno schema consente all’utente di fare riferimento a oggetti in tale schema. Di per sé non concede l’accesso ai dati della tabella.
Soluzione o soluzione alternativa per le viste complesse
Per le viste non rappresentate in SVV_COLUMNS, utilizzare uno dei seguenti approcci:
- Utilizza una tabella o uno schema di base supportato invece della vista complessa.
- Utilizza un’attività Query o un meccanismo di query esterno in cui l’istruzione SQL può essere fornita direttamente.
- Chiedere al team del database di esporre i dati richiesti tramite una tabella supportata o una visualizzazione più semplice.
- Come miglioramento del prodotto, tieni traccia del supporto per viste basate su più database o dati.
In un test separato condotto da un cliente, l’utilizzo di un percorso di connessione ODBC generico ha consentito all’API dei metadati SQLColumns() nativa del driver di restituire colonne in cui il percorso del connettore specifico per Redshift non lo consentiva. Questa può essere un’utile soluzione diagnostica o temporanea, ma deve essere convalidata per l’ambiente specifico prima di essere consigliata come soluzione permanente.