(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como criar uma Foreign Table em Lakehouse no Microsoft Fabric

João Barros 05 de August de 2026 4 min de leitura

Este tutorial mostra como criar uma Foreign Table no Lakehouse do Microsoft Fabric para consultar dados externos (por exemplo, um ficheiro Parquet ou uma tabela externa). A Foreign Table permite expandir o Lakehouse com fontes externas sem copiar dados, útil para integrar sistemas e reduzir duplicação.

Pré-requisitos

  • Conta com acesso ao Microsoft Fabric e permissões para editar um Lakehouse.
  • Um Lakehouse existente no OneLake ou permissão para criar um novo.
  • Fonte externa acessível (ex.: ficheiro Parquet no OneLake ou endpoint externo com credenciais).
  • Conhecimentos básicos de T-SQL para executar comandos no Notebook ou Warehouse.

Passo 1: Preparar a fonte externa e obter o caminho

Identifique a fonte externa que pretende usar. Se for um ficheiro Parquet no OneLake, copie o caminho relativo no Lakehouse. Se for um endpoint externo, confirme o URL e as credenciais. A Foreign Table cria um apontador lógico para essa localização.

Passo 2: Abrir um Notebook ou Warehouse para executar T-SQL

Escolha onde vai executar os comandos: um Notebook com linguagem T-SQL ou um Warehouse (T-SQL). Abra o recurso e ligue-o ao Lakehouse onde vai criar a Foreign Table. Utilizar uma sessão T-SQL permite criar objetos e efectuar queries imediatas.

Passo 3: Criar um data source externo (opcional conforme necessário)

Algumas fontes exigem primeiro definir um data source externo com as credenciais ou configurações de acesso. Para OneLake/paths simples, pode não ser necessário. Exemplo de criação de data source para um endpoint suportado:

CREATE EXTERNAL DATA SOURCE MyExternalSource
WITH (
    LOCATION = 'abfss://@.dfs.core.windows.net/folder/',
    CREDENTIAL = MyCredential
);

Substitua MyCredential por uma credencial previamente criada no ambiente, se necessário.

Passo 4: Criar a Foreign Table com T-SQL

Use CREATE EXTERNAL TABLE ou CREATE FOREIGN TABLE conforme o suporte do Fabric para mapear a estrutura da origem. Aqui fica um exemplo genérico que aponta para um ficheiro Parquet num caminho do Lakehouse.

CREATE EXTERNAL TABLE dbo.ForeignSales (
  SaleID bigint,
  SaleDate datetime2,
  Amount decimal(18,2)
)
WITH (
  LOCATION = '/lakehouse/path/to/folder/sales.parquet',
  DATA_SOURCE = MyExternalSource,
  FILE_FORMAT = 'Parquet'
);

Se a sua origem for uma pasta com vários ficheiros Parquet, a LOCATION pode apontar para a pasta. Se não usou DATA_SOURCE, especifique apenas o LOCATION absoluto no OneLake.

Passo 5: Definir esquemas e tipos compatíveis

Confirme que os tipos T-SQL que definiu correspondem aos dados reais. Erros comuns: tipos incompatíveis (ex.: datetime vs string) ou campos nulos sem permitir NULL. Ajuste a definição da tabela conforme necessário.

Passo 6: Testar consultas e desempenho

Depois de criada a Foreign Table, execute queries para validar. Evite SELECT * em grandes volumes; filtre e limite para testar. Se necessário, crie vistas ou materializações no Lakehouse para melhorar o desempenho.

-- Teste simples
SELECT TOP 10 SaleID, SaleDate, Amount
FROM dbo.ForeignSales
ORDER BY SaleDate DESC;

-- Contagem para validar volume
SELECT COUNT(*) AS TotalRows FROM dbo.ForeignSales;

Verificar o resultado

Confirme que as queries retornam os dados esperados e que os tipos observados fazem sentido. Verifique a existência do objecto com um catalog lookup e inspecione metadados. Erros comuns incluem caminhos incorrectos, permissões e formatos de ficheiro. Se não houver resultados, valide o LOCATION e as permissões do data source.

Conclusão

Criar uma Foreign Table no Lakehouse do Microsoft Fabric permite consultar dados externos sem duplicar ficheiros, facilitando integração e economia de espaço. Passos seguintes: criar vistas que unam dados externos com tabelas internas, ou materializar resultados para optimizar o desempenho. Dica: ao testar, comece sempre com LIMIT/TOP para evitar surpresas de custo e desempenho — que fonte pretende ligar a seguir?