CETAS com Synapse SQL
Você pode usar CREATE EXTERNAL TABLE AS SELECT (CETAS) no pool SQL dedicado ou no pool SQL sem servidor para concluir as seguintes tarefas:
Criar uma tabela externa
Exporte, em paralelo, os resultados de uma instrução Transact-SQL SELECT para:
- Hadoop
- Azure Storage Blob
- Azure Data Lake Storage Gen2
CETAS em pool SQL dedicado
Para obter informações sobre o pool SQL dedicado, o uso e a sintaxe do CETAS, verifique o artigo CREATE EXTERNAL TABLE AS SELECT . Além disso, para obter orientação sobre CTAS usando pool SQL dedicado, consulte o artigo CREATE TABLE AS SELECT .
CETAS no pool SQL sem servidor
Ao usar o pool SQL sem servidor, o CETAS é usado para criar uma tabela externa e exportar os resultados da consulta para o Blob de Armazenamento do Azure ou para o Azure Data Lake Storage Gen2.
Para obter a sintaxe completa, consulte CREATE EXTERNAL TABLE AS SELECT (Transact-SQL).
Exemplos
Estes exemplos usam o CETAS para salvar a população total agregada por ano e estado em uma pasta aggregated_data localizada na fonte de dados population_ds.
Este exemplo depende da credencial, da fonte de dados e do formato de arquivo externo criado anteriormente. Consulte o documento de 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 DATA_SOURCE argumento.
Nota
Os exemplos a seguir usam uma conta pública de armazenamento de Dados Abertos do Azure. É só de 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 seguinte utiliza um quadro externo como fonte para o CETAS. Ele depende da credencial, da fonte de dados, do formato de arquivo externo e da tabela externa criada anteriormente. Consulte o documento de 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 um código de modelo para escrever CETAS com um View como origem e usar Managed Identity como 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 suportados:
O CETAS pode ser usado para armazenar conjuntos de resultados com os seguintes tipos de dados SQL:
- binário
- Varbinary
- char
- varchar
- Nchar
- Nvarchar
- data pequena
- data
- datetime
- datetime2
- datetimeoffset
- hora
- decimal
- numérico
- flutuante
- real
- bigint
- tinyint
- smallint
- número inteiro
- bigint
- bit
- dinheiro
- dinheiro pequeno
Nota
LOBs maiores que 1MB não podem ser usados com CETAS.