O problema que todo time de dados conhece bem
Um dashboard mostra 42.000 visualizações ativas de filmes. Outro exibe 38.500. E o agente de chat cita um terceiro número completamente diferente. Times de dados perdem horas reconciliando métricas em vez de responder perguntas estratégicas — e a confiança na análise vai por água abaixo.
Esse padrão é mais comum do que parece. A causa raiz costuma ser o que se chama de last-mile gap: a lógica de negócio fica dentro de cada aplicação individualmente, em vez de residir na camada de dados, onde todos os sistemas poderiam compartilhá-la.
A AWS publicou um tutorial detalhado mostrando como resolver esse problema combinando as Semantic Views do Snowflake com o Amazon QuickSight. A ideia central é simples: centralizar as definições de negócio na camada de dados para que tanto sistemas de BI quanto de IA consultem as mesmas regras.
O que é uma Semantic View no Snowflake
Uma Semantic View é um objeto de schema nativo do Snowflake que anexa definições de negócio diretamente aos dados — tabelas, relacionamentos, métricas e dimensões. Qualquer aplicação que consulte essa view herda automaticamente as mesmas definições. O resultado prático: sistemas de BI e IA interpretam as informações de forma uniforme, o que aumenta a confiabilidade das respostas e reduz significativamente o risco de alucinações em modelos de linguagem.
As Semantic Views podem ser usadas no Cortex Analyst e consultadas diretamente via SELECT. Elas também podem ser compartilhadas em listagens privadas do Snowflake. Por serem objetos nativos de schema, têm controles de acesso no nível do objeto — é possível conceder ou restringir permissões de uso e consulta da mesma forma que se faz com tabelas e views comuns. Para aprender a escrever Semantic SQL, a documentação oficial do Snowflake tem exemplos detalhados.
Arquitetura da solução
A integração funciona da seguinte forma: dados estruturados são ingeridos do Amazon Simple Storage Service (S3) para o Snowflake. Em cima desses dados, define-se uma Semantic View com SQL, adicionando relacionamentos, dimensões e métricas. A partir daí, tanto o Cortex Analyst (para consultas em linguagem natural) quanto o Amazon QuickSight (para dashboards interativos) consultam essa mesma camada semântica.
O ponto-chave da arquitetura é que o modelo semântico sai das camadas individuais de BI ou IA e passa a viver na plataforma central de dados. Todas as ferramentas passam a usar os mesmos conceitos semânticos, eliminando divergências.
Pré-requisitos para o tutorial
Antes de começar, é necessário ter em mãos:
- Conta Snowflake Enterprise na AWS. Quem não tiver pode criar uma conta trial do Snowflake selecionando a opção Enterprise na AWS.
- Acesso com a role
ACCOUNTADMINno Snowflake — necessária para criar Semantic Views e conceder privilégios. - Conta na AWS. Quem não tiver pode criar uma conta AWS.
- Alinhamento de região: ambas as contas devem estar em US West (Oregon) ou US East (N. Virginia). O Amazon QuickSight também está disponível em Asia Pacific (Sydney) e Europe (Ireland). Consulte a documentação do Amazon QuickSight para disponibilidade regional atualizada.
- Familiaridade básica com SQL e Python.
O tutorial leva entre 60 e 90 minutos para ser concluído do início ao fim. O custo estimado é inferior a US$ 10 combinando AWS e Snowflake.
Passo a passo da integração
Passo 1: Configurar o ambiente Snowflake e carregar os dados
O tutorial usa o Snowsight, a interface web do Snowflake, para importar e executar um notebook pré-construído. O notebook cria automaticamente o warehouse de computação, o banco de dados e o schema, além de carregar os dados de avaliações de filmes — sem necessidade de executar SQL manualmente.
O notebook SF_Quick_Quickstart.ipynb está disponível no repositório GitHub do projeto. Após importá-lo no Snowsight, basta executar todas as células em sequência. O notebook provisiona o warehouse WORKSHOPWH e carrega os dados no banco MOVIES. Ao final, devem aparecer três tabelas no schema MOVIES.PUBLIC: MOVIES, USERS e RATINGS.
Se alguma célula falhar, vale verificar se a role ativa é ACCOUNTADMIN. Isso pode ser definido com o comando:
USE ROLE ACCOUNTADMIN;
Passo 2: Definir a Semantic View e exportar o DDL
Após a execução bem-sucedida de todas as células, é necessário localizar a célula Get_SV_DDL no notebook. Ela executa o seguinte SQL para recuperar o DDL (Linguagem de Definição de Dados) da Semantic View:
SELECT TO_VARCHAR(GET_DDL(
'SEMANTIC_VIEW',
'MOVIES.PUBLIC.MOVIE_ANALYTICS_SV'
));
Após executar essa célula, é preciso baixar o resultado como CSV e salvar o arquivo como SF_DDL.csv. Esse arquivo será necessário no Passo 4 para gerar automaticamente o dataset no QuickSight. Sem ele, o script gerador não consegue interpretar o schema.
Passo 3: Explorar os dados com o Cortex Analyst
Com a Semantic View criada, já é possível consultar os dados em linguagem natural — sem escrever SQL. Essa etapa serve para verificar se a camada semântica está funcionando corretamente antes de conectar o QuickSight.
No Snowsight, basta acessar a seção AI & ML e navegar até a Semantic View MOVIES_ANALYST_SV. Uma prática recomendada é adicionar verified queries — perguntas de exemplo com respostas confirmadas como corretas. Elas servem de referência para o Cortex Analyst ao responder perguntas formuladas de maneira similar, melhorando a precisão e reduzindo a latência das consultas.
Exemplos de perguntas para testar:
- “Show me the total rating values by movie title”
- “List the top 10 most popular movies of all time”
Para quem quiser consultar a Semantic View diretamente via SQL, a documentação do Snowflake traz exemplos de consultas em Semantic Views.
Passo 4: Criar o dataset no Amazon QuickSight
Com os dados semanticamente definidos no Snowflake, o próximo passo é conectá-los ao QuickSight. O tutorial oferece duas opções para isso:
Opção 1 — Executar o pacote Python localmente: baixe a solução completa do repositório GitHub e siga as instruções do README.md para conectar ao Snowflake, buscar a definição da Semantic View, converter essa definição em schema do QuickSight e criar o dataset. Os scripts Python são interativos e guiam o usuário pelo processo.
Opção 2 — Executar os scripts no AWS CloudShell: baixe o arquivo Solution_Package.zip do repositório GitHub, abra o console da AWS e acesse o AWS CloudShell. Faça o upload do arquivo pelo menu Actions → Upload file.
Em seguida, execute os passos na seguinte ordem:
Descompactar e entrar no diretório:
unzip Solution_Package.zip
cd Solution_Package
Fazer o upload do arquivo SF_DDL.csv gerado no Passo 2, criar um secret na AWS para armazenar as credenciais do Snowflake:
python create_secret.py
E então executar o workflow interativo:
python run_workflow.py
O script guia o usuário pela seleção ou criação de uma fonte de dados Snowflake, configuração do dataset, parsing do SF_DDL.csv, criação do dataset com ingestão SPICE e monitoramento do progresso até a conclusão.
Passo 5: Construir o dashboard no Amazon QuickSight
Após a conclusão da ingestão, basta acessar o console do Amazon QuickSight, navegar até Datasets, selecionar o movie-analytics-dataset e escolher Create analysis.
O QuickSight permite fazer perguntas em linguagem natural e gera visualizações automaticamente. Exemplos de perguntas para explorar:
- “Show me the highest-rated movies” — gera um gráfico de barras com filmes por nota média
- “What are the top 10 most-reviewed movies?” — exibe uma lista ranqueada por volume de avaliações
- “How do ratings distribute across genres?” — produz uma análise por gênero
- “Show me the trend of ratings over time” — cria um gráfico de linha com a atividade de avaliações ao longo do tempo
- “Which users have submitted the most reviews?” — destaca os avaliadores mais ativos
Como a Semantic View já define as métricas e dimensões centrais, é possível criar campos calculados no QuickSight que se constroem sobre essas definições governadas. Um exemplo prático: criar um campo rating_category com a fórmula:
ifelse({user_rating} >= 4, 'High', {user_rating} >= 2.5, 'Medium', 'Low')
Esse campo pode ser usado para segmentar visualizações — por exemplo, um gráfico de pizza mostrando a proporção de avaliações High, Medium e Low.
Validando a consistência entre as ferramentas
Uma etapa importante do tutorial é verificar se os números batem entre o Cortex Analyst e o QuickSight. Para isso, basta fazer a mesma pergunta nas duas ferramentas — por exemplo, “What is the average rating for the top 5 most-reviewed movies?” — e confirmar que os valores são idênticos. Se houver divergências, vale checar se há filtros adicionais ou regras de segurança em nível de linha aplicados em apenas uma das ferramentas, e se ambas estão usando a mesma lógica de agregação.
Essa validação cruzada reforça a proposta central da solução: uma única camada semântica que entrega respostas consistentes independentemente da ferramenta que está fazendo a pergunta.
Limpeza dos recursos
Após o tutorial, recomenda-se remover os recursos criados para evitar custos desnecessários.
No Snowflake:
DROP DATABASE IF EXISTS ;
-- Boa prática: suspender primeiro para aguardar queries em andamento
ALTER WAREHOUSE IF EXISTS SUSPEND;
DROP WAREHOUSE IF EXISTS ;
Na AWS: remover os secrets no AWS Secrets Manager, deletar os datasets e fontes de dados no QuickSight, e excluir análises e dashboards pelo console.
Próximos passos sugeridos
O tutorial apresenta uma base funcional que pode ser expandida de várias formas:
- Ampliar a Semantic View: adicionar mais métricas, dimensões ou verified queries para cobrir novas perguntas de negócio.
- Aplicar o padrão aos seus próprios dados: substituir o dataset de filmes pelos dados da sua organização no Amazon S3. O mesmo notebook e workflow de geração se aplicam a qualquer dataset tabular.
- Compartilhar Semantic Views entre times: por serem objetos nativos do Snowflake com controles de acesso, as Semantic Views podem ser distribuídas para outras contas via Snowflake Data Sharing em listagens privadas.
- Explorar recursos avançados do QuickSight: campos calculados, data stories e análises what-if para aprofundar os insights habilitados pela camada semântica.
- Conhecer os padrões abertos: o Snowflake lidera a iniciativa Open Semantic Interchange (OSI), uma colaboração para criar um padrão vendor-agnostic para dados semânticos.
Fonte
AI-powered BI with Snowflake and Amazon Quick (https://aws.amazon.com/blogs/machine-learning/ai-powered-bi-with-snowflake-and-amazon-quick/)
Leave a Reply