O blog da AWS

Obtenha insights dos seus dados armazenados no serviço Amazon S3 utilizando linguagem natural

Muitos clientes utilizam o Amazon Simple Storage Service (S3) como o principal local de armazenamento de dados para a empresa. Porém, os dados por si só não são a garantia de que sua informação está correta. Esta publicação busca como objetivo, ensinar a fazer perguntas utilizando linguagem natural via prompt no serviço Amazon Q para Quicksight utilizando diretamente os seus dados armazenados no sistema de armazenamento Amazon Simple Storage Service (Amazon S3) para receber as respostas por meio de dashboards no próprio serviço Amazon QuickSight agregando maior valor aos seus dados.

Esta publicação utilizara os seguintes serviços AWS:

Amazon Simple Storage Service (S3)
AWS Glue
Amazon Athena
Amazon QuickSight
Amazon Q

Solução técnica

Para a solução, iremos seguir a arquitetura referenciada na figura 1, e executaremos os seguintes passos: 1/ Catalogar os dados existentes através do serviço AWS GLUE. 2/ Realizar as queries nos dados que foram catalogados através do serviço Amazon Athena. 3/ Utilizar o serviço Amazon Q para QuickSight para criar os dashboards desejados utilizando-se de uma linguagem natural via prompt.

Figura 1: Arquitetura de referência da solução

1. Catalogar os dados

Para iniciarmos o processo necessário para catalogar os dados existentes no serviço Amazon S3, usaremos o serviço AWS Glue. Esse serviço tem a capacidade de realizar processos como extração, transformação e carregamento de dados (processos ETL), e de integração de dados com outros serviços da AWS como por exemplo o serviço Amazon Athena. O primeiro passo que faremos no serviço AWS GLUE é criar uma etapa de Crawler dos dados armazenados para inferir o esquema (schema) dos dados e extrair os metadados da nossa fonte de dados (source data), neste caso o serviço Amazon S3.

Para esta demonstração, consideramos que existe um bucket criado no serviço Amazon S3, mas caso precise criar um bucket, clique aqui e será redirecionado para a documentação com instruções detalhadas. À respeito do dataset para este blog, utilizaremos dados fictícios de uma loja que podem ser encontrados dentro da plataforma Kaggle.
https://www.kaggle.com/datasets/vivek468/superstore-dataset-final?resource=download

1.1. Na console AWS, selecione o serviço AWS Glue.

  • Uma vez carregada a página do serviço Glue, clique na opção catálogo de dados (Data Catalog) no menu à esquerda;
  • Em seguida, clique no sub-item base de dados (Databases).

Uma vez selecionada a opção base de dados (Databases), criaremos uma base de dados para armazenar o catálogo de metadados que é gerado a partir da ação Crawler executada pelo serviço AWS Glue. Para criar a base de dados execute os seguintes passos:

  • Clique na opção Adicionar banco de dados (Add Database) em seu lado direito;
  • Preencha o nome do seu banco de dados, por exemplo, “meudatabase”;
  • Clique no botão Create Database em seu canto direito inferior, vide figura 2.

Figura 2: Como criar uma base de dados.

1.2. Uma vez terminada a etapa de criar a base de dados, precisamos fazer a etapa de descobrimento dos dados para popular corretamente suas tabelas.

  • No lado esquerdo da tela, ainda na opção Data Catalog, clique no sub-item Crawlers à esquerda;
  • Depois selecione o botão Create crawler em seu lado direito, vide figura 3.

Figura 3. Como criar uma tarefa crawler.

Agora execute os seguintes passos, vide figura 4:

-> Passo 1.2.1Set crawler properties no menu do lado esquerdo.

  • Defina um nome para o Crawler, por exemplo, “MeuCrawler”, na parte direita de sua console;
  • Clique no botão Next no canto direito inferior da tela.

Figura 4: Passo 1.2.1 – Set crawler properties

-> Passo 1.2.2Choose data sources and classifiers em seu menu do lado esquerdo.

  • Na seção Data source configuration em seu lado direito, para responder a pergunta Is your data already mapped to Glue tables? escolha o botão com a opção Not yet;
  • Na seção Data sources, clique no botão Add a data source e escolha S3 como Data Source;
  • Em seguida, no sub-item S3 path, adicione o caminho completo até a pasta que contém seus dados de interesse na pasta do serviço Amazon S3;
  • Uma vez selecionada a pasta em seu bucket s3, clique no botão Add and S3 data source no canto direito inferior, vide a figura 5.

Figura 5: Passo 1.2.2 – Add and S3 data source

  • Depois de escolher sua pasta s3 como data source, clique no botão Next no canto direito inferior da tela.

-> Passo 1.2.3Configure Security settings em seu menu do lado esquerdo.

  • Na seção IAM role, selecione uma IAM role existente com as permissões necessárias para que o serviço AWS Glue possa ler e escrever na pasta especificada do serviço Amazon S3 ou clique no botão Create new IAM role para criar sua role com as permissões necessárias;
  • Clique no botão Next no canto direito inferior da tela.

-> Passo 1.2.4Set output and scheduling em seu menu do lado esquerdo.

  • Na seção Output configuration – Target Database em seu lado direito, escolha a base de dados que foi criada no passo 1 (meudatabase em nosso exemplo);
  • Para a seção Crawler schedule na parte inferior do lado direito, selecione a frequência como On Demand, que significa que o crawler precisará ser manualmente ativado toda vez que seja necessário realizar a etapa de crawler dos dados, vide figura 6;
  • Clique no botão Next no canto direito inferior da tela.

Figura 6: Passo 1.2.4 – Set output and scheduling

-> Passo 1.2.5Review and create em seu menu do lado esquerdo.

  • Revise as configurações que foram inseridas em seu lado direito;
  • Clique no botão Create crawler no canto inferior direito.

1.3. Agora que finalizamos a criação da etapa de crawler, precisamos executá-lo. Realize os seguintes passos para executar o crawler:

  • Selecione o menu de crawlers à sua esquerda;
  • Pesquise pelo nome do seu crawler (MeuCrawler em nosso exemplo) na caixa de pesquisa na console do lado direito;
  • Selecione a caixa correspondente ao seu crawler e depois clique no botão Run no canto superior à direita;
  • Quando a tarefa crawler terminar de rodar, a informação de State deverá estar com a informação Ready e a informação Tables changes from Last run deverá estar como 1 created.

1.4. Uma vez finalizada a etapa de descobrimento dos dados, vamos verificar os Metadados gerados:

  • Clique novamente na opção catálogo de dados (Data Catalog) no menu à esquerda;
  • Em seguida, clique no sub-item base de dados (Databases);
  • Clique no banco de dados (databases) que foi criado anteriormente (meudatabase no nosso exemplo), à direita de sua página, para visualizar as tabelas e metadados gerados pela etapa de Crawler;
  • Clique em na tabela criada e desça para a parte de baixo da página para visualizar o Schema da tabela em questão.

Figura 7: Verificando o schema da Tabela de metadatos

2. Utilizando o Amazon Athena para filtrar dados:

Agora que temos os dados catalogados, iremos utilizar o serviço Amazon Athena para realizar queries visando filtrar os dados que disponibilizaremos para o serviço Amazon QuickSight.

2.1. No painel de serviços, faça uma busca e depois selecione o serviço Amazon Athena. Selecione Explore the query editor, vide figura 8.

Figura 8. Começar uma consulta em seus dados

2.2. Antes de podermos rodar nossa primeira query, precisamos adicionar um caminho no S3 para guardar os resultados das queries.

  • Clique em Edit settings conforme mostrado na Figura 9.

Figura 9. Configurando um bucket S3 para os resultados das queries

  • Em Manage settings, no campo Location of query result, escolha o caminho para o bucket do Amazon S3 que irá guardar seus resultados.
  • Clique em Save.
  • Clique em Editor, conforme Figura 10, para voltar para o editor SQL.

Figura 10. Abrir o editor SQL

2.3. Criação da Tabela Externa:

  • No editor do Athena, escreva e execute uma query para criar uma tabela externa apontando para os dados no Amazon S3.
  • Neste exemplo, vamos filtrar os dados para incluir apenas os “order dates” a partir de 2015.
  • Copie e cole o seguinte texto no editor, conforme mostrado na Figura 11.

CREATE TABLE “meudatabase”.”dadosdepoisde2015″ WITH (format = ‘parquet’) AS

SELECT *

FROM “AwsDataCatalog”.”meudatabase”.” sample___superstore_csv”

WHERE “order date” >= ’01/01/2015′;

  • Substitua “meudatabase” pelo nome do banco de dados criado no AWS Glue. Substitua “sample___superstore_csv” pelo nome da sua tabela do Glue.

Figura 11. Query no Athena para pegar apenas pedidos com data posterior à 2015.

  • Clique em Run

Uma tabela com o nome escolhido (no nosso exemplo, “dadosdepoisde2015” deve aparecer na lista de tabelas do editor, conforme Figura 12.

Figura 12. Nova tabela filtrada foi criada.

3. Utilizando o Amazon QuickSight para fazer perguntas aos dados utilizando linguagem natural.

3.1. No painel de serviços, selecione “Amazon QuickSight”. Ao logar na sua conta Enterprise, no painel ao lado esquerdo, selecione Datasets.

  • Clique em New Dataset, conforme mostrado na Figura 13.

Figura 13. Criar novo dataset no QuickSight.

3.2. Selecione Athena como a fonte de dados, conforme Figura 14, e conecte ao banco de dados que contém os dados filtrados no passo anterior.

Figura 14. Escolhendo o Athena como nossa fonte de dados.

3.2.1. Escolha um nome para sua fonte de dados Athena, “blogpost” no exemplo, conforme Figura 15. Clique em Create data source

Figura 15. Criando data source

3.2.2. Selecione o database e a tabela que foram criados no passo 2.2, como na Figura 16.

Figura 16. Selecione sua base de dados

  • Confirme a seleção em Select.
  • Clique em Visualize para ver e salvar seus dados.

Uma nova tela irá se abrir para que você possa fazer dashboards e análises interativas com seus dados. Esse não é o foco do nosso tutorial, porém, mais informações podem ser encontradas na documentação oficial clicando aqui.

  • Clique em QuickSight no topo esquerdo da página (vide Figura 17) para voltar para o menu inicial.

Figura 17. Página de criação de análises.

3.3. Agora, precisamos criar um QuickSight Topic. Aqui é onde iremos configurar para que possamos fazer perguntas usando linguagem natural para o nosso conjunto de dados.

=> Clique em Topics conforme mostrado na Figura 18.

Figura 18. Começando um novo tópico.

  • Caso sua conta QuickSight ainda não tenha o QuickSigth Q habilitado, você precisará pedir um free trial para continuar. Mais informações no link.
  • No topo direito da tela, selecione NEW TOPIC.
  • Conforme a Figura 19, adicione um nome para seu tópico (Minhas Perguntas no exemplo abaixo) e depois clique em Continue.

Figura 19. Nomeando seu tópico.

3.4. Na próxima tela, selecione o dataset que acabamos de criar com o Athena (dadosdepoisde2015 no nosso exemplo). Esse passo pode levar alguns minutos para indexar e configurar todos os campos. Quando terminar de carregar, você será redirecionado para um visual vide Figura 20.

Figura 20. Página inicial do tópico.

3.5. Vá para a aba de Dados (Data), e selecione os campos que deseja incluir na análise.

  • Na Figura 21, desselecionamos o campo Row ID e adicionamos um sinônimo para o campo Order Date. Os sinônimos (Synonyms) que são nomes que seus usuários poderão usar para se referir a esse dado.

Figura 21. Customizando seus dados.

3.6. Faça pergunta aos seus dados.

Na Figura 22, está marcado onde poderemos começar a fazer perguntas para nosso conjunto de dados.

Figura 22. Faça uma pergunta para seus dados.

  • Experimente escrever “show me top 5 customer by sales”. Essa pergunta deve retornar os 5 clientes que mais compraram nesse conjunto de dados. Na Figura 23, é possível ver a resposta gerada.

Figura 23. Resposta da pergunta “show me top 5 customer by sales”

O QuickSight irá sugerir algumas perguntas que podem ser respondidas, mas você também poderá criar as suas próprias perguntas.

  •  Caso a resposta tenha sido correta, marque como revisada em Mark as reviewed na parte de baixo da sua resposta.

3.7. Caso não obtenha resultados, você pode mudar os campos que estão sendo considerados pela resposta para poder adequar à sua pergunta, vide Figura 24.

  • No nosso exemplo, clicamos em Change range e ajustamos com as datas referentes ao nosso conjunto de dados.

Figura 24. Ajuste os campos da sua resposta.

3.8. Compartilhe seu tópico com outros usuários.

  • Na aba User Activity, podemos ver a quantidade de perguntas feitas ao seu tópico e quais foram essas perguntas.
  • Clique em Share, conforme mostrado na Figura 25, para compartilhar seu tópico com outros usuários.
  • Adicione o email ou grupo de usuários que deseja compartilhar. Clique em Share.

Quanto mais perguntas e feedbacks das respostas forem recebidas, mais acurado seu tópico ficará.

Figura 25. Compartilhar seu tópico com outros usuários.

Mais informações de como customizar seu tópico podem ser encontradas aqui.

Conclusão

Agora você sabe como fazer perguntas utilizando-se de linguagem natural para o serviço Amazon Q para Amazon QuickSight para criar dashboards e gráficos dos seus dados no Amazon S3. Clique aqui para saber mais sobre o Amazon Q e o Amazon Quicksight.

Autores:

Ana Falcao: Ana Falcão é Arquiteta de Soluções na AWS, trabalhando na construção de ferramentas para clientes internos e externos de maneira escalável e com foco na análise de dados.

Hugo Chimello: Hugo Chimello é um arquiteto de soluções com mais de 5 anos de experiencia em AWS. Com múltiplas certificações AWS, Hugo utiliza seus 9 anos de experiencia no mercado de tecnologia para atender a maior empresa de telecomunicação da América Latina