O que mudou no QuickSight com os Tópicos Multi-Dataset
O Amazon Quick é descrito pela AWS como um serviço de inteligência unificada com recursos de BI (Inteligência de Negócios), consulta em linguagem natural, relatórios e insights baseados em aprendizado de máquina. Dentro desse ecossistema, os Tópicos funcionam como a camada semântica que permite a usuários de negócio fazerem perguntas em linguagem natural e receberem respostas diretas a partir dos dados.
Até recentemente, cada Tópico no QuickSight estava associado a um único dataset — uma tabela desnormalizada e achatada. Isso funcionava bem para casos simples, mas criava limitações sérias para quem trabalha com dados modelados em esquemas relacionais normalizados, como o modelo estrela (star schema). Com a chegada dos Tópicos Multi-Dataset (atualmente em prévia pública), a AWS expande esse modelo: agora é possível adicionar até 12 datasets a um único Tópico e definir relacionamentos entre eles.
O motor de Consulta em Linguagem Natural (NLQ — Natural Language Query) passa a percorrer esses relacionamentos automaticamente ao responder perguntas. Ele interpreta a intenção do usuário, identifica quais datasets contêm as colunas relevantes, constrói os JOINs SQL adequados com base nos relacionamentos definidos e retorna uma resposta unificada — tudo sem que o usuário precise entender o schema subjacente.
Como os Tópicos Multi-Dataset funcionam na prática
A arquitetura da funcionalidade é organizada em quatro camadas principais:
1. Fontes de dados
Os datasets normalizados se conectam ao QuickSight a partir das fontes suportadas. Durante a prévia privada, os Tópicos Multi-Dataset suportavam apenas datasets no SPICE (Motor de Cálculo Super-rápido, Paralelo e em Memória — Super-fast, Parallel, In-memory Calculation Engine). A prévia pública expande o suporte para consulta direta (Direct Query) contra Amazon Redshift, Amazon Athena, Amazon S3 Tables, Snowflake e Databricks. Um ponto importante: não é possível combinar datasets SPICE e Direct Query dentro de um mesmo Tópico.
2. Enriquecimento de datasets
Cada dataset é enriquecido de forma independente com metadados semânticos que melhoram a precisão do NLQ. Esse enriquecimento inclui descrições de colunas, sinônimos (termos alternativos que os usuários de negócio costumam usar), tipos semânticos (Cidade, Estado, Moeda, Data), campos calculados e exclusões de campos. O motor NLQ usa esses metadados para mapear termos em linguagem natural às colunas corretas.
Também é possível trazer datasets já enriquecidos por meio de catálogos do AWS Glue (AWS Glue Data Catalog) e do Databricks Unity Catalog. Por exemplo: quando um usuário pergunta sobre “headcount”, o motor associa esse termo ao sinônimo definido para a coluna correspondente.
3. Tópico Multi-Dataset
O Tópico funciona como o contêiner unificado que reúne os datasets. Ele armazena os datasets (até 12 em prévia), os relacionamentos entre eles (chaves de junção definidas em um arquivo JSON), instruções personalizadas em linguagem natural que orientam o motor de IA na interpretação de termos específicos do negócio, e as permissões de acesso — proprietários podem modificar o Tópico, enquanto visualizadores podem fazer perguntas e usá-lo em análises.
4. Consumo
Os usuários interagem com o Tópico por duas superfícies principais: o chat, onde fazem perguntas em linguagem natural, e as planilhas de análise, onde os autores constroem visuais usando campos de múltiplos datasets. Campos calculados podem referenciar colunas de datasets diferentes, e o motor cuida da lógica de JOIN subjacente.
Como o chat processa perguntas entre datasets
Quando um usuário faz uma pergunta que abrange múltiplos datasets, o motor NLQ executa quatro etapas:
- Interpretação de intenção: identifica quais colunas correspondem aos termos usados pelo usuário, com base em nomes de colunas, descrições e sinônimos do enriquecimento.
- Travessia de relacionamentos: determina o caminho de junção mais curto entre os datasets identificados, seguindo o grafo de relacionamentos definido.
- Geração de SQL: constrói uma query SQL com as cláusulas JOIN, agregações e GROUP BY adequadas.
- Apresentação do resultado: retorna a resposta como visualização ou tabela, com o SQL gerado disponível para inspeção.
Para ilustrar, considere a pergunta: “Mostre o total de vendas por segmento de cliente e região da loja.” O motor mapearia “total de vendas” para SUM(SALES_FACT.SALE_AMOUNT), “segmento de cliente” para CUSTOMER_DIM.SEGMENT e “região da loja” para STORE_DIM.REGION. Em seguida, identificaria os relacionamentos necessários e produziria o seguinte SQL:
SELECT c.SEGMENT AS customer_segment,
s.REGION AS store_region,
SUM(f.SALE_AMOUNT) AS total_sales
FROM SALES_FACT f
JOIN CUSTOMER_DIM c ON f.CUSTOMER_ID = c.CUSTOMER_ID
JOIN STORE_DIM s ON f.STORE_ID = s.STORE_ID
GROUP BY c.SEGMENT, s.REGION
ORDER BY total_sales DESC
O usuário pode inspecionar o SQL gerado por meio do recurso de Explicação, verificando quais datasets e junções foram utilizados.
Implementação passo a passo: cenário de analytics de varejo
A AWS demonstra a funcionalidade com um cenário de varejo para a empresa fictícia AnyCompany, usando cinco datasets modelados em esquema estrela:
- SALES_FACT: dados de vendas no nível de transação, com valores, quantidades, datas e chaves estrangeiras.
- RETURN_FACT: registros de devoluções de produtos com quantidades, motivos e datas.
- CUSTOMER_DIM: atributos de clientes, incluindo nome, segmento, nível de fidelidade e região geográfica.
- PRODUCT_DIM: catálogo de produtos com categoria, marca, custo e fornecedor.
- STORE_DIM: localizações de lojas com cidade, estado, metragem, número de funcionários e metas de receita.
Pré-requisitos
- Conta AWS com Amazon QuickSight Enterprise Edition habilitado.
- Perfil de Autor ou Administrador no QuickSight.
- Datasets representando um esquema estrela, carregados no SPICE ou acessíveis por uma fonte Direct Query suportada.
- Permissões para criar Tópicos e gerenciar datasets.
- Familiaridade com conceitos básicos de modelagem de dados (esquema estrela, tabelas fato e dimensão, chaves de junção).
Enriquecendo cada dataset
O enriquecimento é o que conecta os nomes técnicos das colunas ao vocabulário real dos usuários de negócio. Uma coluna chamada TXN_DT não significa nada para um analista de marketing que pergunta sobre “data de compra” — mas com sinônimos e descrições bem definidos, o motor NLQ consegue fazer essa associação.
Para cada dataset, o processo no console do QuickSight envolve: acessar o dataset, escolher editar, selecionar a aba de saída e, para cada coluna, adicionar descrições, sinônimos e tipos semânticos. Campos internos ou não utilizados — como chaves substitutas, timestamps de auditoria e flags de ETL (Extração, Transformação e Carregamento) — devem ser excluídos. Por fim, salve e publique. Para instruções detalhadas, a AWS disponibiliza a documentação de enriquecimento de datasets.
Como exemplo, o dataset STORE_DIM pode ser enriquecido assim:
- STORE_ID: identificador único de cada loja — sinônimos: Store Number, Store Code, Shop ID — tipo: Identificador.
- LOCATION: cidade onde a loja está localizada — sinônimos: City, Store City, Town, Area — tipo: Cidade.
- REGION: estado dos EUA onde a loja opera — sinônimos: State, Territory, Market — tipo: Estado.
- EMPLOYEE_COUNT: número de funcionários na loja — sinônimos: Headcount, Staff Count, Team Size — tipo: Contagem.
Criando um Tópico com múltiplos datasets
Com os datasets enriquecidos, o próximo passo é criar um Tópico que os combine em uma única camada semântica. No console do QuickSight, navegue até a aba Tópicos, escolha criar um novo Tópico, dê um nome (por exemplo, “Retail Sales Analytics”), adicione uma descrição e selecione todos os datasets relevantes.
Definindo relacionamentos entre datasets
Os relacionamentos informam ao motor NLQ como juntar os datasets quando uma pergunta abrange múltiplas tabelas. Eles são definidos por meio de um arquivo JSON com as chaves de junção entre pares de datasets. No editor do Tópico, acesse a aba Relacionamentos e faça o upload do arquivo. O JSON a seguir representa a configuração do esquema estrela do cenário de exemplo:
{
"datasetPairs": [
{
"datasetLeft": {
"datasetName": "SALES_FACT",
"joinColumnNames": ["CUSTOMER_ID"]
},
"datasetRight": {
"datasetName": "CUSTOMER_DIM",
"joinColumnNames": ["CUSTOMER_ID"]
}
},
{
"datasetLeft": {
"datasetName": "SALES_FACT",
"joinColumnNames": ["PRODUCT_ID"]
},
"datasetRight": {
"datasetName": "PRODUCT_DIM",
"joinColumnNames": ["PRODUCT_ID"]
}
},
{
"datasetLeft": {
"datasetName": "SALES_FACT",
"joinColumnNames": ["STORE_ID"]
},
"datasetRight": {
"datasetName": "STORE_DIM",
"joinColumnNames": ["STORE_ID"]
}
},
{
"datasetLeft": {
"datasetName": "RETURN_FACT",
"joinColumnNames": ["PRODUCT_ID"]
},
"datasetRight": {
"datasetName": "PRODUCT_DIM",
"joinColumnNames": ["PRODUCT_ID"]
}
}
]
}
A recomendação da AWS é modelar os datasets em esquema estrela, com uma ou mais tabelas fato centrais conectadas a tabelas dimensão compartilhadas. Junções circulares e relacionamentos muitos-para-muitos devem ser evitados.
Adicionando instruções personalizadas
As instruções personalizadas funcionam como regras de negócio persistentes que o motor NLQ aplica a todas as perguntas. Sem elas, o motor interpreta os termos de forma literal — por exemplo, “este ano” seria interpretado como ano calendário. Se a organização usa ano fiscal iniciando em abril, é necessária uma instrução específica para sobrescrever esse comportamento padrão.
Exemplos de instruções úteis:
- “O ano fiscal começa em 1º de abril. Interprete ‘este ano’ usando os limites do ano fiscal.”
- “Clientes ativos são aqueles com pelo menos uma compra nos últimos 90 dias.”
- “Quando ‘vendas’ for mencionado sem qualificação, use net_sales_amount como padrão.”
- “Taxa de devolução = contagem de itens devolvidos (RETURN_FACT) / total de itens vendidos (SALES_FACT), em percentual.”
Publicando e compartilhando o Tópico
Após configurar o Tópico, ele pode ser publicado e compartilhado com usuários de negócio. As permissões são definidas em dois níveis: Proprietário (pode perguntar, modificar e usar em análises) e Visualizador (pode perguntar e usar em análises, mas não modificar a configuração). O QuickSight mantém os controles de segurança em nível de linha (RLS — Row-Level Security) e em nível de coluna (CLS — Column-Level Security) definidos nos datasets, preservando os controles de acesso mesmo através da camada semântica do Tópico.
Usando o Tópico em análises e no chat
Em planilhas de análise, os autores podem criar uma análise a partir do Tópico, selecionar campos de múltiplos datasets e criar campos calculados que referenciam colunas de datasets diferentes.
No chat NLQ, o Tópico fica disponível automaticamente como contexto. Exemplos de perguntas que o motor consegue responder usando os relacionamentos definidos:
- “Resumir o tópico?”
- “Análise de devoluções”
- “Mostrar tendência da taxa de devolução como % da quantidade?”
O SQL gerado pelo chat demonstra os JOINs entre múltiplos datasets em ação — e pode ser inspecionado pelo usuário para verificação.
Limpeza de recursos
Para evitar cobranças contínuas após experimentar a funcionalidade, a AWS recomenda excluir os recursos criados, como perfis do AWS Identity and Access Management (IAM), fontes de dados do QuickSight e políticas associadas.
Conclusão
Os Tópicos Multi-Dataset representam uma evolução importante no QuickSight: agora é possível construir uma camada semântica unificada sobre múltiplos datasets normalizados sem precisar pré-juntar ou duplicar dados. Ao definir relacionamentos via chaves de junção, enriquecer cada dataset com metadados semânticos e adicionar instruções personalizadas, o motor NLQ ganha o contexto necessário para responder perguntas cruzadas entre datasets com precisão.
O modelo em esquema estrela é preservado, a duplicação de dados é reduzida e os administradores passam a ter uma superfície centralizada para gerenciar definições de negócio. Os usuários finais recebem respostas mais ricas pelo chat e pelas análises — sem precisar entender JOINs ou SQL.
Para explorar a funcionalidade, a AWS disponibiliza a documentação oficial sobre Tópicos no QuickSight. Para discussões adicionais, a Comunidade Amazon QuickSight é um bom ponto de partida. Para um olhar aprofundado sobre diferentes cenários de modelagem, vale conferir o post Melhores Práticas de Modelagem de Dados para Relacionamentos Multi-Dataset no Amazon QuickSight.
Fonte
Build a unified semantic layer across datasets with multi-dataset Topics in Amazon Quick (https://aws.amazon.com/blogs/machine-learning/build-a-unified-semantic-layer-across-datasets-with-multi-dataset-topics-in-amazon-quick/)
Leave a Reply