Como criar uma VIEW no Synapse Serverless: passo a passo
Criar uma VIEW no serverless SQL pool do Azure Synapse é a forma mais simples de dar um nome amigável a uma consulta sobre ficheiros guardados no Data Lake. Uma vista é apenas uma consulta guardada: em vez de repetires sempre o caminho do storage e a função OPENROWSET, escreves a lógica uma única vez e passas a consultá-la como se fosse uma tabela normal. Isto reduz erros, uniformiza os nomes das colunas e facilita a vida a toda a equipa que precisa dos dados.
Pré-requisitos
- Um workspace do Azure Synapse Analytics com acesso ao Synapse Studio.
- Uma conta de armazenamento ADLS Gen2 com, pelo menos, um ficheiro Parquet ou CSV (por exemplo,
vendas.parquet). - A permissão Storage Blob Data Reader sobre o contentor, para o teu utilizador conseguir ler os ficheiros.
- Conhecimentos básicos de SQL (
SELECT,FROMeGROUP BY).
Passo 1: Abrir um script SQL no serverless
No Synapse Studio, abre o separador Develop, clica no botão + e escolhe SQL script. No topo do editor, no campo Connect to, seleciona Built-in. Este é o endpoint serverless: não precisas de provisionar nem ligar nada, e só pagas pela quantidade de dados que cada consulta processa. É ideal para explorar ficheiros no Data Lake sem manter infraestrutura ativa.
Passo 2: Criar uma base de dados própria
Não é possível criar vistas na base de dados master do serverless. Por isso, cria primeiro uma base de dados dedicada aos teus objetos. Executa o comando abaixo e, depois, muda o seletor de base de dados (ao lado de Connect to) para AnaliseVendas, para que os próximos comandos corram no sítio certo.
CREATE DATABASE AnaliseVendas;
Passo 3: Testar a consulta com OPENROWSET
Antes de criar a vista, confirma que consegues mesmo ler o ficheiro. A função OPENROWSET lê dados diretamente do Data Lake sem precisares de os carregar para nenhuma tabela. O BULK indica o caminho e o * funciona como wildcard para ler vários ficheiros de uma vez. Substitui o URL pelo endereço da tua conta e contentor.
SELECT TOP 100 *
FROM OPENROWSET(
BULK 'https://aminhaconta.dfs.core.windows.net/dados/vendas/*.parquet',
FORMAT = 'PARQUET'
) AS linhas;
Se aparecerem linhas, o acesso está a funcionar. Se receberes um erro de permissões, revê a atribuição Storage Blob Data Reader do passo anterior — é a causa mais comum.
Dica: com ficheiros CSV, acrescentaPARSER_VERSION = '2.0'e, se a primeira linha tiver cabeçalhos,HEADER_ROW = TRUEdentro doOPENROWSET.
Passo 4: Criar a VIEW
Com a consulta validada, encapsula-a numa vista. O comando CREATE VIEW guarda a definição na base de dados. Nomear as colunas de forma explícita é uma boa prática: torna a vista estável e previsível, mesmo que a ordem das colunas no ficheiro mude no futuro.
CREATE VIEW dbo.vVendas AS
SELECT
linhas.Data,
linhas.Produto,
linhas.Quantidade,
linhas.Total
FROM OPENROWSET(
BULK 'https://aminhaconta.dfs.core.windows.net/dados/vendas/*.parquet',
FORMAT = 'PARQUET'
) AS linhas;
Repara que dentro de uma vista não faz sentido usar TOP nem ORDER BY desnecessários: a vista deve devolver o conjunto completo e deixar a filtragem e a ordenação para quem a consulta.
Passo 5: Consultar a vista
A partir de agora, qualquer pessoa com acesso à base de dados pode consultar os dados sem saber onde estão os ficheiros nem como se chama o contentor:
SELECT Produto, SUM(Total) AS TotalVendido
FROM dbo.vVendas
GROUP BY Produto
ORDER BY TotalVendido DESC;
O caminho do storage fica escondido dentro da vista. Se amanhã mudares a localização dos ficheiros, basta alterar a vista uma vez e todas as consultas continuam a funcionar.
Verificar o resultado
Para confirmar que a vista foi criada com sucesso, consulta o catálogo do sistema:
SELECT name, create_date
FROM sys.views
WHERE name = 'vVendas';
Se a linha aparecer e o SELECT do Passo 5 devolver os totais por produto, está tudo correto. Como validação extra, compara o número de linhas da vista (SELECT COUNT(*) FROM dbo.vVendas) com o que esperavas dos ficheiros de origem.
Conclusão
Com uma VIEW no serverless SQL pool transformaste ficheiros dispersos no Data Lake numa interface simples, reutilizável e fácil de partilhar. É a base para camadas de dados mais organizadas e para dar acesso à equipa sem expor caminhos técnicos. O próximo passo natural é criar vistas sobre dados particionados com a função filepath(), ou definir tipos de dados com a cláusula WITH no OPENROWSET. Que consulta repetes no teu dia-a-dia que ganharia em tornar-se uma vista?