Campanha: colunas Redshift não visíveis no carregamento de dados da campanha (RDBMS)

Quando o Adobe Campaign usa a atividade de carregamento de dados (RDBMS) com uma conexão ODBC do Amazon Redshift, as colunas de tabela ou exibição podem não aparecer na caixa de diálogo de seleção de coluna. O seletor de tabela pode funcionar corretamente enquanto a lista de colunas permanece vazia.

Descrição description

O problema ocorre ao configurar uma atividade de carregamento de dados (RDBMS) em uma fonte de dados Redshift:

  • Selecione a conexão Redshift.
  • Selecione uma tabela ou exibição.
  • Escolha Selecionar as colunas a serem extraídas ou abra o seletor de colunas de consulta.
  • Nenhuma coluna retornada.

Outras tabelas que usam a mesma conexão podem exibir suas colunas corretamente. Consultas SQL regulares também podem continuar a funcionar, o que indica que a conexão e o acesso a dados no nível da tabela não estão necessariamente falhando.

Os objetos afetados no inquérito incluíam:

  • Uma tabela Redshift usando definições de distribuição e chave de classificação.
  • Uma visualização criada com UNION ALL em vários bancos de dados, incluindo objetos expostos por meio de referências de estilo de datashare.

Resolução resolution

Causa raiz

Os metadados da tabela estão ocultos pelas permissões do esquema Redshift

O caminho de metadados ODBC do Redshift usado pelo Campaign consulta SVV_COLUMNS para recuperar as definições de coluna.

No caso afetado:

  • Consultas regulares na tabela bem-sucedidas.
  • O usuário do banco de dados teve acesso aos dados da tabela.
  • A consulta SVV_COLUMNS foi executada sem um erro SQL.
  • SVV_COLUMNS retornou zero linhas.
  • Portanto, o Campaign não recebeu metadados de coluna para exibir.

A causa provável era uma assimetria de permissões: o usuário tinha acesso SELECT à tabela, mas não tinha permissão USAGE no esquema pai. O Redshift pode permitir leituras de tabela ao filtrar metadados de SVV_COLUMNS quando o uso do schema não é concedido.

Exibições complexas entre bancos de dados não são expostas por meio de SVV_COLUMNS

Além disso, a visualização afetada combinava tabelas de vários bancos de dados e usava referências de estilo de datashare. O mecanismo de metadados usado pelo conector ODBC do Redshift depende de SVV_COLUMNS, mas essa visualização do sistema não expôs as colunas desse tipo de visualização entre bancos de dados.

Como resultado, o Campaign não pôde preencher o seletor de colunas, mesmo que a própria definição da exibição fosse válida.

Este cenário foi considerado um recurso de metadados incompatível ou incompleto que requer um aprimoramento para usar outra fonte de metadados Redshift, como uma visualização mais ampla do sistema ou a API de metadados nativa do driver ODBC.

Resolução para tabelas

Peça ao administrador do banco de dados Redshift para verificar se o mesmo usuário do banco de dados configurado na conta externa do Campaign tem a permissão USAGE no schema pai.

Use as seguintes verificações somente leitura com o usuário do banco de dados com falha:

SELECIONE
    current_database()
    current_user;

SELECIONE
    has_schema_privilégio(
        current_user,
        '< nome_esquema> ',
        ‘USO’
    ) AS has_schema_usage;

SELECIONE
    column_name,
    tipo_de_dados
FROM svv_columns
WHERE table_schema = '< schema_name>
  AND nome_da_tabela = '< nome_da_tabela> ';

Se o uso do schema estiver ausente, conceda-o ao usuário do banco de dados do Campaign:

CONCEDER USO
NO ESQUEMA < nome_esquema>
PARA < campaign_db_user> ;

O usuário ainda deve manter as permissões de nível de tabela necessárias, por exemplo:

CONCEDER SELEÇÃO
NA TABELA < nome_esquema> .< nome_tabela>
PARA < campaign_db_user> ;

Após a alteração da permissão, reabra ou atualize a atividade Data Loading (RDBMS) e verifique se a lista da coluna está preenchida.

Conceder USO em um esquema permite que o usuário faça referência a objetos nesse esquema. Ela, por si só, não concede acesso aos dados da tabela.

Solução ou solução alternativa para exibições complexas

Para exibições que não são representadas em SVV_COLUMNS, use uma das seguintes abordagens:

  • Use uma tabela ou esquema base compatível em vez da exibição complexa.
  • Use uma atividade Query ou um mecanismo de consulta externo, onde o SQL pode ser fornecido diretamente.
  • Solicite à equipe do banco de dados que exponha os dados necessários por meio de uma tabela compatível ou exibição mais simples.
  • Rastreie o suporte para visualizações entre bancos de dados ou armazenamentos de dados como um aprimoramento de produto.

Em um teste de cliente separado, o uso de um caminho de conexão ODBC genérico permitiu que a API de metadados SQLColumns() nativa do driver retornasse colunas em que o caminho do conector específico do Redshift não retornava. Esse diagnóstico pode ser útil ou uma solução temporária, mas deve ser validado para o ambiente específico antes de ser recomendado como uma solução permanente.

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