Usar visualizações do Catálogo de Dados no Athena - Amazon Athena

Usar visualizações do Catálogo de Dados no Athena

A criação de visualizações do catálogo de dados no Amazon Athena exige uma instrução CREATE VIEW especial. Consultá-las usa a sintaxe SELECT do SQL convencional. As visualizações do Catálogo de Dados também são chamadas de visualizações de vários dialetos, ou MDVs.

Criar uma visualização do Catálogo de Dados

Para criar uma visualização do Catálogo de Dados no Athena, use a sintaxe a seguir.

CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW view_name SECURITY DEFINER [ SHOW VIEW JSON ] AS athena-sql-statement
nota

A opção SHOW VIEW JSON se aplica somente às visualizações do Catálogo de Dados, e não às visualizações do Athena. O uso da opção SHOW VIEW JSON inicia uma "execução seca" que valida a entrada e, se a validação for bem-sucedida, retornará o JSON do objeto da tabela AWS Glue que representará a visualização. A visualização real não é criada. Se a opção SHOW VIEW JSON não for especificada, as validações serão feitas e a exibição será criada normalmente no Catálogo de Dados.

O exemplo de sintaxe apresentado a seguir mostra como um usuário do perfil Definer cria a visualização orders_by_date do Catálogo de Dados. O exemplo pressupõe que o perfil Definer tenha permissões SELECT completas na tabela orders no banco de dados default.

CREATE PROTECTED MULTI DIALECT VIEW orders_by_date SECURITY DEFINER AS SELECT orderdate, sum(totalprice) AS price FROM orders WHERE order_city = 'SEATTLE' GROUP BY orderdate

Para obter informações sobre sintaxe, consulte CREATE PROTECTED MULTI DIALECT VIEW.

Consulta de uma visualização do Catálogo de Dados

Depois que a visualização for criada, o admin do Lake Formation poderá conceder permissões SELECT na visualização do Catálogo de Dados para as entidades principais do Invoker. Em seguida, as entidades principais do Invoker poderão consultar a visualização sem ter acesso às tabelas subjacentes básicas referenciadas pela visualização. Veja a seguir um exemplo de consulta do Invoker.

SELECT * from orders_by_date where price > 5000

Considerações e limitações

A maioria das limitações de visualização a seguir do Catálogo de Dados são específicas do Athena. Para ver limitações adicionais das visualizações do Catálogo de Dados que se também aplicam a outros serviços, consulte a documentação do Lake Formation.

  • As visualizações do catálogo de dados não podem referenciar outras visualizações, links de recursos de banco de dados ou links de recursos de tabela.

  • É possível fazer referência a até dez tabelas na definição de visualização.

  • As tabelas não devem ter a permissão de data lake IAMAllowedPrincipals no Lake Formation. Se presente, o erro Visualizações de vários dialetos só podem fazer referência a tabelas sem permissões de IAMAllowedPrincipals permissions ocorrerá.

  • A localização da tabela no Amazon S3 deve ser registrada como uma localização de data lake do Lake Formation. Se a tabela não estiver registrada dessa forma, o erro Visualizações de vários dialetos só podem fazer referência a tabelas gerenciadas pelo Lake Formation ocorrerá. Para obter informações sobre como registrar locais do Amazon S3 no Lake Formation, consulte Registrar um local do Amazon S3 no Guia do desenvolvedor do AWS Lake Formation.

  • As chamadas das APIs GetTables e SearchTables do AWS Glue não atualizam o parâmetro IsRegisteredWithLakeFormation. Para visualizar o valor correto para o parâmetro, use a API GetTable do AWS Glue. Para obter mais informações, consulte As APIs GetTables e SearchTables não atualizam o valor do parâmetro IsRegisteredWithLakeFormation no Guia do desenvolvedor do AWS Lake Formation.

  • A entidade principal DEFINER pode ser somente um perfil do IAM.

  • O perfil DEFINER deve ter permissões SELECT completas (concedíveis) nas tabelas subjacentes.

  • Não há suporte para as visualizações UNPROTECTED do Catálogo de Dados.

  • Não há suporte para as funções definidas pelo usuário (UDFs) na definição de visualização.

  • As fontes de dados federadas do Athena não podem ser usadas em visualizações do Catálogo de Dados.

  • As visualizações do Catálogo de Dados não têm suporte para metastores externos do Hive.

  • O Athena exibe uma mensagem de erro quando detecta visualizações obsoletas. Uma exibição obsoleta é relatada quando um dos seguintes itens ocorrer:

    • A exibição faz referência a tabelas ou bancos de dados que não existem.

    • Uma alteração de esquema ou metadados é feita em uma tabela referenciada.

    • Uma tabela referenciada é descartada e recriada com um esquema ou uma configuração diferente.

Permissões

As visualizações do Catálogo de Dados requerem três perfis: Lake Formation Admin, Definer e Invoker.

  • Lake Formation Admin: tem acesso para configurar todas as permissões do Lake Formation.

  • Definer: cria a visualização do Catálogo de Dados. O perfil Definer deve ter permissões SELECT completas e concedíveis em todas as tabelas subjacentes às quais a definição de visualização faz referência.

  • Invoker: pode consultar a visualização do Catálogo de Dados ou verificar seus metadados. Para mostrar o invocador de uma consulta, você pode usar a função invoker_principal() do DML. Para ter mais informações, consulte invoker_principal().

As relações de confiança do perfil Definer devem permitir a ação sts:AssumeRole para as entidades principais de serviço do AWS Glue e do Lake Formation. Para obter mais informações, consulte Pré-requisitos para a criação de visualizações no Guia do desenvolvedor do AWS Lake Formation.

As permissões do IAM para o acesso ao Athena também são necessárias. Para ter mais informações, consulte Politicas gerenciadas pela AWS para o Amazon Athena.