Views no SQL Server: Simplificando Consultas Complexas no Excel e Power BI
Seja bem-vindo e seja bem-vinda a mais um artigo para o meu blog pessoal.
Um espaço que eu dedico ao compartilhamento de conhecimento técnico, com foco em ferramentas que facilitam o dia a dia de quem trabalha com dados, como SQL Server, Excel e Power BI.
Hoje, vamos mergulhar em um recurso que eu adoro e que pode transformar a forma como você lida com consultas complicadas: as views no SQL Server.
Se você já se pegou reescrevendo a mesma query enorme várias vezes – cheia de subqueries, funções de janela e agregações – para gerar relatórios no Excel ou no Power BI, esse artigo é para você.
Eu sei como é frustrante isso. No meu dia a dia, como analista de treinamento na MLF, eu lido com isso o tempo todo. E, acredite, não é falta de habilidade; é falta de organização. As views vêm para resolver exatamente esse problema, encapsulando toda a complexidade em algo simples de usar e reutilizar.
Vou explicar tudo de forma prática, passo a passo, sem enrolação. Vamos cobrir como criar uma view a partir de uma consulta complexa, documentá-la com ajuda de IA, consumi-la no Excel via Power Query e no Power BI com medidas DAX. No final, você vai ver como um simples “atualizar” mantém tudo fresco e alinhado. Não é mágica, é método – e eu garanto que vai economizar horas do seu tempo.
O Problema Cotidiano: Consultas Complexas e Repetição Infinita
Vamos ser honestos: quem trabalha com SQL Server já passou por isso. Você precisa calcular algo como a média de vendas por cliente, ou o intervalo entre a primeira e a última compra, ou identificar clientes inativos há meses. Para isso, você monta uma query que parece um Frankenstein:
- Subqueries para preparar dados intermediários.
- Funções de janela como
ROW_NUMBER()comPARTITION BYpara numerar registros por cliente. - Agregações com
MIN()eMAX()para pegar datas extremas. DATEDIFF()para calcular diferenças em dias.- Filtros no
HAVINGpara garantir que só venham clientes com pelo menos duas compras.
No vídeo que gravei (e do qual extraí o texto base para este artigo), eu usei exatamente isso para listar clientes com no mínimo duas notas fiscais, mostrando o tempo entre a primeira e a última compra. Funciona? Sim. Mas aí, uma semana depois, o gestor pede: “Faça de novo, mas agora por região, e filtre por período X”. E você? Copia, cola, adapta, salva uma versão nova… Repetição pura.
Eu já fiz isso tantas vezes que me pergunto: por que não encapsular isso tudo? É aí que as views entram. Elas não são novidade – eu uso há anos –, mas muita gente ainda as subestima. E você, já se pegou nessa armadilha? Deixe nos comentários.
O Que é uma View e Por Que Ela Muda o Jogo
Uma view no SQL Server é basicamente uma consulta “salva” com um nome amigável. Pense nela como um apelido para toda aquela lógica complicada. Em vez de expor subqueries e funções para todo mundo (incluindo você mesmo no futuro), você cria uma “tabela virtual” que todo mundo consome como se fosse uma tabela normal.
Benefícios que eu vejo no dia a dia:
- Reutilização total: Escreve uma vez, usa em dezenas de relatórios. No Excel, no Power BI, em qualquer ferramenta conectada.
- Segurança prática: Dá permissão só na view, não nas tabelas base. Ideal para governança em empresas.
- Manutenção centralizada: Altera a view, e todos os relatórios atualizam automaticamente após um refresh.
- Organização mental: Daqui a seis meses, você não vai se perder tentando lembrar o que aquela query fazia.
No meu caso, essa view específica serve para análises de recorrência, fidelização e detecção de inativos – super útil para campanhas de retenção. E o melhor: o usuário final nem precisa saber de SQL. Ele só chama SELECT * FROM MinhaView e pronto.
Documentando a Query com IA: Um Truque que Eu Sempre Uso
Antes de criar a view, eu sempre documento a query. E aqui vai uma dica que mudou minha rotina: use IA para isso. No vídeo, eu copiei a query completa e pedi ao ChatGPT (ou qualquer IA similar) para gerar uma documentação.
O prompt simples que eu uso: “Você é um especialista em SQL Server. Documente essa query: explique o objetivo, o passo a passo e as colunas de saída.” Em segundos, você tem algo como:
“Esta query lista todos os clientes que têm no mínimo duas notas fiscais, mostrando o intervalo de tempo entre a primeira e a última compra. Útil para análise de recorrência, estudo de fidelização e identificação de clientes com longos períodos de inatividade.”
Copie isso para um bloco de comentários no topo do seu script SQL:
/* Objetivo: Lista clientes com ≥2 notas fiscais e intervalo entre primeira e última compra. Útil para recorrência, fidelização e inativos. Passo a passo: – Subquery com ROW_NUMBER() por cliente para numerar compras. – Agregações MIN/MAX para datas extremas. – DATEDIFF para diferença em dias. – HAVING para filtrar ≥2 compras. */
Por quê? Porque documentar manualmente é chato e demorado. Com IA, é rápido e preciso. Não é trapaça – é eficiência. E, se outro colega precisar mexer no código, ele agradece.
Criando a View no SQL Server: Passo a Passo Prático
Com a query testada e documentada, hora de criar a view. Abra o SQL Server Management Studio (SSMS) e use o comando básico:
“`sql CREATE VIEW dbo.VW_Analise_Primeira_Ultima_Nota AS — Cole aqui a sua query completa, SEM o ORDER BY SELECT — Sua lógica de subquery, agregações, etc. FROM — Suas tabelas WHERE — Seus filtros GROUP BY — Agrupamentos HAVING — Condições — Sem ORDER BY aqui! ;
Pontos chave que eu sempre reforço:
- Esquema: Use
dboou o esquema da sua empresa (ex: por departamento). - Nome: Convenção como
VW_ajuda na organização. Seja consistente. - Sem ORDER BY: Views não suportam ordenação na definição (exceto com TOP, mas evite). Ordene ao consumir.
- Teste imediato: Após criar, rode
SELECT TOP 100 * FROM dbo.VW_Analise_Primeira_Ultima_Nota WHERE DiferencaDias > 365 ORDER BY DiferencaDias DESC;. Perfeito!
Se der erro, verifique sintaxe ou permissões. No meu ambiente (banco bd_sql_1 no servidor local NOTEALe), foi suave. Toda a complexidade agora está “escondida” – o usuário só vê colunas limpas como NomeCliente, PrimeiraCompra, UltimaCompra e DiferencaDias.
Consumindo a View no Excel: Power Query Faz o Trabalho Pesado
Agora, o pulo do gato: levar isso para o Excel, ferramenta que eu uso diariamente para análises rápidas. Abra o Excel e siga:
- Conexão: Guia Dados > Obter Dados > De Banco de Dados > De SQL Server.
- Servidor: Seu nome (ex:
NOTEALe). - Banco:
bd_sql_1. - Em Opções Avançadas, cole:
SELECT * FROM dbo.VW_Analise_Primeira_Ultima_Nota;.
- Servidor: Seu nome (ex:
- Power Query Editor: Clique OK e transforme.
- Selecione todas as colunas (
Ctrl + A). - Transformar > Detectar Tipo de Dados (datas viram datas, números viram números).
- Renomeie a query para algo como
VW_Datas. - Opcional: Remova colunas extras ou adicione customizadas (mas evite, já que o SQL fez o grosso).
- Selecione todas as colunas (
- Carregamento Inteligente: Não clique Fechar e Carregar direto. Use Fechar e Carregar Para… > Adicionar ao Modelo de Dados. Isso mantém a planilha limpa e permite tabelas dinâmicas e DAX.
- Atualização: Em Consultas e Conexões, clique direito na query > Atualizar. Dados frescos do SQL, sem esforço.
Eu adoro isso porque o Power Query cuida da ETL (Extração, Transformação, Carga), e você foca na análise. Quer extrair ano da primeira compra? Edite a query e adicione uma coluna personalizada. Simples e poderoso.
No Power BI: Mesma View, Medidas DAX e Visualizações Rápidas
O Power BI é o meu go-to para dashboards. O processo é quase idêntico ao Excel, já que usa Power Query também:
- Conexão: Obter Dados > * Server*.
- Servidor e banco iguais.
- Query:
SELECT * FROM dbo.VW_Analise_Primeira_Ultima_Nota ORDER BY DiferencaDias DESC;(aqui pode ordenar!).
- Editor Power Query: Detecte tipos, renomeie para
Fato_Dados(convenção de tabela fato, pois tem métricas como dias de diferença). - Modelo e Medidas: Carregue e crie uma tabela
Medidas(vazia, só para agrupar).- Nova Medida:
Total Clientes = COUNTROWS(Fato_Dados). - Outra:
Media Geral Diferença Dias = AVERAGE(Fato_Dados[DiferencaDias]).
- Nova Medida:
- Visualizações: Arraste para cartões (ex: total de 610 clientes, média de 365 dias). Adicione tabelas com
NomeClienteeDiferencaDias. Para inativos, filtre >365 dias.
Atualize com um clique, e qualquer mudança na view propaga. No meu teste, os números bateram perfeitamente com o SSMS – arredondamentos e tudo.
Views como Camada de Negócio: Centralize e Desacople
O que eu mais valorizo é o desacoplamento. A view é o “contrato entre o banco e as ferramentas:
- Lógica pesada no SQL (otimizado para isso).
- Excel/Power BI cuidam de visualização e cálculos leves (DAX).
- Mudanças? Só na view. Sem queries duplicadas espalhadas.
Isso melhora performance, governança e colaboração. Em equipes, evite dar acesso direto às tabelas – views protegem dados sensíveis.
Conclusão: Menos Retrabalho, Mais Análise
Resumindo o fluxo que eu mostro nos meus cursos:
- Query complexa no SQL → Documente com IA.
- Crie a view (sem ORDER BY).
- Consuma no Excel (Power Query + Modelo de Dados).
- No Power BI (medidas DAX + visuais).
- Atualize com um clique.
Tecnologia é para liberar tempo para o que importa: análise e decisões. Eu uso views há anos e não volto atrás. E você? Já encapsulou uma query chata em uma view, ou ainda copia e cola? Já testou integrar com Excel/Power BI dessa forma?
Obrigado pela leitura! Se curtiu, compartilhe e comente sua experiência. Até o próximo artigo.
Alessandro Trovato
Compartilhando conhecimento, sempre!

