Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:✅ Armazém de Dados no Microsoft Fabric
A linguagem Transact-SQL oferece opções que você pode usar para carregar dados em escala de tabelas existentes em sua casa de lago e armazém em novas tabelas em seu depósito. Essas opções sã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 fornece um conjunto rico de instruções que pode usar para ingerir e transformar dados no seu armazém. Pode carregar dados em tabelas novas ou existentes, adicionar novas linhas, transformar dados durante a ingestão ou sincronizar alterações com os dados existentes. O Warehouse no Microsoft Fabric suporta as seguintes instruções de ingestão do T-SQL:
-
CREATE TABLE AS SELECT(CTAS) que permite criar uma nova tabela no seu armazém a partir do resultado de umaSELECTinstrução. -
SELECT INTOcláusula de consulta que permite selecionar resultados de qualquer fonte de tabela e redirecionar os resultados para uma nova tabela. Este é um recurso padrão na linguagem T-SQL. -
INSERT ... SELECTadiciona os resultados da consulta à tabela de destino. Use esta instrução quando quiser carregar um novo lote ou um subconjunto incremental numa tabela cujo esquema está sob o seu controlo. -
MERGEcompara as linhas de origem e destino e insere, atualiza ou elimina condicionalmente as linhas de destino. Use esta instrução quando precisar de sincronizar linhas novas e alteradas, ou reconciliar um destino com um snapshot de origem completo.
Escolha uma instrução com base em se a tabela de destino já existe e se pretende criar, acrescentar ou sincronizar dados. A fonte de cada instrução é uma consulta T-SQL. Pode usar expressões, funções, filtros, joins e agregações suportados para moldar os dados durante a ingestão. Pode usar as seguintes fontes de dados para ler os dados nas suas instruções T-SQL:
- Leitura de uma tabela de armazém, como uma tabela de preparação.
- Leitura de uma pasta Lakehouse Delta Lake usando uma tabela gerada automaticamente no ponto de extremidade de análise SQL para Lakehouse.
- Ler arquivos CSV, Parquet ou JSONL diretamente do Azure Data Lake ou do armazenamento de Blob do Azure usando a
OPENROWSETfunção.
Utilize o CTAS para criar uma tabela
O CTAS cria a tabela de destino e carrega os resultados da consulta numa ú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';
Utilize o CTAS para criar e preencher uma nova tabela a partir dos resultados da consulta. Este método é útil quando a tabela de destino não existe ou quando se pretende materializar dados transformados ou combinados de uma ou mais fontes.
Utilize 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 como SELECT ... INTO inferem colunas de destino a partir do resultado da consulta. Converta explicitamente as expressões quando o destino requer um tipo de dados, uma precisão ou um comprimento específicos.
Utilize INSERT ... SELECT para adicionar dados
INSERT ... SELECT carrega os resultados da consulta numa tabela existente.
Pode adicionar dados a uma tabela transformando dados de um ficheiro 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;
Usar o MERGE para sincronizar dados
MERGE Faz corresponder as linhas de origem e destino por uma chave estável. O padrão seguinte assume que dbo.DimCustomer já existe com as colunas usadas pela instrução. Certifique-se de que a fonte não devolve mais do que 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 abrangidas. Não uses essa cláusula com um lote de origem incremental, porque as linhas de destino ausentes do lote podem ser eliminadas.
Escolha uma fonte de dados
As declarações de ingestão funcionam de forma consistente entre os tipos de fonte suportados. Só a referência de origem muda.
Ficheiros num data lake
Utilize OPENROWSET para ler ficheiros Parquet, CSV ou JSONL no OneLake, Azure Data Lake Storage ou Armazenamento de Blobs do Azure. Podes direcionar um ficheiro, vários ficheiros com wildcards ou pastas particionadas.
Para caminhos de ficheiros, inferência de esquemas, filtragem de partições, funções de metadados e exemplos para as quatro instruções de ingestão, veja Ingerir e transformar dados de data lake com OPENROWSET e T-SQL.
Delta tables num lakehouse
O endpoint de análise SQL de um lakehouse expõe as tabelas Delta na sua /Tables área. A partir de um armazém no mesmo espaço de trabalho, refira uma tabela utilizando o nome em três partes <lakehouse>.<schema>.<table>.
Isto não se limita às tabelas Delta armazenadas fisicamente no lakehouse. Tabelas expostas através de atalhos OneLake na /Tables área também podem referenciar dados armazenados noutros locais, incluindo a área de lakehouse /Files, armazenamento externo como ADLS ou Amazon S3, dados espelhados e dados OneLake noutros espaços de trabalho.
Ao usar esta arquitetura, pode consultar dados com atalhos através do endpoint de análise SQL do lakehouse sem copiar os dados para o lakehouse.
Para exemplos de criação de tabelas, cargas incrementais e sincronização, veja Ingest Delta Lake tabelas com T-SQL.
Tabelas no armazém atual
Utilize um nome em duas partes, como <schema>.<table>, para ingerir dados de uma tabela no armazém atual.
Para exemplos de Bronze para-Prata-Para-Ouro que fazem junções, agregam e carregam tabelas incrementalmente dentro de um único armazém, veja Ingerir a partir de tabelas de armazém e bases de dados espelhadas com T-SQL.
Bases de dados espelhadas e outros itens de espaço de trabalho
Para ingerir dados de uma base de dados espelhada, outro warehouse ou outro item suportado no mesmo espaço de trabalho, adicione o item ao Explorador e use o nome de três partes <item>.<schema>.<table>.
Para saber mais sobre consultas entre armazéns, consulte Escreva uma consulta SQL entre bases de dados.
Para exemplos usando ambos os padrões de nomenclatura, veja Ingerir a partir de tabelas de armazém e bases de dados espelhadas com T-SQL.
Auditoria e monitorização da ingestão de T-SQL
CTAS, MERGE, , e INSERT ... SELECT operações aparecem no SELECT ... INTO. Utilize query insights para rever detalhes de execução e resolver problemas de consultas de ingestão.
Opções de ingestão de dados
Use a ingestão em T-SQL quando a carga inclui filtragem, conversão de tipos, junções, cálculos, agregação ou sincronização. Escolha outra opção quando: Outras formas de ingerir dados no seu data warehouse incluem:
- Ingerir dados usando a instrução COPY
- Ingerir dados usando pipelines
- Ingerir dados usando um fluxo de dados