Aracılığıyla paylaş


Synapse SQL ile CETAS

Aşağıdaki görevleri tamamlamak için ayrılmış SQL havuzunda veya sunucusuz SQL havuzunda CREATE EXTERNAL TABLE AS SELECT (CETAS) komutunu kullanabilirsiniz:

  • Dış tablo oluşturma

  • Transact-SQL SELECT deyiminin sonuçlarını paralel olarak şu şekilde dışarı aktarın:

    • Hadoop
    • Azure Depolama Blobu
    • Azure Data Lake Storage Gen2

Ayrılmış SQL havuzunda CETAS

Ayrılmış SQL havuzu, CETAS kullanımı ve söz dizimi için CREATE EXTERNAL TABLE AS SELECT makalesini gözden geçirin. Ayrıca, ayrılmış SQL havuzunu kullanan CTAS hakkında yönergeler için CREATE TABLE AS SELECT makalesine bakın.

Sunucusuz SQL havuzunda CETAS

Sunucusuz SQL havuzu kullanılırken, CETAS bir dış tablo oluşturmak ve sorgu sonuçlarını Azure Depolama Blobu'na veya Azure Data Lake Storage 2. Nesil dışarı aktarmak için kullanılır.

Tam söz dizimi için CREATE EXTERNAL TABLE AS SELECT (Transact-SQL) bölümüne bakın.

Örnekler

Bu örneklerde, yıl ve eyalete göre toplanan toplam popülasyonu population_ds veri kaynağında bulunan bir aggregated_data klasörüne kaydetmek için CETAS kullanılır.

Bu örnek, daha önce oluşturulan kimlik bilgilerine, veri kaynağına ve dış dosya biçimine dayanır. Dış tablolar belgesine bakın. Sorgu sonuçlarını aynı veri kaynağındaki farklı bir klasöre kaydetmek için LOCATION bağımsız değişkenini değiştirin.

Sonuçları farklı bir depolama hesabına kaydetmek için DATA_SOURCE bağımsız değişkeni için farklı bir veri kaynağı oluşturun ve kullanın.

Not

İzleyen örneklerde genel bir Azure Open Data depolama hesabı kullanılır. Salt okunurdur. Bu sorguları yürütmek için, yazma izinlerine sahip olduğunuz veri kaynağını sağlamanız gerekir.

-- 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

Aşağıdaki örnek, CETAS kaynağı olarak bir dış tablo kullanır. Daha önce oluşturulan kimlik bilgilerine, veri kaynağına, dış dosya biçimine ve dış tabloya dayanır. Dış tablolar belgesine bakın.

-- 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

Genel örnek

Bu örnekte kaynak olarak Görünüm ile CETAS yazmaya ve kimlik doğrulaması olarak Yönetilen Kimlik kullanmaya yönelik şablon kodu örneğini görebiliriz.

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

Desteklenen veri türleri

CETAS, aşağıdaki SQL veri türlerine sahip sonuç kümelerini depolamak için kullanılabilir:

  • ikili
  • Varbinary
  • char
  • varchar
  • Nchar
  • nvarchar
  • küçüktarih
  • date
  • datetime
  • datetime2
  • Datetimeoffset
  • time
  • decimal
  • sayısal
  • float
  • real
  • bigint
  • tinyint
  • smallint
  • int
  • bigint
  • bit
  • Para
  • Smallmoney
  • uniqueidentifier

Not

1 MB'tan büyük LOB'lar CETAS ile kullanılamaz.

Sonraki adımlar

Apache Spark'ı dış tablolar için Azure Synapse sorgulamayı deneyin.