Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:✅ Warehouse no Microsoft Fabric
A linguagem Transact-SQL oferece opções que você pode usar para carregar dados em escala de tabelas existentes em seu lakehouse e warehouse em novas tabelas em seu warehouse. Essas opções serão convenientes se você precisar criar novas versões de uma tabela com dados agregados, versões de tabelas com um subconjunto das linhas ou criar uma tabela como resultado de uma consulta complexa. Vamos explorar alguns exemplos.
Escolha uma instrução de ingestão T-SQL
A linguagem T-SQL oferece um conjunto rico de instruções que você pode usar para ingerir e transformar dados no seu warehouse. Você pode carregar dados em tabelas novas ou existentes, adicionar novas linhas, transformar dados durante a ingestão ou sincronizar alterações com dados existentes. Warehouse no Microsoft Fabric suporta as seguintes instruções de ingestão do T-SQL:
-
CREATE TABLE AS SELECTInstrução (CTAS) que permite criar uma nova tabela em seu armazém de dados com base na saída de uma instruçãoSELECT. -
SELECT INTOcláusula de consulta que permite selecionar resultados de qualquer fonte de tabela e redirecionar os resultados para uma nova tabela. Esse é um recurso padrão na linguagem T-SQL. -
INSERT ... SELECTadiciona os resultados da consulta à tabela de destino. Use essa instrução quando quiser carregar um novo lote ou um subconjunto incremental em uma tabela cujo esquema você controla. -
MERGEcompara as linhas de origem e destino e insere, atualiza ou exclui condicionalmente as linhas de destino. Use este comando quando precisar sincronizar linhas novas e alteradas, ou reconciliar um destino com um instantâneo completo da fonte.
Escolha uma instrução com base em se a tabela de destino já existe e se você deseja criar, adicionar ou sincronizar dados. A fonte de cada instrução é uma consulta T-SQL. Você pode usar expressões, funções, filtros, joins e agregações suportados para moldar os dados durante a ingestão. Você pode usar as seguintes fontes de dados para ler os dados em suas instruções T-SQL:
- Lendo uma tabela do warehouse como uma tabela de preparo.
- Lendo uma pasta Delta Lake no Lakehouse usando uma tabela gerada automaticamente no endpoint de análise SQL para o Lakehouse.
- Lendo arquivos CSV, Parquet ou JSONL diretamente do Azure Data Lake ou do Azure Blob Storage usando a função
OPENROWSET.
Use o CTAS para criar uma tabela
O CTAS cria a tabela de destino e carrega os resultados da consulta em uma única operação.
O primeiro exemplo mostra como criar uma nova tabela que é uma cópia da tabela existente dbo.TaxiTrips , mas filtrada para incluir apenas dados do ano de 2023:
CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Use o CTAS para criar e preencher uma nova tabela a partir dos resultados das consultas. Esse método é útil quando a tabela de destino não existe ou quando você quer materializar dados transformados ou combinados de uma ou mais fontes.
Use SELECT INTO para criar uma tabela
SELECT ... INTO também cria uma tabela de destino a partir dos resultados da consulta:
SELECT *
INTO dbo.TaxiTrips_2023
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Tanto CTAS quanto SELECT ... INTO inferem colunas de destino a partir do resultado da consulta. Faça a conversão explícita das expressões quando o destino exigir um tipo de dado, precisão ou comprimento específicos.
Use INSERT ... SELECT para anexar dados
INSERT ... SELECT carrega os resultados da consulta em uma tabela existente.
Você pode adicionar dados a uma tabela transformando dados de um arquivo Parquet externo e público:
INSERT INTO dbo.<table name>
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.parquet') AS data;
Use MERGE para sincronizar dados
MERGE combina as linhas de origem e destino usando uma chave estável. O padrão a seguir assume que dbo.DimCustomer já existe com as colunas usadas pela instrução. Certifique-se de que a fonte não retorne mais de uma linha para cada chave de destino.
MERGE dbo.DimCustomer AS target
USING staging.Customers AS source
ON target.CustomerID = source.CustomerID
WHEN MATCHED AND source.ModifiedDate > target.ModifiedDate THEN
UPDATE SET CustomerName = source.CustomerName, City = source.City,
ModifiedDate = source.ModifiedDate
WHEN NOT MATCHED BY TARGET THEN
INSERT (CustomerID, CustomerName, City, ModifiedDate)
VALUES (source.CustomerID, source.CustomerName, source.City, source.ModifiedDate);
Use WHEN NOT MATCHED BY SOURCE THEN DELETE apenas quando a consulta de origem representa o conjunto de dados autoritativo completo para as linhas no escopo. Não use essa cláusula com um lote de origem incremental, porque linhas de destino ausentes do lote podem ser excluídas.
Escolher uma fonte de dados
As declarações de ingestão funcionam de forma consistente entre os tipos de fonte suportados. Apenas a referência de origem muda.
Arquivos em um data lake
Use OPENROWSET para ler arquivos Parquet, CSV ou JSONL em OneLake, Azure Data Lake Storage ou Armazenamento de Blobs do Azure. Você pode direcionar um arquivo, vários arquivos com curingas ou pastas particionadas.
Para caminhos de arquivo, inferência de esquema, filtragem de partições, funções de metadados e exemplos para as quatro instruções de ingestão, veja Ingerir e transformar dados do data lake com OPENROWSET e T-SQL.
Tabelas Delta em um lakehouse
O endpoint de análise SQL de um lakehouse expõe tabelas Delta em sua área /Tables. A partir de um warehouse no mesmo espaço de trabalho, referencia-se uma tabela usando o nome <lakehouse>.<schema>.<table> de três partes.
Isso não se limita às tabelas Delta armazenadas fisicamente no lakehouse. Tabelas expostas por atalhos do OneLake na área /Tables também podem referenciar dados armazenados em outros lugares, incluindo a área /Files do lakehouse, armazenamento externo como ADLS ou Amazon S3, dados espelhados e dados do OneLake em outros espaços de trabalho.
Usando essa arquitetura, você pode consultar dados com atalho pelo endpoint de análise SQL do lakehouse sem precisar copiar os dados para o lakehouse.
Para exemplos de criação de tabelas, cargas incrementais e sincronização, veja Ingerir tabelas do Delta Lake com T-SQL.
Tabelas no depósito atual
Use um nome em duas partes, como <schema>.<table>, para ingerir dados de uma tabela no warehouse atual.
Para exemplos de Bronze para-Prata-Para-Ouro que unem, agregam e carregam tabelas incrementalmente dentro de um único armazém, veja Ingestão de tabelas do warehouse e bancos de dados espelhados com T-SQL.
Bancos de dados espelhados e outros itens de espaço de trabalho
Para ingerir dados de um banco de dados espelhado, outro data warehouse ou outro item compatível no mesmo workspace, adicione o item ao Explorador e use o nome de três partes <item>.<schema>.<table>.
Para saber mais sobre consultas entre warehouses, consulte Gravar uma consulta SQL entre bancos de dados.
Para exemplos usando ambos os padrões de nomenclatura, veja Ingerir de tabelas de warehouse e bancos de dados espelhados com T-SQL.
Auditar e monitorar a ingestão de T-SQL
CTAS, MERGE, e INSERT ... SELECT operações aparecem no SELECT ... INTO. Use query insights para revisar detalhes da execução e solucionar problemas em consultas de ingestão.
Opções de ingestão de dados
Use a ingestão por T-SQL quando a carga incluir filtragem, conversão de tipos, joins, cálculos, agregação ou sincronização. Escolha outra opção. Outras formas de ingerir dados no seu armazém de dados incluem:
- Ingerir dados usando a instrução COPY
- Ingerir dados usando pipelines
- Ingerir dados usando um fluxo de dados