CETAS com Synapse SQL

Pode utilizar CREATE EXTERNAL TABLE AS SELECT (CETAS) no conjunto de SQL dedicado ou no conjunto de SQL sem servidor para concluir as seguintes tarefas:

  • Criar uma tabela externa

  • Exporte, em paralelo, os resultados de uma instrução SELECT transact-SQL para:

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

CETAS no conjunto de SQL dedicado

Para obter o conjunto de SQL dedicado, a utilização e a sintaxe do CETAS, veja o artigo CREATE EXTERNAL TABLE AS SELECT (CRIAR TABELA EXTERNA COMO SELECT ). Além disso, para obter orientações sobre O CTAS com o conjunto de SQL dedicado, veja o artigo CREATE TABLE AS SELECT (CRIAR TABELA COMO SELECT ).

CETAS no conjunto de SQL sem servidor

Ao utilizar o conjunto de SQL sem servidor, o CETAS é utilizado para criar uma tabela externa e exportar os resultados da consulta para o Azure Storage Blob ou Azure Data Lake Storage Gen2.

Para obter a sintaxe completa, veja CREATE EXTERNAL TABLE AS SELECT (Transact-SQL).

Exemplos

Estes exemplos utilizam o CETAS para poupar a população total agregada por ano e o estado numa pasta de aggregated_data localizada na origem de dados population_ds.

Este exemplo baseia-se na credencial, origem de dados e formato de ficheiro externo criado anteriormente. Veja o documento de tabelas externas . Para guardar os resultados da consulta numa pasta diferente na mesma origem de dados, altere o argumento LOCALIZAÇÃO.

Para guardar resultados numa conta de armazenamento diferente, crie e utilize uma origem de dados diferente para DATA_SOURCE argumento.

Nota

Os exemplos que se seguem utilizam uma conta pública do Azure Open Data Storage. É só de leitura. Para executar estas consultas, tem de fornecer a origem de dados para a qual tem permissões de escrita.

-- 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 uma tabela externa como origem para CETAS. Baseia-se na credencial, origem de dados, formato de ficheiro externo e tabela externa criada anteriormente. Veja 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 uma Vista como origem e utilizar a Identidade Gerida como uma 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 utilizado para armazenar conjuntos de resultados com os seguintes tipos de dados SQL:

  • binary
  • varbinary
  • caráter
  • varchar
  • nchar
  • nvarchar
  • data pequena
  • data
  • datetime
  • datetime2
  • datetimeoffset
  • hora
  • decimal
  • numeric
  • float
  • real
  • bigint
  • tinyint
  • smallint
  • int
  • bigint
  • bit
  • dinheiro
  • dinheiro pequeno
  • uniqueidentifier

Nota

Os LOBs com mais de 1 MB não podem ser utilizados com CETAS.

Passos seguintes

Experimente consultar o Apache Spark para Azure Synapse tabelas externas.