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.

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

Limitações

As limitações de visualização a seguir do Catálogo de Dados são específicas do Athena. Para ver as limitações nas visualizações do Catálogo de Dados que se aplicam tanto ao Athena quanto a outros serviços, consulte a documentação do Lake Formation.

  • As visualizações do Catálogo de Dados não podem fazer referência a outras visualizações.

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

  • As tabelas subjacentes devem estar registradas no 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.