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.
Criar uma nova tabela com o resultado de uma consulta
O Warehouse no Microsoft Fabric permite que você crie facilmente uma nova tabela com base em um resultado da consulta T-SQL, usando as seguintes instruções 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.
Estas duas afirmações são semelhantes, pelo que os exemplos seguintes se concentram na declaração CTAS.
A instrução CTAS executa a operação de ingestão na nova tabela em paralelo, tornando-a altamente eficiente para a transformação de dados e a criação de novas tabelas em seu espaço de trabalho.
Você pode usar as seguintes opções para a parte SELECT da instrução CTAS:
- 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.
Para carregar um conjunto de dados de exemplo, siga os passos descritos em Ingerir dados no seu armazém com a instrução COPY para criar os dados de exemplo no seu armazém.
Criar tabela a partir da tabela Armazém
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';
Criar tabela a partir da pasta Delta Lake
As pastas Delta Lake que persistem no OneLake são representadas automaticamente como tabelas se estiverem armazenadas na pasta /Tables em uma lakehouse. O código seguinte cria uma nova tabela TaxiTrips_2023 a partir da pasta do Delta Lake /Tables/TaxiTrips no lakehouse MyLakehouse:
CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT *
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Você pode fazer referência à pasta Delta Lake usando a notação de nome de três partes que faz referência à casa do lago onde os arquivos estão armazenados. Todos os exemplos mostrados na seção anterior são aplicáveis às pastas Delta Lake.
Criar tabela a partir do arquivo CSV/Parquet/JSONL
Também pode criar uma nova tabela diretamente a partir de um ficheiro externo usando a OPENROWSET função. Por exemplo, o exemplo seguinte de T-SQL usa placeholders para demonstrar como se pode importar um ficheiro Parquet público.
CREATE TABLE dbo.<table_name>
AS
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.parquet') AS data;
Pode criar uma nova tabela transformando dados a partir de um ficheiro CSV externo e público:
CREATE TABLE dbo.<table name>
AS
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.csv') AS data;
Ou, pode criar uma nova tabela transformando dados a partir de um ficheiro JSONL externo e público:
CREATE TABLE dbo.<table name>
AS
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.jsonl') AS data;
- Para mais informações e exemplos sobre consulta a dados externos, consulte Consultar ficheiros de data lake externos usando o Fabric Data Warehouse ou endpoint de análise SQL.
- Para obter mais exemplos e referência de sintaxe, consulte CREATE TABLE AS SELECT (Transact-SQL).
Ingerir dados em tabelas existentes com consultas T-SQL
Os exemplos anteriores criam novas tabelas com base no resultado de uma consulta. Para replicar os exemplos em tabelas existentes, o padrão INSERT ... SELECT pode ser usado.
Importar dados da tabela Armazém
O código a seguir ingere novos dados de uma tabela de depósito em uma tabela existente:
INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Os critérios de consulta para a SELECT instrução podem ser qualquer consulta válida, desde que os tipos de coluna de consulta resultantes estejam alinhados com as colunas na tabela de destino. Se os nomes das colunas forem especificados e incluírem apenas um subconjunto das colunas da tabela de destino, todas as outras colunas serão carregadas como NULL. Para obter mais informações, consulte Usando INSERT INTO... SELECT para importar dados em massa com o mínimo de registro em log e paralelismo.
Ingerir dados da pasta Delta Lake
As pastas Delta Lake que persistem no OneLake são automaticamente representadas como tabelas quando estão armazenadas na pasta /Tables em um lakehouse.
O código seguinte importa novos dados da secção da pasta Delta Lake /Tables/TaxiTrips no lakehouse MyLakehouse*.
INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Ingerir dados do arquivo CSV/Parquet/JSONL
Você pode usar a OPENROWSET função como fonte para ingerir arquivos Parquet, CSV ou JSON do armazenamento:
INSERT INTO dbo.<table name>
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>') AS data
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Você pode ler vários arquivos usando curingas como *.parquet, ou direcionando diretórios particionados como /year=*/month=*. Para otimizar o desempenho, aplique filtros na cláusula WHERE para eliminar linhas e partições desnecessárias durante a execução da consulta.
Este exemplo é semelhante aos utilizados na ingestão com COPY INTO. O comando COPY INTO é mais fácil de usar, especialmente para carregamentos de dados simples de origem para destino. No entanto, se você precisar transformar dados de origem (como converter valores ou unir com outras tabelas), o uso INSERT ... SELECT oferece a flexibilidade de executar transformações durante a ingestão.
Ingerir dados do OneLake
Você pode usar a OPENROWSET função como fonte para ingerir dados do armazenamento do Fabric OneLake. Substitua {workspaceId} e {lakehouseId} pelos GUIDs correspondentes do espaço de trabalho e da casa do lago no exemplo a seguir:
INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM OPENROWSET(BULK 'https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Files/year=*/month=*/*.parquet') AS data
WHERE data.filepath(1) = '2023'
Este exemplo se baseia no anterior que lê dados do Armazenamento do Azure Data Lake. Use esta abordagem quando precisar de transformar dados de origem, por exemplo, convertendo valores, juntando-os a outras tabelas ou lendo partições específicas. Nesses casos, o uso INSERT ... SELECT fornece a flexibilidade para aplicar transformações durante a ingestão de dados.
Ingerir dados de tabelas em diferentes armazéns e lagos
Para ambos CREATE TABLE AS SELECT e INSERT ... SELECT, a instrução SELECT também pode referenciar tabelas em armazéns diferentes do armazém onde a sua tabela de destino está armazenada, utilizando consultas entre armazéns. Isto pode ser conseguido usando a convenção [warehouse_or_lakehouse_name.][schema_name.]table_namede nomenclatura em três partes. Por exemplo, suponha que você tenha os seguintes ativos de espaço de trabalho:
- Uma casa de lago nomeada
taxi_lakehousecom os dados mais recentes. - Um armazém nomeado
reference_warehousecom tabelas usadas para dados de referência. - Um depósito chamado
research_warehouseonde a tabela de destino é criada.
Uma nova tabela pode ser criada que usa nomenclatura de três partes para combinar dados de tabelas nesses ativos de espaço de trabalho:
CREATE TABLE research_warehouse.dbo.taxi_trips
AS
SELECT *
FROM taxi_lakehouse.dbo.TaxiTrips AS latest
INNER JOIN reference_warehouse.dbo.TaxiTrips AS reference
ON latest.vendorId_lpep = reference.vendorId_lpep;
Para saber mais sobre consultas entre armazéns, consulte Escreva uma consulta SQL entre bases de dados.
Auditoria e monitorização da ingestão de T-SQL
Tanto as operações CTAS e INSERT ... SELECT executadas via T-SQL aparecem no histórico de consultas/atividade do armazém, podendo ser monitorizadas juntamente com outras operações do armazém.
Opções de ingestão de dados
Outras formas de ingerir dados no seu armazém incluem:
- Ingerir dados usando a instrução COPY
- Ingerir dados usando pipelines
- Ingerir dados usando um fluxo de dados