Partilhar via


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.