Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 em 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
- data e hora
- datetime2
- datetimeoffset
- tempo
- decimal
- numérico
- flutuante
- real
- bigint
- tinyint
- smallint
- int
- bigint
- bit
- dinheiro
- dinheiro pequeno
Nota
LOBs maiores que 1MB não podem ser usados com CETAS.