CREATE EXTERNAL TABLE AS SELECT (CETAS)
Esta unidade analisa mais de perto o comando CREATE EXTERNAL TABLE AS SELECT (CETAS) e os benefícios fornecidos por ela.
O CETAS dá suporte ao Armazenamento de Blobs do Azure, ao Azure Data Lake Storage, ao armazenamento de objetos compatível com S3 e a bancos de dados externos. O CETAS também dá suporte à exportação de formatos de arquivo como arquivos CSV ou Parquet.
A funcionalidade mais poderosa do CETAS é combinar com outras operações SELECT, como combinar com OPENROWSET ou com outras tabelas externas. Essa combinação permite que o CETAS seja usado de maneiras diferentes e flexíveis.
Casos de uso para CETAS
Há muitos casos de uso diferentes para CETAS, mas os três principais são:
- Reportagem
- Descarregamento ou camada de dados
- Hub de exportação de dados
Reportagem
O caso de uso mais óbvio para o CETAS é simplificar o relatório usando todos os recursos de flexibilidade do PolyBase e do SQL Server. Você pode se conectar a qualquer fonte de dados, tabela ou arquivo com suporte e usar o T-SQL para manipular e exportar os resultados. Por exemplo, em vez de conectar as ferramentas de relatório ao SQL Server, você pode usar o CETAS para executar todas as consultas necessárias, exportar o resultado como um arquivo Parquet e apontar a ferramenta de relatório para os dados exportados.
Descarregamento ou camada de dados
Outro cenário comum é exportar dados arquivados ou somente leitura de tabelas do SQL Server para armazenamento remoto, mas ainda acessá-los normalmente por meio de tabelas externas. Dessa forma, você pode manter apenas os dados ativos no SQL Server, salvando recursos, mas ainda assim acessar os dados de forma transparente sempre que necessário. Do ponto de vista do aplicativo, é como acessar uma tabela regular do SQL Server.
Por exemplo, imagine que sua order tabela tem dados históricos dos últimos anos que não mudam, mas você ainda precisa que ela seja totalmente acessível. O CETAS pode ajudar a exportar todos os order dados da tabela para outro local, reduzindo o tamanho do banco de dados e o tempo de manutenção necessário. Com uma tabela externa, os dados exportados se comportam como uma tabela regular.
Hub de exportação de dados
Usando o SQL Server 2025 como um hub de dados, você pode combinar o CETAS com todos os recursos existentes do PolyBase, incluindo a conexão a outras fontes de dados, como Oracle, Teradata, ODBC ou outras versões do SQL Server.
Requisitos do CETAS
Para usar o CETAS no SQL Server 2025, você precisa habilitar a propriedade ALLOW POLYBASE EXPORT usando sp_configure. Para obter detalhes, consulte o próximo exercício.
Permissões CETAS
Para usar o CETAS, você precisa de três níveis diferentes de permissão:
Permissão para acessar e ler a fonte de dados. Se os dados residirem fora do SQL Server, em um compartilhamento de rede ou em outro servidor de banco de dados, a conta de serviço do SQL Server deverá ter permissão para acessar a fonte de dados.
Permissão no SQL Server 2025 para usar o comando CETAS. Para que o usuário do banco de dados execute o comando CETAS, ele precisa das permissões ADMINISTRAR OPERAÇÕES EM MASSA, ALTERAR QUALQUER FONTE DE DADOS EXTERNA e ALTERAR QUALQUER FORMATO DE ARQUIVO EXTERNO.
Permissão de gravação no destino para gravar os resultados do CETAS. Para poder gravar no arquivo de destino, Parquet ou CSV, o usuário precisa de permissões de gravação no destino. Por exemplo, para gravar no Armazenamento de Blobs do Azure ou no Azure Data Lake Storage, o usuário precisa de permissões LIST, READ, CREATE e WRITE nesses destinos.
Para saber mais sobre as permissões do CETAS, confira Permissões do CETAS (CREATE EXTERNAL TABLE AS SELECT).
Formatos com suporte do CETAS
O CETAS recebe um fluxo de dados, usando um comando SELECT como entrada e exporta os resultados no formato CSV ou Parquet. A entrada dá suporte aos mesmos formatos que um comando SELECT, incluindo os resultados do OPENROWSET.
A entrada pode ser uma tabela em execução localmente em sua instância do SQL Server, um arquivo de rede acessado por meio de uma operação OPENROWSET, uma tabela em outro sistema de banco de dados ou um arquivo Delta armazenado no Armazenamento de Blobs do Azure, no Azure Data Lake Storage ou no armazenamento de objetos compatível com S3.
- Para obter uma lista completa de formatos com suporte, consulte CREATE EXTERNAL FILE FORMAT.
- Para obter uma lista completa de fontes de dados com suporte, consulte CREATE EXTERNAL DATA SOURCE.
- Para saber mais sobre como acessar arquivos remotos usando OPENROWSET, consulte OPENROWSET.
Estrutura T-SQL do CETAS
Para entender melhor o CETAS, você pode dividir a sintaxe T-SQL geral. A estrutura T-SQL do CETAS segue uma abordagem lógica de baixo para cima. É mais fácil começar no final da instrução e, em seguida, trabalhar até a parte superior da instrução T-SQL.
- A parte inferior da estrutura cetas contém uma instrução SELECT que você usa para definir quais dados exportar.
- No meio, há parâmetros opcionais que você pode usar para rejeitar dados que você não deseja exportar.
- Na parte superior da instrução CETAS, depois de declarar CREATE EXTERNAL TABLE, adicione informações sobre o local de destino, o nome do arquivo e o formato do arquivo.
Essa estrutura permite que o CETAS seja combinado com qualquer instrução SELECT para consultar dados fora do SQL Server, no SQL Server ou em qualquer outro banco de dados com suporte. O SQL Server 2025 cria automaticamente o nome do arquivo e divide os resultados em vários arquivos para otimização. Por exemplo, uma tabela exportada como parquet pode gerar vários arquivos, dependendo do tamanho dos dados exportados. A instrução select define a definição e o tipo da coluna de tabela externa.
Exportar uma tabela do SQL Server como Parquet
O exemplo a seguir usa o CETAS para exportar uma tabela do SQL Server como Parquet:
CREATE EXTERNAL TABLE ext_sales
WITH (
LOCATION = '/cetas',
DATA_SOURCE = s3_eds,
FILE_FORMAT = ParquetFileFormat
) AS
SELECT *
FROM AdventureWorks2025.[Sales].[SalesOrderDetail];
Ler um arquivo Delta e exportar como Parquet
O exemplo a seguir usa o CETAS para ler um arquivo Delta e exportá-lo como Parquet:
CREATE EXTERNAL TABLE Delta_to_Parquet
WITH (
LOCATION = N'/backup/sales',
DATA_SOURCE = s3_parquet,
FILE_FORMAT = ParquetFileFormat
) AS
SELECT *
FROM OPENROWSET(BULK N'/delta/sales_fy22/',
FORMAT = 'DELTA',
DATA_SOURCE = 's3_delta') AS [r];
No próximo exercício, você usará o CETAS para:
- Exportar uma tabela como Parquet.
- Mover os dados frios de um banco de dados para o armazenamento.
- Crie uma tabela externa para acessar dados armazenados.
- Usar exibições, pesquisa com curinga, eliminação de pasta e metadados como estratégias de consulta.