CETAS com Synapse SQL

Tip

Microsoft Fabric Data Warehouse é um armazém relacional de escala empresarial com base de data lake, arquitetura pronta para o futuro, IA integrada e novos recursos. Se você não estiver familiarizado com o data warehouse, comece com Fabric Data Warehouse. As cargas de trabalho existentes de pools de SQL dedicados podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

Você pode usar CETAS (CREATE EXTERNAL TABLE AS SELECT) no pool de SQL dedicado ou no pool de SQL sem servidor para realizar as seguintes tarefas:

  • Criar uma tabela externa

  • Exportar, em paralelo, os resultados de uma instrução SELECT do Transact-SQL para:

    • Hadoop
    • Armazenamento do Azure Blob
    • Azure Data Lake Storage Gen2

CETAS no pool dedicado de SQL

Para o uso do CETAS e a sintaxe no pool de SQL dedicado, veja o artigo CREATE EXTERNAL TABLE AS SELECT. Além disso, para obter diretrizes sobre o CTAS usando o pool de SQL dedicado, confira o artigo CREATE TABLE AS SELECT.

CETAS no pool de SQL sem servidor

Ao usar o pool de SQL sem servidor, o CETAS é usado para criar uma tabela externa e exportar os resultados da consulta para o Armazenamento do Azure Blob ou o Azure Data Lake Storage Gen2.

Para obter a sintaxe completa, consulte CRIAR TABELA EXTERNA COMO SELEÇÃO (Transact-SQL).

Exemplos

Esses exemplos usam CETAS para salvar a população total agregada por ano e estado em uma pasta aggregated_data que está localizada na fonte de dados population_ds.

Este exemplo conta com a credencial, a fonte de dados e o formato de arquivo externo criados anteriormente. Veja o documento tabelas externas. Para salvar os resultados da consulta em uma pasta diferente na mesma fonte de dados, altere o argumento LOCATION.

Para salvar os resultados em uma conta de armazenamento diferente, crie e use uma fonte de dados diferente para o argumento DATA_SOURCE.

Observação

Os exemplos a seguir usam uma conta de armazenamento do Open Data do Azure pública. É somente leitura. Para executar essas consultas, você precisa fornecer a fonte de dados para a qual você tem permissões de gravação.

-- use CETAS to export select statement with OPENROWSET result to  storage
CREATE EXTERNAL TABLE population_by_year_state
WITH (
    LOCATION = 'aggregated_data/',
    DATA_SOURCE = population_ds,  
    FILE_FORMAT = census_file_format
)  
AS
SELECT decennialTime, stateName, SUM(population) AS population
FROM
    OPENROWSET(BULK 'https://azureopendatastorage.dfs.core.windows.net/censusdatacontainer/release/us_population_county/year=*/*.parquet',
    FORMAT='PARQUET') AS [r]
GROUP BY decennialTime, stateName
GO

-- you can query the newly created external table
SELECT * FROM population_by_year_state

O exemplo a seguir usa uma tabela externa como fonte para o CETAS. Ele conta com a credencial, a fonte de dados, o formato de arquivo externo e a tabela externa, todos criados anteriormente. Veja o documento tabelas externas.

-- use CETAS with select from external table
CREATE EXTERNAL TABLE population_by_year_state
WITH (
    LOCATION = 'aggregated_data/',
    DATA_SOURCE = population_ds,  
    FILE_FORMAT = census_file_format
)  
AS
SELECT decennialTime, stateName, SUM(population) AS population
FROM census_external_table
GROUP BY decennialTime, stateName
GO

-- you can query the newly created external table
SELECT * FROM population_by_year_state

Exemplo geral

Neste exemplo, podemos ver um exemplo de código de modelo de CETAS, utilizando a View como fonte de dados e Identidade Gerenciada para autenticação.

CREATE DATABASE [<mydatabase>];
GO

USE [<mydatabase>];
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';

CREATE DATABASE SCOPED CREDENTIAL [WorkspaceIdentity] WITH IDENTITY = 'Managed Identity';
GO

CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
    FORMAT_TYPE = PARQUET,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO

CREATE EXTERNAL DATA SOURCE [SynapseSQLwriteable] WITH (
    LOCATION = 'https://<mystoageaccount>.dfs.core.windows.net/<mycontainer>/<mybaseoutputfolderpath>',
    CREDENTIAL = [WorkspaceIdentity]
);
GO

CREATE EXTERNAL TABLE [dbo].[<myexternaltable>] WITH (
        LOCATION = '<myoutputsubfolder>/',
        DATA_SOURCE = [SynapseSQLwriteable],
        FILE_FORMAT = [ParquetFF]
) AS
SELECT * FROM [<myview>];
GO

Tipos de dados com suporte

O CETAS pode ser usado para armazenar conjuntos de resultados com os seguintes tipos de dados SQL:

  • binário
  • varbinary
  • char
  • varchar
  • nchar
  • NVARCHAR
  • smalldate
  • date
  • datetime
  • datetime2
  • datetimeoffset
  • tempo
  • decimal
  • numérico
  • derivar
  • real
  • bigint
  • tinyint
  • SmallInt
  • INT
  • bigint
  • bit
  • dinheiro
  • smallmoney

Observação

LOBs maiores que 1 MB não podem ser usados com CETAS.

Próxima etapa