Esta é a parte 3 da série sobre arquitetura medalhão no Microsoft Fabric. Na parte 2 carregamos o CSV na bronze. Agora vamos criar a camada silver, conectá-la à bronze com um atalho e ler o arquivo em um notebook.
Em uma frase: a silver enxerga os dados da bronze por um atalho, sem copiá-los, e um notebook lê esse arquivo.

A camada silver
Na silver, o dado bruto vira dado confiável: sem duplicados, com os tipos corretos e os nulos tratados. Antes de tratar, porém, precisamos de acesso aos dados da bronze.
Crie um segundo lakehouse no workspace, como fizemos na parte 2: Novo item, Lakehouse, com o nome lh_silver. Ele terá a mesma estrutura do lh_bronze: Files e Tables.
Atalho: referenciar sem copiar
Em vez de copiar o arquivo da bronze para a silver, vamos usar um atalho (shortcut). Um atalho é uma referência para um dado que está em outro lugar. Ele não copia nada.

Isso traz vantagens:
- Menos armazenamento: o dado existe uma vez só.
- Sem movimentação: não há processo de cópia para manter ou esperar.
- Dado sempre atual: o que muda na bronze já aparece na silver.
Criando o atalho
Veja o passo a passo animado:

Os passos abaixo seguem as telas do Fabric, na ordem. Os prints são da interface em português.
1. Abra o menu e escolha a fonte. No lh_silver, clique nos três pontinhos ao lado de Files e escolha Novo atalho (ou New shortcut, dependendo do idioma). Em fontes internas, escolha Microsoft OneLake.

2. Escolha o lakehouse de origem. Selecione o lh_bronze.

3. Marque a pasta. Em Files, marque a pasta dados_vendas e clique em Avançar.

4. Ignore a transformação. Na etapa Transformar, clique em Ignorar. O Fabric oferece converter os dados para Delta, mas vou manter o CSV original e fazer essa conversão depois, na própria silver. Em seguida, conclua a criação.

Resultado
No lh_silver, em Files, aparece a pasta dados_vendas, igual à da bronze, mas com um ícone de link. É o sinal de que ela é um atalho: ao abrir, você vê o vendas_raw.csv, que está fisicamente na bronze.

Notebook: lendo o CSV na silver
Com o atalho pronto, o próximo passo é ler o arquivo. Para isso uso um notebook, onde escrevo código em PySpark.
Criando e vinculando o notebook
Veja o passo a passo animado:

1. Crie o notebook. No workspace, clique em Novo item e escolha Notebook. Dê um nome que diga o que ele faz. O meu é nb_transformacao_silver.
2. Adicione o lakehouse. No painel Itens de dados, clique em Adicionar itens de dados e escolha Do catálogo do OneLake.

3. Selecione o lh_silver. Marque o lh_silver e confirme.

4. Confira o vínculo. O lh_silver aparece no painel do notebook, com Tables e Files.

Esse vínculo é importante: o lakehouse vinculado passa a ser o padrão do notebook, e é isso que permite usar caminhos relativos como Files/dados_vendas/... no código.
Lendo o arquivo
Na primeira célula do notebook, rode:
# Célula 1: Leitura dos dados a partir do OneLake Shortcut
caminho_shortcut = "Files/dados_vendas/vendas_raw.csv"
df_raw = (
spark.read.format("csv")
.option("header", "true")
# inferSchema é prático para estudo, mas faz o Spark percorrer os dados para
# descobrir os tipos. Com muitos dados, prefira definir o schema manualmente.
.option("inferSchema", "true")
.load(caminho_shortcut)
)
print("Schema detectado automaticamente:")
df_raw.printSchema()
print("Dados brutos carregados:")
display(df_raw)
O que o código faz:
caminho_shortcut: o caminho do arquivo, passando pelo atalho. O notebook lê o CSV da silver, mas o arquivo continua fisicamente na bronze.format("csv"): informa o formato do arquivo.header = true: a primeira linha é o cabeçalho, e não um registro.inferSchema = true: o Spark examina os dados e descobre o tipo de cada coluna (inteiro, decimal, data, texto).printSchema(): mostra a estrutura inferida.display(df_raw): mostra os registros carregados.
Repare no comentário sobre o inferSchema: aqui ele tem fins didáticos. Em um projeto real, definir o schema manualmente é mais performático.
Execute o código no seu notebook e confira o resultado: primeiro o schema que o Spark inferiu (nome e tipo de cada coluna) e depois a tabela com os registros. Compare os tipos com o conteúdo do CSV e veja se o Spark acertou. Os problemas do arquivo (valor nulo e transação duplicada) ainda estão lá.
Perguntas frequentes
O que acontece se eu apagar o atalho?
Nada acontece com os dados. O atalho é um objeto independente do destino: ao apagá-lo, os arquivos continuam na bronze. Já mover ou renomear a pasta de destino pode quebrar o atalho.
O atalho copia os dados da bronze para a silver?
Não. O atalho é apenas uma referência. O dado existe uma vez só, na bronze, e qualquer mudança feita lá já aparece na silver.
Por que o atalho precisa apontar para uma pasta?
Porque o atalho é criado sobre pastas, e não sobre arquivos soltos. Por isso o CSV ficou dentro da subpasta dados_vendas na bronze.
Por que o CSV da silver não aparece como tabela?
Porque o atalho está na área Files, e nessa área os dados ficam como arquivos: o Fabric só descobre tabelas automaticamente em Tables. Para ter uma tabela, vamos converter o CSV em Delta na parte 4.
Por que o notebook precisa estar vinculado ao lh_silver?
O lakehouse vinculado vira o padrão do notebook, e é isso que permite usar caminhos relativos como Files/dados_vendas/... sem informar o endereço completo.
Para ir além (documentação da Microsoft)
Resumo
- Criamos o lh_silver, com a mesma estrutura do lh_bronze.
- Um atalho na pasta
Filesda silver aponta paradados_vendasna bronze, sem copiar dados. - Criamos o notebook
nb_transformacao_silvere o vinculamos ao lh_silver, que passa a ser o lakehouse padrão. - Lemos o CSV com PySpark, passando pelo atalho.
Na parte 4, vamos tratar os dados e gravá-los como tabela Delta.