CRIAR TABELA EXTERNA COMO SELECIONAR (CETAS)
Esta unidade examina mais de perto o comando CREATE EXTERNAL TABLE AS SELECT (CETAS) e os benefícios que ele oferece.
O CETAS suporta o Armazenamento de Blobs do Azure, o Armazenamento do Azure Data Lake, o armazenamento de objetos compatível com o S3 e bases de dados externas. O CETAS também suporta a exportação de formatos de arquivo como arquivos CSV ou Parquet.
A capacidade mais poderosa do CETAS é combinar com outras operações SELECT, tais como OPENROWSET ou outras tabelas externas. Esta combinação permite que o CETAS seja utilizado de formas diferentes e flexíveis.
Casos de utilização do CETAS
Existem muitos casos de utilização diferentes para o CETAS, mas os três principais são:
- Apresentação de relatórios
- Hierarquização ou transferência de dados
- Hub de exportação de dados
Apresentação de relatórios
O caso de uso mais óbvio para o CETAS é simplificar a geração de relatórios 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 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.
Hierarquização ou transferência de dados
Outro cenário comum é exportar dados arquivados ou somente leitura de tabelas do SQL Server para armazenamento remoto, mas ainda consultá-los normalmente por meio de tabelas externas. Dessa forma, você pode manter apenas os dados ativos no SQL Server, economizando recursos, mas ainda 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 tabela order tem dados históricos de anos anteriores que não mudam, mas você ainda precisa que eles estejam totalmente acessíveis. O CETAS pode ajudar a exportar todos os dados da tabela order 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 normal.
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 com 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 mais detalhes, consulte o próximo exercício.
Permissões CETAS
Para utilizar o CETAS, necessita 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, seja 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 escrita no destino para escrever 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 Armazenamento do Azure Data Lake, o usuário precisa das permissões LIST,READ,CREATE e WRITE nesses destinos.
Para obter mais informações sobre as permissões para CETAS, consulte CREATE EXTERNAL TABLE AS SELECT (CETAS) permissions.
Formatos suportados pelo CETAS
O CETAS recebe um fluxo de dados, usando um comando SELECT como entrada, e exporta os resultados em formato CSV ou Parquet. A entrada suporta os mesmos formatos de um comando SELECT, incluindo resultados OPENROWSET.
A entrada pode ser uma tabela executada 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 Blob do Azure, no Armazenamento do Azure Data Lake ou no armazenamento de objetos compatível com o S3.
- Para obter uma lista completa dos formatos suportados, consulte CREATE EXTERNAL FILE FORMAT.
- Para obter uma lista completa das fontes de dados suportadas, consulte CREATE EXTERNAL DATA SOURCE.
- Para saber mais sobre como acessar arquivos remotos usando OPENROWSET, consulte OPENROWSET.
Estrutura CETAS T-SQL
Para entender melhor o CETAS, você pode detalhar a sintaxe geral do T-SQL. A estrutura CETAS T-SQL segue uma abordagem lógica ascendente. É 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 não deseja exportar.
- Na parte superior da instrução CETAS, depois de declarar CREATE EXTERNAL TABLE, você adiciona 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, dentro do SQL Server ou de 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 um Parquet pode gerar vários arquivos, dependendo do tamanho dos dados exportados. A instrução select define a definição e o tipo de coluna da tabela externa.
Exportar uma tabela do SQL Server como Parquet
O exemplo a seguir usa 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];
Leia um arquivo Delta e exporte como Parquet
O exemplo a seguir usa 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 exercício seguinte, utilize o CETAS para:
- Exporte uma tabela como Parquet.
- Mova dados frios de um banco de dados para armazenamento.
- Crie uma tabela externa para acessar os dados armazenados.
- Use modos de exibição, pesquisa curinga, eliminação de pastas e metadados como estratégias de consulta.